Развитие, управляемое поведением - Корнишон

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

Чтобы понять, что мы подразумеваем под конкретными требованиями, рассмотрим следующий пример:

Клиенты должны быть защищены от ввода неверных данных кредитной карты.

Против

Если клиент вводит номер кредитной карты, длина которого не совсем 16 цифр, при попытке отправки формы он должен быть снова отображен с сообщением об ошибке, сообщающим ему правильное количество цифр.

Последний не имеет двусмысленности, избегает ошибок и гораздо более тестируем.

Огурец предназначен для создания требований, которые являются более конкретными. В корнишоне приведенный выше пример выглядит так:

Особенность

Обратная связь при вводе неверных данных кредитной карты

В тестировании пользователей мы видели много людей, которые делают ошибки

Справедливо для всех сценариев ниже

Учитывая, что я выбрал предмет для покупки,

И я собираюсь ввести номер моей кредитной карты

Сценарий - номер кредитной карты слишком короткий Определение сценария

Когда я ввожу номер карты длиной менее 16 цифр

И все остальные детали верны

И я отправляю форму Шаги

Тогда форма должна быть переиздана

И я должен увидеть сообщение, сообщающее мне правильное количество цифр

Огурец Формат и синтаксис

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

  • Особенность

  • сценарий

  • Дано, Когда, Тогда, И, Но (Шаги)

  • Фон

  • План сценария

  • Примеры

  • "" "(Док Док)

  • | (Таблицы данных)

  • @ (Теги)

  • # (Комментарии)

  • *

Особенность

Ключевое слово Feature используется для описания функции программного обеспечения и для группировки связанных сценариев. Функция имеет три основных элемента -

  • Ключевое слово - Feature.

  • Имя функции, указанное в той же строке, что и ключевое слово Feature.

  • Необязательное (но настоятельно рекомендуемое) описание, которое может занимать несколько строк, т. Е. Весь текст между строкой, содержащей ключевое слово Feature, и строкой, начинающейся с Scenario, Background или Scenario Outline.

В дополнение к имени и описанию компоненты содержат список сценариев или контуров сценариев и необязательный фон.

Файл .feature обычно называют именем элемента, переводя его в нижний регистр и заменяя пробелы подчеркиванием. Например,

feedback_when_entering_invalid_credit_card_details.feature

Чтобы идентифицировать Функции в вашей системе, вы можете использовать так называемый «шаблон внедрения функций».

Чтобы <достичь какой-то цели> как <тип пользователя>, я хочу <a функцию>

Описания

Некоторые части документов Gherkin не обязательно должны начинаться с ключевого слова.

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

сценарий

Чтобы выразить поведение вашей системы, вы присоединяете один или несколько сценариев к каждой функции. Типично видеть от 5 до 20 сценариев для каждой функции, чтобы полностью указать все варианты поведения этой функции.

Сценарии следуют следующей схеме -

  • Опишите начальный контекст

  • Опишите событие

  • Опишите ожидаемый результат

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

  • Дано - установить контекст

  • Когда - выполнить действие

  • Потом - проверь результат

Эти ключевые слова обеспечивают читаемость сценария.

пример

Сценарий - снятие денег со счета.

  • Учитывая, что у меня есть 100 долларов на моем счете.

  • Когда я запрашиваю 20 долларов.

  • Тогда 20 долларов должны быть распределены.

Если несколько шагов « дано» или « когда» расположены друг под другом, вы можете использовать « И» или « Но» . Они позволяют детально определять сценарии.

пример

Сценарий - попытка снятия с использованием украденной карты.

  • Учитывая, что у меня есть 100 долларов на моем счете.

  • Но моя карта недействительна.

  • Когда я запрашиваю 50 долларов.

  • Тогда моя карта не должна быть возвращена.

  • И мне нужно сказать, чтобы связаться с банком.

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

  • Невозможно, чтобы условие успеха одного сценария зависело от того, что перед ним был выполнен другой сценарий.

  • Каждый сценарий создает свой конкретный контекст, выполняет одну вещь и проверяет результат.

Такие сценарии дают следующие преимущества:

  • Тесты будут проще и понятнее.

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

  • В зависимости от вашей системы вы можете запускать тесты параллельно, сокращая время, необходимое для выполнения всех ваших тестов.

План сценария

Если вам нужно написать сценарии с несколькими входами или выходами, вам может понадобиться создать несколько сценариев, которые отличаются только своими значениями. Решение состоит в том, чтобы использовать схему сценария. Чтобы написать схему сценария,

  • Переменные в шагах схемы сценария отмечены <и>.

  • Различные значения для переменных приведены в качестве примеров в таблице.

пример

Предположим, вы пишете функцию для добавления двух чисел на калькуляторе.

Особенность - Добавить.

Scenario Outline: Add two numbers.
Given the input "<input>"
When the calculator is run
Then the output should be <output>"
Examples
| input    | output |
| 2+2      | 4      | 
| 98+1     | 99     |
| 255+390  | 645    |

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