Мы подошли к моменту, когда мы поняли, что есть два варианта указания тестовых данных при определении типичного сценария CRUD:
Вариант 1: Опишите данные для использования и позвольте реализации определять данные
Scenario: Create a region
Given I have navigated to the "Create Region" page
And I have typed in a valid name
And I have typed in a valid code
When I click the "Save" button
Then I should be on the "Regions" page
And the page should show the created region details
Вариант 2: Явно укажите тестовые данные для использования
Scenario: Create a region
Given I have navigated to the "Create Region" page
And I have filled out the form as follows
| Label | Value |
| Name | Europe |
| Code | EUR |
When I click the "Save" button
Then I should be on the "Regions" page
And the page should show the following fields
| Name | Code |
| Europe | EUR |
С точки зрения преимуществ и недостатков, мы установили следующее:
Вариант 1 хорошо подходит для случая, когда определение say "допустимое имя" изменения. С этим было бы труднее справиться, если бы мы выбрали вариант 2, где тестовые данные находятся в нескольких местах. Вариант 1 явно описывает, что важно в данных для этого теста, особенно если это был сценарий, в котором мы говорили что-то вроде «ввели неверный номер кредитной карты». Он также "кажется" более абстрактным и каким-то образом BDD, поскольку больше озабочен описанием, чем реализацией.
Однако в Варианте 1 используются очень специфические шаги, которые было бы трудно использовать повторно. Например, «страница должна отображать сведения о созданном регионе», вероятно, когда-либо будет использоваться только в этом сценарии. И наоборот, мы могли бы реализовать вариант 2 «на странице должны отображаться следующие поля» таким образом, чтобы его можно было многократно повторно использовать в других сценариях.
Я также считаю, что вариант 2 более удобен для клиентов, поскольку они могут видеть на примере, что происходит, вместо того, чтобы интерпретировать более абстрактные термины, такие как «действительный». Будет ли вариант 2 более хрупким? Реорганизация модели может означать нарушение этих тестов, тогда как, если тестовые данные определены в коде, компилятор поможет нам с изменениями модели.
Я понимаю, что здесь не будет правильного или неправильного ответа, но я хотел бы услышать мнение людей о том, как они решат, какой использовать.
Спасибо!