Добрый день,
Я размышлял о сущности описания признаков (синтаксис Gherkin) и не могу найти лучший ответ.
Два примера одного и того же сценария:
Scenario: Creation of a new task
Given I see the button for the creation of a new task
When I click the button in order to create a new task
Then I see the task editor
Scenario: Creation of a new task
Given I see the button "Create task"
When I click the button "Create task"
Then I see page "Task editor" has been opened
вижу основные отличия:
Первый вариант не зависит от интерфейса. Но вы ДОЛЖНЫ использовать селектор или подобное для поиска точного элемента, но тогда вы можете изменить все в интерфейсе, и эти тесты не пройдут (как второй вариант).
Первый вариант НЕ является декларативным. В общем, вы не можете использовать его для описания ДРУГОГО поведения интерфейса.
На мой вкус, второй вариант гораздо проще понять, что происходит в сценарии.
Я думаю, второй вариант гораздо более гибкий и позволяет писать сценарии НАМНОГО быстрее, но в то же время имеет проблемы:
Вы ДОЛЖНЫ включить данные интерфейса в сценарии. Это не хорошая практика. Но с помощью этого (гибкости) вы можете описать что-либо для тестирования (например, видимые данные), поэтому такие тесты намного более точны и обеспечивают более высокое качество.
Каждый раз, когда вы меняете интерфейс, вам нужно исправить свои тесты.
Итак, вы можете сказать, что вы думаете об этом?
Я думаю, что гибкость, скорость, качество и удобочитаемость (второй вариант) намного лучше, чем у первого варианта (в котором нет ничего, кроме читабельности и «стабильности»?), Но я не уверен. Да, вы помещаете некоторые данные в сценарии, но вы почти НИКОГДА не меняете их, и даже если вы их измените, они могут быть исправлены в секундах / минутах.
Что вы используете в своих проектах и почему?
И главный вопрос: какой вариант лучше?
Скажите, пожалуйста, свои мысли.