То, что вы описываете как рабочий процесс, на мой взгляд, не дух TDD.
Синопсис книги Кента Бекса об Амазонке гласит:
Проще говоря, разработка через тестирование предназначена для устранения страха при разработке приложений.Хотя некоторый страх полезен (его часто считают совестью, которая говорит программистам «быть осторожными!»), Автор считает, что побочными продуктами страха являются опытные, сварливые и необщительные программисты, которые не в состоянии воспринимать конструктивную критику. Когда команды программистов покупают TDD, они сразу же видят положительные результаты. Они устраняют страх, связанный с их работой, и лучше подготовлены для решения стоящих перед ними сложных задач. TDD устраняет пробные черты, обучает программистов общаться и побуждает членов команды искать критику. Однако даже автор признает, что раздражительность должна решаться индивидуально! Короче говоря, предпосылка TDD заключается в том, что код должен постоянно тестироваться и подвергаться рефакторингу.
Практический TDD
Формальное автоматическое тестирование, особенно модульное тестирование, каждый метод каждого класса так же плох как антишаблон и ничего не тестирует. Есть баланс, который нужно иметь. Вы пишете юнит-тесты для каждого setXXX/getXXX
метода, это тоже методы!
Кроме того, тесты могут помочь сэкономить время и деньги, но не забывайте, что они требуют времени и денег на разработку, и они являются кодом, поэтому они требуют времени и денег на сопровождение. Если они атрофируются из-за нехватки обслуживания, они становятся пассивом больше чем выгодой.
Как и все, как это, есть баланс, который не может быть определен кем-либо, кроме вас самих. Любая догма в любом случае, вероятно, более неправильная, чем правильная.
Хорошей метрикой является код, критически важный для бизнес-логики и подверженный частым изменениям в зависимости от меняющихся требований. Эти вещи нуждаются в формальных тестах, которые будут автоматизированы, что будет большой отдачей от инвестиций.
Вам будет очень трудно найти много профессиональных магазинов, которые работают таким же образом. Просто не имеет смысла тратить деньги на тестирование вещей, которые для практических целей никогда не изменятся после проведения простого теста на дым. Написание формальных автоматизированных модульных тестов для .getXXX/.setXXX
методов является ярким примером этого, полной траты времени.
Прошло уже два десятилетия с тех пор, как было отмечено, что тестирование программы может убедительно продемонстрировать наличие ошибок, но никогда не сможет продемонстрировать их отсутствие. После тщательного цитирования этого широко разрекламированного замечания инженер-программист возвращается к порядку дня и продолжает совершенствовать свои стратегии тестирования, точно так же как алхимик прошлого, который продолжал совершенствовать свои хризокосмические очищения.
- Эдсгер В. Джикстра . (Написано в 1988 году, так что сейчас оно приближается к 4,5 десятилетиям.)
Смотрите также этот ответ .