Разработка на основе TDD – тестов-это методология тестирования разработки, которая помогает разработчикам достичь Скорости, надежности и качества с помощью специально структурированных механизмов. Это подход к разработке программного обеспечения, при котором разработчик пишет модульные тесты перед кодом приложения.
Джо Берч, старший инженер Android в Buffer : “Следование TDD не только позволило нам написать более простой и понятный код, но и позволило нам больше думать о том, что мы реализуем, прежде чем фактически реализовать его. Это дополнительное пространство для размышлений позволяет нам понять и проверить различные логические пути, прежде чем углубляться в детали реализации. Это, в свою очередь, помогает сократить время разработки, создавая что-то менее подверженное ошибкам с самого начала.”
Если мы проведем unittest, но не рефакторинг, то мы обнаружим (некоторые) ошибки раньше. Если мы проведем модульное тестирование и рефакторинг, то мы предотвратим ошибки—будет сделано меньше ошибок, поэтому меньше обнаруживать. Итак, давайте измерим эти два результата в качестве наших основных показателей.
Шаблон для упорядочения и форматирования кода в методах модульного тестирования:
Последующие – 3 А
- Организуйте все необходимые предварительные условия и входные данные.
- Действие на тестируемый объект или метод.
- Утверждать , что ожидаемые результаты достигнуты.
Шаблон для именования модульных тестов:
- Дано – входы
- Когда – при определенных условиях
- – Сгенерированный вывод
Ниже приведены некоторые примеры: a. test_func_raises_zero_division_error_for_divisor_as_zero
b. test_is_adult_false_age_less_than_18
c. test_fail_to_admit_form_if_mandatory_fields_missing
5 основных преимуществ разработки на основе тестирования:
“Проверенному коду всегда отдается предпочтение перед выходом в производство. И с помощью написания модульных тестов разработчик может сократить свои усилия по разработке, чтобы повторно работать, если в случае появления нового улучшения функций.”
- Подталкивает разработчика к написанию чистого и надежного кода.
- Разработчики имеют в виду четкую цель, и это очень важно в гибкой среде.
- Будущие усовершенствования будут намного проще, так как разработчик будет знать, что и где менять, и да, тестировать новый код одновременно.
- Функциональность кода может быть легко понята, так как, скажем, работа разработчика заполняется другим разработчиком, тогда новый разработчик может легко понять функциональность кода, пройдя модульные тесты.
- TDD снижает вероятность случайной упаковки тестов с производственными двоичными файлами.
- Существует множество гибких инженерных практик, которые может использовать команда, и многие из этих гибких инженерных практик зависят от наличия модульных тестов.