Несмотря на то, что модульное тестирование кажется эффективным для крупных проектов, где API должны быть прочными (например, разработка API-интерфейсов .NET и т.д.), возможно, это похоже на излишнюю работу над меньшими проектами.
Когда автоматизированный подход TDD лучше всего подходит, и когда лучше всего использовать методы ручного тестирования, зарегистрируйте ошибки, сортировку, исправьте их и т.д.
Другая проблема - когда я был тестером в Microsoft, нам было подчеркнуто, что важно, чтобы разработчики и тестеры были разными людьми, и что напряженность между этими двумя группами может помочь создать отличный продукт в конец. Может ли TDD нарушить эту идею и создать ситуацию, когда разработчик может не быть подходящим человеком для правильного поиска собственных ошибок? Это может быть автоматизировано, но, похоже, есть много способов написать тесты, и сомнительно, будет ли данный набор тестов "доказывать", что качество приемлемо.