Микширование тогда и когда в BDD пользовательские истории/приемные тесты
-
29-09-2019 - |
Вопрос
Как вы обрабатываете пользовательские истории/приемные тесты, в которых есть длинные цепочки, подобные этой, где затем/когда смешиваться вместе? Лучше всего ли разделить это на отдельный приемный тест, где один тестирует, как появляется диалог, а затем второй тестирует поведение после показа диалога?
Feature: Confirmation before removing products from cart
In order to avoid accidentally removing an item from my cart
As a Customer
I want a confirmation dialog to ask me if I'm sure I want to remove an item
Scenario: I want to remove an item from my cart
Given I have added item "xyz" to my cart
When I click "Remove"
Then a confirmation dialog pops up
And it asks "Are you sure you want to remove this from your cart"
When I click "Yes"
Then item "xyz" should be removed from my cart
Решение
Ваш сценарий кажется немного длинным, и он довольно сильно связан с графическим интерфейсом. Что произойдет, если бы вы привязали его к возможностям системы?
Scenario: I want to remove an item from my cart
Given I have a cart containing "xyz"
When I remove "xyz" from my cart
Then my cart should be empty.
Сценарий теперь описывает вещи, которые полезны для пользователя, и его легче рефактор.
Я люблю BDD так же сильно, как и я, потому что у меня была такая ситуация. У нас было 120 приемных тестов, и они в основном терпят неудачу. Кто -то поместил диалогу подтверждения, так же, как тот, который вы описываете, и мгновенно преодолел 80 тестов принятия. Вместо этого превращая их в сценарии с высоким уровнем многократного, мы можем легко рефакторировать и сохранить тесты, даже если механизмы, которые мы используем для реализации возможностей системы системы. Фактический щелчок кнопок происходит в этих многоразовых шагах, и можно иметь более одного действия пользовательского интерфейса за шаг.
Я написал здесь сценарий, который делает это, если он полезен (это DSL, а не английский, но вы должны получить идею):
Другие советы
Вопрос действительно один из «ветвей».
Если есть несколько шагов, на каждом шаге должен быть выбор пользователей. Должно быть несколько ", когда" s. Это должно сформировать богатое дерево с множеством выбранных пользователей альтернатив в каждой ветви. Каждый возможный результат должен иметь свой собственный тест, чтобы сделать различные варианты и достичь этого результата.
Трехэтапная последовательность с двумя вариантами пользователя - 8 возможных путей. Различные пути могут достичь одного и того же исхода (или нет). Но у вас должно быть несколько путей через это.
Если это просто последовательное (потому что кто -то чувствовал, как писать последовательные шаги), а у пользователя нет выбора, то это не очень обусловлено рассмотрением поведения пользователя, не так ли?
Я не вижу выбора. Нет выбора == Плохой запах. Но легко проверить, так как есть только один результат с последовательности пленных шагов, где у пользователя есть несколько вариантов или нет.
Если вы правильно разработаете выбор, то каждый шаг имеет несколько результатов, и каждый шаг должен быть проверен независимо.