Когда проводится тестирование - НУЖНО ли мне "когда"?

Я внедряю некоторые тесты дыма на нашем сайте.

Я использую формат Given/When/Then для существующих автоматических приемочных тестов / пользовательских историй. Но теперь я хочу сделать начальный тест дыма:

Given I'm on the homepage

Then I should see "Welcome To The Site"

Я что-то пропустил? Это нормально, чтобы не иметь Когда?

Используемые инструменты: MVC3, SpecFlow, Nunit, Watin

6 ответов

Решение

Это полностью допустимый синтаксис, позволяющий опускать любые данные типа "дано", "когда" или "потом" (и даже смешивать их в любом порядке - для спецификации не важно).

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

When I view the homepage
Then I should see "Welcome To The Site"

Я предпочитаю пропустить данный раздел, потому что когда предполагается, что это проверенное действие.

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

[Given(@"I'm on the homepage"]
[When(@"I view the homepage"]
public void NavigateToHomePage()
{
     ...

Я думаю, что вы действительно упускаете суть здесь. Вы ВСЕГДА нуждаетесь в When, Это то, что вы должны испытывать! То, что вы можете оставить, это Givens

То, что вы должны сказать, это;

When I visit the homepage
Then I should see "Welcome To The Site"

Given When Then действительно хороший способ представления конечного автомата.

Given some initial state (in your case, non)
When I perform some action (in your case, visiting the homepage)
Then I have some final state (in your case, text displayed to a user)

Что мне нравится делать, так это думать обо всех вещах, которые должны присутствовать, чтобы позволить When произойдет. В вашем случае, похоже, нет никакого начального состояния. Но подумайте, есть ли у вас какое-то веб-приложение. Вы должны иметь начальное состояние перед посещением домашней страницы (вам необходимо убедиться, что пользователь вошел в систему);

Given a user (user must be stored in the database)
And the user is logged in (a logged in user must be in the session)
When the user visits their homepage
Then the user should see "Welcome To Your Homepage"

Альтернативный сценарий будет;

Given no logged in user (some people would leave this Given out, but I add it for completness)
When a user visits their homepage
Then the user should be redirect to the login page

Как кто-то правильно указал, большинство инструментов BDD на самом деле не делают различий между Given When Then но ты должен! Детальная природа "Given When Then" была выбрана, так как нам, людям, легче понять и помогает нашим мыслительным процессам. Машина не заботится о том, что вы называете ступенями. В таком случае вы должны приложить все усилия для правильного использования ключевых слов в любое время.

Я склонен рассматривать данные данные как эквивалент традиционных предварительных условий. Когда в качестве эквивалента тестового действия. А потом как эквивалент ожидаемого результата.

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

When I'm on the homepage
Then I should see "Welcome To The Site"

Specflow позволит вам использовать Given или When, но Visual Studio также позволит вам написать один класс длиной 1000 строк. То, что оба варианта возможны, не означает, что оба "правильны".

Извиняюсь за воскресение потока...

Я бы, наверное, пошел с:

Given there is a homepage
When I view the homepage
Then I should see "Welcome To The Site"

Мне нравится держать хотя бы одну Given, When а также Then в каждом Scenario - не забудьте, что вы также можете использовать And а также But (не то, чтобы они особенно относились к этому сценарию). Вы можете даже сделать список стиля пули с *,

Я бы сказал:

Given I have requested the home page
When the home page loads
Then I should see 'Welcome To The Site'

Вам не нужно когда. Мне нравится думать о данном / когда / тогда ключевые слова, такие как

Учитывая - это подготовительный шаг, делайте все, что вам нужно, чтобы иметь возможность выполнить тест. Когда - это должно быть действие, которое будет проверять ваш тест. Затем - это должно быть, где вы проверяете свой тест на основе действия, выполненного в шагах Когда.

Как и предполагалось ранее, они влияют только на порядок исполнения.

Другие вопросы по тегам