Розробка через тестування (TDD)

Тестування починається з самого початку проекту

У рамках підходу «Розробка через тестування» (TDD) проект будується на коротких, часто повторюваних циклах розробки та юніт-тестуванні. Спочатку створюється тест, що покриває бажану зміну, потім створюється код, який дозволить пройти такий тест, і, нарешті, проводиться рефакторінг нового коду на відповідність прийнятим вимогам.

Підхід TDD заохочує прийняття найбільш простого дизайну продукту і служить додатковою запорукою впевненості замовника в якості кінцевого продукту. Екстремальне програмування та інші Agile-методології спираються на постійну звірку ПЗ з бізнес-вимогами – з самого початку розробки і протягом всього проекту.

Приймальні тести проходять на стороні замовника. Це допомагає йому бути впевненим у тому, що він отримає всю необхідну функціональність. Тестування на ранній стадії скорочує час, необхідний для реалізації необхідних функцій.

Безліч тестів допомагає зменшити кількість помилок в коді. Крім того, усунення дефектів на ранньому етапі розробки, перешкоджає появі хронічних, дорогих помилок, які здатні привести до тривалого і виснажливого налагодження надалі.

Підхід «Розробка через тестування» не скасовує традиційного тестування – навпаки, він прокладає надійну дорогу до проведення ефективних модульних тестів. Іншою вагомою перевагою TDD є те, що результативні тести являють собою приклади працюючого ПЗ. Початок тестування на ранній стадії і висока частота тестів дозволяють виявити і усунути дефекти, здатні ускладнити процес розробки на пізніх стадіях.

TDD не тільки припускає перевірку коректності, а й впливає на дизайн програми. Спираючись на тести, розробники можуть швидше уявити, яка функціональність необхідна користувачеві. Таким чином, деталі інтерфейсу з'являються задовго до остаточної реалізації рішення.

Існує думка, що при підході «Розробка через тестування» для юніт-тестінгу потрібно більше коду, проте загальний час, що витрачається на реалізацію, все ж таки невеликий. Недавні дослідження підтвердили, що незважаючи на те що використання TDD передбачає написання більшої кількості тестів, в цілому програмісти працюють більш продуктивно.