PHP относится к популярным языкам программирования по причине быстрого изучения и возможности очень быстро создать скрипт соответствующий требованиям заказчика.
К сожалению именно этo преимущество PHP является его проклятьем. При решении быстрых и маленьких проблем, программный код являются часто не продуманным для расширения и изменения, а также являются часто монолитным.
В конечном итоге после нескольких поправок в коде и добавления парочки новых вещичек мы стоим перед скриптом в тысячу строк и понимаем, что если мы его сейчас не разложим по полочкам, то завтра будет проще написать все заново. Каждое изменение может вызвать ошибку в других местах и поиск ошибок занимает больше времени.
Эта проблема знакома не только начинающим, но и у опытным программистам, которые хотят произвести изменения или просто исправить ошибку даже в хорошо организованном коде.
И тут возникают проблемы!!!
Не попортим ли мы нашим изменением в одном участке кода, что то другое? Где еще употребляется эта функция или класс?
Сколько времени уйдет на то, чтоб проверить все ли работает как положено после нашего изменения?
Даже простая проверка формуляра затрачивает время и энергию, по тому, что нужно проверить все ли данные были записаны в ДБ.
Представьте себе изменение, которое может повлиять на поведение сложной программы практически во всех ее участках?
На определенном этапе развития softa вы дойдете до момента, когда проверка работоспособности вашего продукта занимает больше времени, чем его минимальное изменение. Потом это магическое минимальное изменение будет сопровождаться страхом того, что вы не в состоянии дать гарантии работоспособности продукта и наконец наступает последняя стадия, когда вы даже не сможете описать, что и где собственно нужно точно тестировать чтоб все проверить.
Единственное, что вас в этом случае может спасти, это тестирование всего вашего продукта и делать это автоматизированно.
Вы делаете изменение и запустив тесты получаете подтверждение тому, что с большой вероятностью (100% не существует) не чего не поломали.
Основные виды тестирования
1) Unit test: Здесь мы тестируем конкретный модуль, класс или функцию.
Этот тест делается как можно не зависящим от других элементов и каждый тестируемый элемент должен тестироваться изолированно от других.
Именно запуск этих тестов можно проще всего автоматизировать.
2) Integration testing: Здесь мы тестируем взаимную работу модулей и можем проверить работает ли модули и компоненты между собой правильно.
3) System testing: Здесь мы проверяем работает ли вся система так, как она должна работать соответственно заранее описанным требованиям.
4)Acceptance testing: Заключительный тест который проводит заказчик или группа людей тестирующих основные функции в ручную (QA (Quality assurance)) проверяя правильность требований.
Тестирование стоит время и денег. Тестирование занимает около 70% времени программирования, но это себя окупает в будущем и именно по этому тестирование оправдывает себя также финансово.
1) Протестированные классы и модули можно использовать без риска в других проектах.
2) Время для изменения и дополнения актуального продукта а так же refactoring(реорганизация кода) и bug fixing(исправление ошибок) занимает гораздо меньше времени, так как имеется возможность быстро проверить работу всей системы.
Если вам стала понятна необходимость тестирования, то в следующий раз хочу затронуть Unit test посредством PHPUnit. Также немаловажно поговорить о том, как сделать код таким, чтоб его можно было тестировать.
От: буду рад любому вопросу и критике ( включая мой ухудшающийся со временем русский язык)
Продолжение: http://phpforum.ru/index.php?showtopic=70671
_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();