Микширование тогда и когда в BDD пользовательские истории/приемные тесты

StackOverflow https://stackoverflow.com/questions/3517346

Вопрос

Как вы обрабатываете пользовательские истории/приемные тесты, в которых есть длинные цепочки, подобные этой, где затем/когда смешиваться вместе? Лучше всего ли разделить это на отдельный приемный тест, где один тестирует, как появляется диалог, а затем второй тестирует поведение после показа диалога?

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, а не английский, но вы должны получить идею):

http://code.google.com/p/wipflash/source/browse/example.petshop.scenarios/petregistrationandpurchase.cs

Другие советы

Вопрос действительно один из «ветвей».

Если есть несколько шагов, на каждом шаге должен быть выбор пользователей. Должно быть несколько ", когда" s. Это должно сформировать богатое дерево с множеством выбранных пользователей альтернатив в каждой ветви. Каждый возможный результат должен иметь свой собственный тест, чтобы сделать различные варианты и достичь этого результата.

Трехэтапная последовательность с двумя вариантами пользователя - 8 возможных путей. Различные пути могут достичь одного и того же исхода (или нет). Но у вас должно быть несколько путей через это.

Если это просто последовательное (потому что кто -то чувствовал, как писать последовательные шаги), а у пользователя нет выбора, то это не очень обусловлено рассмотрением поведения пользователя, не так ли?

Я не вижу выбора. Нет выбора == Плохой запах. Но легко проверить, так как есть только один результат с последовательности пленных шагов, где у пользователя есть несколько вариантов или нет.

Если вы правильно разработаете выбор, то каждый шаг имеет несколько результатов, и каждый шаг должен быть проверен независимо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top