Test-driven development

Матеріал з Вікі ЦДУ
Версія від 10:30, 26 лютого 2019; 3998138 (обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

Test-driven development

Test-driven development (TDD) - техніка розробки програмного забезпечення, основана на повторення коротких циклів розробки: спочатку пишеться тест, який покриває бажану зміну, після цього пишеться код, який дозволяє пройти тест, наприкінці відбувається рефакторинг коду відповідно до стандартів.

Цикл розробки через тестування

  • Добавлення тесту: створення тесту, який обов'язково не буде проходити, оскільки код, який проходить тест, ще не написано. Якщо тест проходить без коду, то або бажана функціональність вже існує, або тест має недоліки.
  • Запуск нових тестів: на даному етапі необхідно впевнитися в тому, шо тільки нові тести не проходять. Це дає впевненість в тому, шо не створено непотрібних тестів і (хоча це й не гарантовано) що тест дійсно тестує те, для чого його було створено.
  • Написання коду: на цьому етапі пишеться код так, шоб тест пройшов. Тобто, задача на даному етапі- створити код, який проходить тест, а після цього вже проводити рефакторинг коду.
  • Запуск всіх тестів: необхідно впевнитися в тому, що всі тести проходять, відповідно, код написаний правильно.
  • Рефакторинг: коли бажана функціональність отримана, код можна "почистити", без внесенні змін у внутрішню структуру програми.
  • Повторити цикл: описаний вище цикл повторюється, внаслідок чого відбувається реалізація нового функціоналу. Всі кроки необхідно робити малими, від 1 до 10 змін між запусками тестів.

Переваги

  • Програмісти, які пишуть велику кількість тестів, в майбутньому працюють продуктивніше.
  • Рідше виникає потреба використання відладника програмістами.
  • Високий позитивний вплив на дизайн програми. Якщо програміст фокусується на тестах, йому легше уявити, який функціонал необхідний замовнику. Відповідн, розробник продумує деталі інтерфейсу до його розробки.
  • Незважаєчи на те, що виникає потреба писати більше коду, загальний час розробки програмного продукту менший.