Test Driven Development (или TDD) — популярная техника разработки софта. Появилась в 1999 году, в книге Кента Бэка с одноименным названием.
В TDD, разработчики сразу пишут тесты (которые, очевидно, падают), а потом пишут код, который заставит эти тесты проходить. Как только тест проходит, добавляется еще один падающий тест и снова пишется код, который заставит тест работать. Так происходит пока на выходе не получится полностью рабочая фича. Для внешних зависимостей, например, базы данных, пишутся моки, чтобы максимально изолировать код на данном этапе.
Преимущества TDD:
- Написание тестов перед разработкой заставляет думать о функциональности, которую нужно разработать. Это позволяет сделать будущий код лучше.
- Если под рукой есть работающий набор тестов, вы отловите баг уже на стадии разработки.
- Написание тестов часто вынуждает разработчиков уточнять требования и, в некоторых случаях, улучшать их и делать более прозрачными. Сложно написать хорошие тесты по плохой спецификации.
- Сложно выдавать хорошее качество, если нельзя проверить вашу программу после внесения изменений. TDD добавляет уверенности в коде, который вы пишете, т.к. на каждое изменение есть соответствующий тест.