Тесты нужны что бы понять, что ничего не сломалось. Тесты - это код, который проверяет, что результат совпадает с чем, что мы планировали - называется тестом, а процесс создания тестов и их последующего использования - автоматизированным тестированием.
Разработка через тестирование (TDD) и разработка через поведение (BDD) - это подходы разрабокти ПО в рамках которых поведение части кода или целая фича описывается в виде набора сценариев или тестов до написания фактического кода и только потом создается реализация. Принципы сбора тербований к ПО и моделирование предметной области - это проблемно ориентированное программирование (DDD).
Процесс разработки фичи следующий:
Написане тестов до реализации конкретного функционала позволяет нам сосредоточнится на том, что мы хотим достичь и полностью погрузиться в "как это сделать" впоследствии.
Типы тестирования:
Книга «Экстремальное программирование: разработка через тестирование»
юнит - тестируешь чашку, ложку, чайник все по отдельности
фич тест - тестируешь как оно заваривает чай
интеграционный - как оно все работает внутри комнаты
смок тест - что есть чайник электричество и чай в наличи