Вчера я пошел на отличную презентацию Гойко Адзич о BDD.Возможно, я пропустил одну или две вещи, которые он сказал, поэтому вот один вопрос, который, я надеюсь, кое-что прояснит для меня.
Часто, когда вы видите пример BDD в Интернете, они включают шаги в пользовательском интерфейсе.На языке корнишона часто можно увидеть что-то вроде:
Scenario: Successful booking
Given I am on the page ...
When I enter the following ...
или что-то в этом роде.
Мой вопрос: действительно ли это связано с BDD?Не следует ли BDD ориентироваться на домен, и тогда у вас есть такие тесты, как пользовательский интерфейс или регрессионные тесты.Я думаю о том, чтобы использовать подобный синтаксис gherkin для описания системы бронирования:
BDD Spec:
Scenario: Successful booking
Given I am an authenticated user
When I place an order with the following items
| item | price ($) |
| book1 | 5 |
Then I should expect to pay $5
And I should get a confirmation mail of my order
Обратите внимание, что я вообще не использую пользовательский интерфейс, ятолько описание того, как работает домен, и этот тест должен выполняться при каждой сборке.Затем вы можете пройти тест UI (также корнишон):
Scenario: Successful booking
Given I am logged in on the site
And I go to the page for item book1
And I click add to basket
Then I should have a basket with 1 item and $5
When I click checkout
Then I should get to the checkout page
, и он будет продолжен, возможно, его следует разделить на два или три сценария, но это не главное.Эти тесты тяжелее для запуска и, вероятно, должны выполняться только на ночных сборках.Суть вопроса по-прежнему такова: если вы отделите свои спецификации BDD от своего пользовательского интерфейса / регрессионного теста.