Test-Driven Development - це написання тестів для визначення специфікацій програми
Ви не пишете тести для визначення специфікації, описи тестів, розповіді користувачів та описи функцій - це специфікація в розумінні «мертвих дерев».
Для перегляду, процес TDD у двох словах:
- визначити проект з точки зору особливостей
- опишіть зацікавлених сторін, поведінку та мету кожної функції за допомогою розповідей користувачів
- вкажіть очікувані дані, ініціюючі події / умови та поведінку / результати, пов'язані з історією користувача, використовуючи описи тестів [і цим завершується "специфікація"]
- вибрати набір функцій для кожної ітерації; ітерації повинні бути короткими [я опускаю кроки планування та оцінки для стислості]
- кодуйте тест для функції (вона не вдасться, але вам довелося приймати рішення API, щоб кодувати тест)
- реалізуйте достатньо функції, щоб тест пройшов
- refactor код при необхідності
- повторюйте з наступним тестом, поки функція не буде завершена
- повторюйте з наступною функцією до завершення ітерації
- повторюйте з наступною ітерацією, поки проект не буде завершено
те, що дизайн, архітектура, супровідна документація та ін., які ви вирішили зробити, не є частиною TDD. Є кілька практичних «найкращих практик», про які можна прочитати, але пам’ятайте, що це «найкращі» практики в чужій майстерні , а не у вашій.
зауважте, що справа у тому, щоб замовник і розробник придумували можливості та писали розповіді та описи тестів разом для взаєморозуміння
тож, коли це не вийшло, первісне питання було:
яка роль архітектора програмного забезпечення в TDD?
І коротка відповідь:
Так само, як це було колись, таким, як це було колись. --Давид Бірн
EDIT: довга відповідь така: архітектор грає звичайні ролі прозорливого / слідчого / подразника / підтримки / зворотного стоп протягом усього процесу, за необхідності.
EDIT 2: Вибачте, що я пропустив пункт підпитання! Кожна відповідальність за написання специфікацій; всі розробники, включаючи архітектора, якщо / коли це необхідно, а також замовника . Розробники також кодують тести.