Должны ли сценарии BDD включать фактические тестовые данные, или просто опишите его?

Мы подошли к моменту, когда мы поняли, что есть два варианта указания тестовых данных при определении типичного сценария 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 более хрупким? Реорганизация модели может означать нарушение этих тестов, тогда как, если тестовые данные определены в коде, компилятор поможет нам с изменениями модели.

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

Спасибо!

22
задан Raedwald 1 March 2019 в 14:38
поделиться