Недавно я задал вопрос о тестах в разработке игр - это кстати, как я узнал об этом. Ответы там указали на некоторые любопытные, конкретные недостатки:
- Это дорого делать, когда ваш код должен быть тесно связан .
- Это трудно сделать, когда вам необходимо знать о различных аппаратных платформах, когда вам нужно проанализировать вывод для пользователя, а результат кода имеет смысл только в более широком контексте .
- Тестирование UI и UX очень сложно .
- И, в частности, автоматизированные тесты могут быть более дорогими и менее эффективными, чем набор очень дешевых (или бесплатных) бета-тестеров .
4-й пункт заставляет меня вспомнить некоторый мой опыт. Я работал в очень скудной, ориентированной на XP, управляемой Scrum компании, где настоятельно рекомендовались юнит-тесты. Однако, на пути к более скромному, менее бюрократическому стилю, компания просто пренебрегла созданием команды QA - у нас не было тестеров. Так часто клиенты находили тривиальные ошибки при использовании некоторых систем, даже с охватом тестирования> 95%. Поэтому я бы добавил еще один момент:
- Автоматические тесты могут дать вам понять, что QA и тестирование не важны.
Кроме того, в те дни я думал о документации и представил гипотезу, которая может быть верна (в меньшей степени) для тестов два. Я просто почувствовал, что код развивается так быстро, что довольно трудно создавать документацию, которая следует такой скорости, поэтому более ценно тратить время на то, чтобы сделать код читабельным, чем написание тяжелой, легко устаревшей документации. (Конечно, это не относится к API, а только к внутренней реализации.) Тест немного страдает от той же проблемы: он может быть слишком медленным для записи по сравнению с тестируемым кодом. OTOH, это меньшая проблема, потому что тесты предупреждают, что они устарели, а ваша документация будет молчать, пока вы не перечитываете ее очень, очень осторожно .
Наконец, иногда я сталкиваюсь с проблемой: автоматическое тестирование может зависеть от инструментов, и эти инструменты могут быть плохо написаны. Я начал проект с использованием XUL некоторое время назад, и, боже, просто больно писать модульные тесты для такой платформы. Я запустил другое приложение, используя Objective-C, Cocoa и Xcode 3, и модель тестирования на нем была в основном кучей обходных путей.
У меня есть другой опыт относительно недостатков автоматического тестирования, но большинство из них перечислены в других ответах. Тем не менее, я яростный сторонник автоматизированного тестирования. Это избавило от огромной работы и головной боли, и я всегда рекомендую ее по умолчанию. Я считаю, что эти недостатки - всего лишь детали по сравнению с преимуществами автоматизированного тестирования. (Важно всегда провозглашать свою веру после того, как вы прокомментируете ереси, чтобы избежать auto da fé.)