13
2. Разработка через тестирование
Тестирование – это процесс выполнения программного продукта с
целью выявления дефектов. Невозможно полностью протестировать
программу, поскольку число вариантов работы нетривиальной программы
может быть бесконечно большим. Следовательно, тестирование не может
доказать отсутствие ошибок в программном коде, оно может показать только
наличие ошибок.
Тестирование – это очень важный и вместе с тем трудоемкий вид
деятельности
разработчиков программного обеспечения. Время,
использованное на тестирование, требует значительных затрат, поэтому
желательно начать тестирование как можно раньше, чтобы получить от этих
затрат максимальную прибыль. Чем больше дефектов будет обнаружено при
тестировании программы, тем выше выигрыш от вложений на тестирование.
Основным отличием процесса тестирования в гибких технологиях
является то, что тестирование
рассматривается как разрушительный процесс.
Более того, в гибких технологиях применяется подход, известный как
разработка через тестирование (test-driven development). Благодаря
использованию этого подхода гарантируется тестирование всего кода
разрабатываемой программной системы.
Разработка через тестирование осуществляется на всем протяжении
процесса создания программного продукта. Оно является неотъемлемой
частью процесса разработки и даже, более того, упрощает
этот процесс:
• дизайн разрабатываемого программного продукта настолько
прост, насколько это вообще возможно, поэтому разработка
тестов – это не такая уж сложная процедура;
• программирование выполняется в паре, вместе с партнером,
который постоянно инспектирует создаваемый код, оказывает
помощь в составлении тестов и в любой момент может
включиться в процесс разработки;
• постоянное
растущее число корректно работающих тестов
создает благотворную атмосферу для разработчиков;
• заказчик удовлетворен, когда он принимает в эксплуатацию
версию, в которой выполняются все разработанные им тесты.
При выполнении этих условий разработчики и заказчики, скорее всего,
с большим желанием будут тратить время на разработку тестов. Уверенность
в том, что программный продукт
работает корректно, будет подкрепляться
набором тестов, которые продолжают функционировать по мере
продолжения работы над проектом.
В гибких технологиях программирования в основном используется два
вида тестирования:
• модельное тестирование (unit testing);
• функциональное тестирование (functional testing).