Те, що ви описуєте як робочий процес, на мій погляд, не є Духом TDD.
Конспект книги Кента Бекса про Amazon говорить:
Простіше кажучи, тестова розробка призначена для усунення страху при розробці додатків.Хоча деякий страх є здоровим (його часто розглядають як совість, яка закликає програмістів "бути обережними!"), Автор вважає, що побічні продукти страху включають орієнтовних, бурхливих та некомунікативних програмістів, які не здатні сприймати конструктивну критику. Коли програмуючі команди купують TDD, вони одразу бачать позитивні результати. Вони усувають страх, пов’язаний зі своєю роботою, і краще готові вирішувати складні виклики, які стоять перед ними. TDD усуває орієнтовні риси, вчить програмістів спілкуватися, і це спонукає членів команди шукати критику. Однак, навіть автор визнає, що бурхливість повинна бути розроблена індивідуально! Коротше кажучи, передумова TDD полягає в тому, що код слід постійно перевіряти і реконструювати.
Практичний TDD
Офіційне автоматизоване тестування, особливо тестування підрозділів кожного методу кожного класу, є таким же поганим антидіаграмою і нічого не тестує. Має бути баланс. Ви пишете одиничні тести для кожного setXXX/getXXX
методу, вони також є методами!
Також тести можуть допомогти заощадити час і гроші, але не забувайте, що вони витрачають час і гроші на розробку, і вони кодують, тому вони витрачають час і гроші на утримання. Якщо вони атрофуються від нестачі, тоді вони стають відповідальністю більше, ніж користю.
Як і все подібне, існує рівновага, яку не може визначити ніхто, крім себе. Будь-яка догма в будь-якому випадку, мабуть, більше неправильна, ніж правильна.
Хороший показник - це код, який є критичним для бізнес-логіки та підлягає частому внесенню в дію на основі змін, що змінюються. Ці речі потребують формальних тестів, які автоматизуються, це було б великою віддачею від інвестицій.
Вам дуже важко буде знайти багато професійних магазинів, які працюють і таким чином. Це просто не має сенсу витрачати гроші на тестування речей, які за будь-яких практичних цілей ніколи не зміниться після того, як простий тест на дим буде сформований. Написання формальних автоматизованих одиниць тестів для .getXXX/.setXXX
методів - це яскравий приклад цього, повного марнування часу.
Зараз минуло два десятиліття, як було зазначено, що тестування програм може переконливо продемонструвати наявність помилок, але ніколи не може продемонструвати їх відсутність. Після поважно цитуючи це зауваження, інженер-програміст повертається до тогочасного порядку і продовжує вдосконалювати свої стратегії тестування, як і алхімік, який продовжував удосконалювати свої хризокосмічні очищення.
- Едсгер В. Джикстра . (Написано у 1988 році, тому зараз ближче до 4,5 десятиліть.)
Дивіться також цю відповідь .