Огурец - тестирование принципов против скорости - PullRequest
0 голосов
/ 26 ноября 2018

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

Допустим, я тестирую вебстраница с несколькими полями ввода.

В настоящее время для операций CRUD у меня есть два типа сценариев:

Scenario: Check page display correct data
  Given: I populate DB with data
  When: I open the page
  Then: Page data should match with data from DB

Scenario: Update page data
  Given: I populate DB with data
  When: I open the page
  And: I update each field with some new data
  When: I press save button to save data
  Then: Page data should match with data from DB

Так что в этом случае у меня есть два сценария, которые проверяют, правильно ли отображаются данные,и еще один, который обновляет данные и проверяет их, но поскольку шаг, который заполняет базу данных, занимает много времени (1-3 секунды), я подумал, почему бы не объединить эти два типа сценариев в один, что значительно сокращает время выполнения:

Scenario: Update page data
  Given: I populate DB with data
  When: I open the page
  Then: Page data should match with data from DB
  And: I update each field with some new data
  When: I press save button to save data
  Then: Page data should match with data from DB

Как видите, сначала я заполняю базу данных, затем проверяю, правильно ли она отображается, затем я изменяю ее и проверяю снова, поэтому таким образом я проверил две операции CRUD (чтение и обновление).в одном сценарии, но я считаю, что это будет противоречить принципам.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Пара идей, которыми я могу поделиться.

...
When: I ...
And: I ...
When: ...
...

может стать

...
When: I ...
And: I ...
And: ...
Then: ...

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

Хорошо подумать о своих путешествиях BDD с точки зрения конечного пользователя

Given: I populate DB with data

- это то, что случается с обычным пользователем очень редко, верно?Если вы не охватите какой-то конкретный случай администратора / разработчика.Если вы используете его в качестве предварительного условия, взгляните на xUnit Шаблоны настройки прибора .Проверки БД являются рекомендуемым фактором , но не на самом верхнем уровне вашей структуры.

И

, значительно сокращая время выполнения

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

0 голосов
/ 26 ноября 2018

Совершенно хорошо объединить две операции CRUD в одном сценарии, если ваши тесты больше сосредоточены на интеграции и сквозном поведении, а не на поведении модулей / компонентов (что, вероятно, имеет место).

Конечно, вы всегда должны учитывать баланс между слишком большим вкладом в один сценарий и фрагментацией функции во многих сценариях.И, конечно, компромисс с утверждением более чем одной вещи в сценарии состоит в том, что он потенциально заставляет вас отлаживать больше, когда сценарий не выполняется.Поэтому речь идет не о принципах, а о сознательном выборе, который вам, возможно, придется пересмотреть в зависимости от скорости и стабильности тестируемого приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...