Лучшие практики BDD для разработки сценариев Cucumber для форм - PullRequest
6 голосов
/ 14 декабря 2010

Допустим, у вас есть форма, которая создает нового пользователя.Как вы пишете свой сценарий Cucumber?

1.)

Given I am logged in as admin
When I create a new user
Then I should see "Successfully created user"

2.)

Given I am logged in as admin
When I go to Create new user
And I fill in "Name" with "Name111"
And I fill in "Password" with "Password111"
And I press "Create new user"
Then I should see "Successfully created user"

Если вы выбираете 1.), где вы документируете требованиядля пользователя (пользователь должен иметь имя и пароль).Я вижу, что BDD касается поведения, но в какой-то момент вы и заинтересованная сторона должны указать, какие свойства должен иметь пользователь, не так ли?

Я очень плохо знаком с BDD, поэтому я ценю любые советы ...

Ответы [ 3 ]

13 голосов
/ 15 декабря 2010

Вы должны прочитать Императив против декларативных сценариев .

- Aslak. Создатель огурца.

2 голосов
/ 14 декабря 2010

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

Узнайте, чем отличается продукт, который вы создаете, от всех аналогичных продуктов, а затем определите его как ценностьсценарий.Тогда это будет выглядеть так:

Given Fred is logged in
When Fred <does something>
Then Fred should <get some really differentiating value>
And <something else happens>

Придерживайтесь действительно высокоуровневых возможностей, а не низкоуровневых шагов на основе форм.Например:

Given there is already a question on BDD and Cucumber
Given Peyote is logged in
When Peyote proposes a question on BDD and Cucumber
Then Peyote should see other questions on BDD and Cucumber.

Существует концепция, называемая «Парадигма страницы», в которой вы создаете класс со всеми низкоуровневыми шагами, которые может выполнять страница или экран.Затем вы можете вызывать эти низкоуровневые шаги на странице из высокоуровневых осветительных приборов Cucumber.

Ваш бизнес будет гораздо больше вовлечен в подобные сценарии.Основная цель BDD - не создавать автоматизированные тесты, а вести беседы вокруг сценариев, чтобы вы могли выяснить, в чем проблема, и какие другие варианты вы могли бы рассмотреть, прежде чем приступить к реализации кода.Автоматизированные тесты являются хорошим побочным продуктом.

Общение и обучение, которое вы получаете, общаясь с ними, - это то, что отличает BDD от ATDD (Acceptance Test Driven Development).Вот почему мы используем такой язык, как Пример, Сценарий, Дано, Когда, Затем, Контекст, Событие, Результат вместо Test, SetUp, TearDown, Act, Arrange, Assert - так что мы можемпоговорите об этом с бизнесом, бакалаврами и тестировщиками на одном языке.

См. статью Дэна Норта о намеренном открытии и остальную часть его блога для получения дополнительной информации и удачи с BDD!1021 *

1 голос
/ 14 декабря 2010

Любой из них будет работать.С # 1 вы создадите шаг, чтобы изменить порядок заполнения формы.Я предпочитаю гибрид № 1 и № 2, потому что я использую Сценарий Контуры много, например:

Background: 
 Given the following users exist:
   | email             | password        |
   | test@example.com  | testpassword23  |
   | test2@example.com | notthistime     |
   | test3@example.com | welcomeback     |

  @login @authentication
  Scenario Outline: Authentication
     Given I am on the new user session page
     When I login with "<s_email>" and "<s_password>"
     And I press "Login"
     Then I should see "<s_message>"

  Examples:
    | s_email           | s_password       | s_message                      |
    | test@example.com  | testpassword23   | Signed in successfully         |
    | test2@example.com | itriedreallyhard | Invalid email or password.     |
    | teOst@example.com | testpassword23   | Invalid email or password.     |
...