Основные преимущества TDD-подхода:
- Более высокое качество кода. 1 Каждый код проходит через серию тестов, что дисциплинирует разработчика. 1
- Улучшенная модульность. 1 Каждый компонент тестируется сам по себе, при этом программисты исходят из того, что модули должны уметь работать друг с другом. 1
- Быстрое обновление. 1 Код уже оттестирован внутри, поэтому отдельный этап тестирования всего софта целиком занимает меньше времени. 1
- Улучшенное понимание кода. 1 Каждый тест — это одновременно и документация к функциям, что помогает всем лучше понять, что именно делает программа. 1
Некоторые недостатки TDD-подхода:
- Нужно больше времени на написание кода и тестов. 1
- Для хороших тестов нужен большой опыт. 1 Если программист не умеет писать нормальные тесты, то смысла в таком тестировании не много. 1
- Некоторые тесты сложно написать. 1 Например, тестирование графического интерфейса автоматизировать сложно. 1
- Необходимость поддержки тестов. 2 База кода при стопроцентном покрытии тестами увеличивается почти в два раза, и всю эту базу необходимо документировать, поддерживать и проводить рефакторинг. 2