Разработка через тестирование (Test-Driven Development) – технология программирования, которая позволяет создавать чистый и устойчивый код с минимальными усилиями.
В основе этой технологии лежит разработка теста до того, как будет реализована какая-нибудь часть программа. Сначала пишется тест, и нужно убедиться, что этот тест не срабатывает. Это может произойти, с одной стороны, из-за того, что используемые в тесте методы тестируемого класса еще не определены, с другой – условия теста программа обрабатывает некорректно. Далее нужно максимально быстро и любой ценой заставить тест сработать. В некоторых случаях решение может оказаться очевидным, реализовать его легко и просто. Иногда пишутся заглушки – «суррогатный код», единственная цель которого - выполнение условий теста. После того, как тест сработал, выполняется рефакторинг созданного кода.
Дальше цикл повторяется: новый тест, заставить тест сработать, рефакторинг.
В результате такого подхода будет создан «чистый код, который работает». Такой код легко читать, легко поддерживать и легко расширять.
Есть замечательная книга, описывающая этот подход: «Экстремальное программирование. Разработка через тестирование», Кент Бек. В ней приводится пример использования этой технологии при реализации простого приложения.
Еще одна книга, которую я бы порекомендовал, называется «The Art of Unit Testing with Examples in .NET», Roy Osherove. В ней акцент поставлен на изучения различных возможностей тестирования с использованием библиотеки NUnit. Эта книга носит более прикладной характер, и отвечает на многие сложности, которые возникают при тестировании.
