Недостаток пропаганды TDD, на мой взгляд, - в утрировании принципа test first, его аксиоматизации и возведении на пъедестал, где он приобретает абсурдный вид. По крайней мере, так его часто подают в статьях. Такой подход совершенно естественно вызывает скептицизм практикующего программиста, поскольку написание теста сначала имеет свои неудобства - например, невозможность пользоваться IntelliSense при вызове методов класса. (Кстати, Resharper решает эту проблему.) Поэтому понять прелесть подхода часто можно только попробовав его на практике. Принцип "test first" нужно использовать не как догму, а как мощный инструмент, который качественно меняет подход к разработке ПО, но имеет свою область применения, если смотреть на него в контексте полного цикла разработки.
Отражение взгляда на тесты как на нечто очень важное я нашел в статье о тестировании в Microsoft. О значении, которое там придается тестам, говорят следующие факты:
- позиция тестировщика называется Software Design Engineer in Test
- число тестеров на 40% больше, чем число разработчиков
- планы тестирования внушительны (отрывок)
- тесты изначально автоматизированы
В общем, совершенно согласен с таким подходом, и рад, что мой взгляд на тесты как на что-то первостепенное, находит подтверждение в методике разработки софтверного гиганта.