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

BDD, как и TDD, состоит из написания тестов, чтобы убедиться, что они проходят и дают желаемый результат, однако, как следует из названия, основное внимание уделяется поведению программы. Мы можем вести с TDD и запускать все модульные тесты, которые мы хотим, но реальный вопрос с BDD заключается в следующем: «Когда я взаимодействую со своим кодом, ведет ли он себя так, как я ожидаю?». Чтобы убедиться, что наш код работает должным образом, мы пишем тесты, которые обычно называют тестами функций.

Я предполагаю, что ключевым моментом здесь является взгляд на вашу программу с точки зрения пользователя, когда пользователь использует функцию, дает ли она ожидаемый результат? Например, пользователь идет в банкомат, чтобы снять деньги, мы могли бы провести тест, который подтвердит, что он успешно снял свои деньги. Но ждать! был ли обновлен их баланс, банкомат выбросил карту, было ли у них достаточно средств для начала? Как вы можете догадаться, это может быть длительным процессом, и только BDD не всегда может дать нам решение наших проблем. Нечестно, мы можем использовать концепции TDD и модульного тестирования, чтобы помочь!

Один из способов решить эти проблемы — обратиться к пользовательским историям и написать задачу на простом старом английском языке. «Пользователь вставляет свою корзину в считыватель и вводит свой пин-код, при условии, что совпадения пин-кода предоставляют доступ к учетной записи. Пользователь просит снять 20 фунтов стерлингов, проверить, достаточно ли у него средств, если да, то выдать деньги и извлечь карту».

Надеемся, что этот краткий обзор BDD прояснит различия между TDD, удачного тестирования функций!

Посмотрите эту анимацию, если вы все еще запутались, она отлично объясняет концепции BDD.