18

Что такое BDD и в чём его отличия от TDD?

1
  • Для начала, надо привести расшифровки, что вы понимаете под BDD (bug-driven development?) и TDD (telecommunications device for the deaf?)
    – Kromster
    17 сен 2022 в 10:07

3 ответа 3

20

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

В чем преимущество BDD?

  • тесты читаемые для не программистов.
  • их легко изменять. Они часто пишутся почти на чистом английском.
  • их теперь может писать product owner или другие заинтересованные лица.
  • результаты выполнения тестов более "человечные".
  • тесты не зависят от целевого языка программирования. Миграция на другой язык сильно упрощается.

(слово тесты выделено не случайно, потому что теперь тесты это и описания, и непосредственно их реализация.)

6
  • Строго говоря, то что вы описали - это End2End или Acceptance тесты. BDD бывает и без "оторванных" от языка программирования описаний. Для ruby это, например, RSpec - модульное тестирование в BDD стиле. 18 апр 2017 в 8:02
  • 1
    основное отличие Cucumber и RSpec - это то, кто пишет "тесты". В первом случае это "бизнес", во втором - "разработчики".
    – KoVadim
    18 апр 2017 в 8:25
  • Это понятно. Я просто к тому, что в BDD тесты пишут не обязательно "бизнес-люди". Иными словами, говоря "я как пользователь хочу когда нажали кнопку пуск тогда показывалось меню как на картинке" вы ограничниваете BDD только до Acceptance-level тестов, что не верно. RSpec - тоже BDD-way, а он вполне себе Unit-level. 18 апр 2017 в 8:33
  • а я и не утверждал что их пишут только бизнес-люди. Я сказал, что теперь их могут также писать и бизнес люди. А это дает большую гибкость (потому что теперь нужно меньше переводчиков с "бизнес языка" на "программерский")
    – KoVadim
    18 апр 2017 в 8:35
  • Эм... "То есть, есть специальный человек(или люди) который пишет описания вида..." А про BDD Unit тесты написанные программистами для программистов в вашем ответе как раз ни слова. 18 апр 2017 в 8:43
14

BDD фреймворки

  1. увеличивают время разработки тестов, так как добавляются новые зависимости
  2. усложняют поддержку тестов, так как теперь больше уровней абстракций, которые нужно поддерживать
  3. никакие бизнес аналитики не могут писать BDD тесты потому что

    • во-первых они просто не будут этого делать а
    • во-вторых нельзя просто написать в свободной форме на английском тест и все заработает. Нужно строго соблюдать синтаксис и надо знать все кейворды и в каком порядке они будут работать. И надо замаппить actions на эти кейворды на каком-то ЯП

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

0
10

Прошу сильно не минусовать, ниже - шутка:

BDD - bug-driven development, разработка на багах. Когда придумана новая фича, делается декомпозиция, и сразу на тестирование. Тесты не проходят (ведь никто еще ничего не реализовывал), и заводится баги. Команда начинает фиксить баги, закрывая функционал.

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.