Разработка, управляемая поведением или тестирование?

Недавно я услышал о BDD и нашел, что он очень похож на TDD.

Какой из этих двух вы используете (если есть)?

и какие плюсы и минусы каждого?

Ответ 1

Я очень люблю BDD = TDD, чтобы сделать правильный лагерь. Если вы делаете TDD, как первоначально описано Beck, и практикуется многими, то по существу нет разницы.

Что BDD приводит к таблице, это несколько интересных вариантов на языке, используемом для описания процесса. Используя альтернативную терминологию в описаниях процесса и инструментах, люди BDD надеются поощрять лучшие практики - похвальную цель.

Я делаю TDD так долго, теперь мне трудно судить, действительно ли это помогает. Я думаю (надеюсь:-) Я уже изучил многие уроки, которые BDD-инструменты/язык поощряют, чтобы они, казалось, не придавали мне большого значения. Конечно, YMMV - и я не реализовал целый проект "реального мира" с использованием инструментов BDD, поэтому я мог бы проводить мои личные эксперименты и экстраполировать слишком далеко.

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

Ответ 2

BDD похож на TDD, но с другим мышлением. В BDD вы пытаетесь создать исполняемые спецификации вместо тестов. Это в основном достигается с использованием другого словаря, но аналогичной механики, такой как TDD.

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

Ответ 3

BDD - все о запуске сценариев. Подобно TDD, мы будем тестировать каждый сценарий как историю.

История объясняется клиентом. На основе сюжетной линии сценарии будут написаны. Такие инструменты, как CUCUMBER, облегчили запись сценариев.

Ответ 4

TDD и BDD почти одинаковы. Разница заключается в том, как мы это объясняем, и поэтому, как успешные команды оказываются в том, чтобы заставить их работать на них.

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

Мой опыт в том, что BDD помогает в совместной работе, а использование бизнес-удобочитаемых исполняемых спецификаций помогает создать общий язык, когда все в команде участвуют в написании документации, которая описывает, что должна делать система. Это помогает всей команде изучить язык домена вместе.

BDD - это то, что нужно, чтобы сделать TDD успешным.