Использует ли поведенческая разработка модульные тесты или тесты интеграции ("сборки")?


Мы должны классифицировать тесты БДД как "юнит-тесты" или "интеграционные тесты" ("собрание тестов" или "натурные испытания")? Запутано, потому что технически тесты BDD выполняются с помощью инструментов * unit, хотя тесты могут (и в большинстве случаев) охватывать несколько компонентов, поскольку они, возможно, будут использоваться для тестирования вариантов использования из конца в конец.

1 2

1 ответ:

BDD не имеет только одного вида теста. Он использует как приемочные тесты, так и модульные тесты.

Он начинается с приемо-сдаточных испытаний. Целью приемочных испытаний является определение и Проверка характеристик приложения на высоком уровне. Приемочные тесты обычно пишутся с помощью инструмента BDD, такого как JBehave или Cucumber, а не с помощью инструмента модульного тестирования. Вы можете написать приемочные тесты с помощью инструмента модульного тестирования, но это не работает так же хорошо, как с помощью реального инструмента BDD, потому что инструменты модульного тестирования смешиваются спецификация и реализация в одном файле, что затрудняет фокусировку на поведении. Технически приемочные тесты являются интеграционными тестами, так как они выполняются для всего стека приложений.

Как только приемочные тесты реализованы, BDD переходит к тестированию, которое определяет и проверяет детали желаемого поведения приложения и обеспечивает техническую корректность.

  • Дополнительные интеграционные тесты могут быть написаны с использованием того же инструмента, что и приемка тесты или могут быть написаны с помощью инструмента модульного тестирования, но без изоляции прикладных слоев. Даже если они написаны с использованием того же инструмента, что и приемочные тесты, это просто интеграционные тесты, потому что они мотивированы деталями требований и инженерными проблемами, а не требованиями высокого уровня.

  • BDD также использует регулярные модульные тесты для проверки деталей требований и технических проблем.

Типичный набор тестов BDD включает полный набор приемочных тестов, а ограниченное количество интеграционных тестов (кроме приемочных тестов) и большое количество модульных тестов. Прикладные уровни, близкие к пользователю (например, контроллеры), часто тестируются в основном или полностью в ходе приемочных испытаний, в то время как более низкие уровни (например, модели) нуждаются в большем количестве модульных тестов.