Мова корнішонів: формат, синтаксис і тест на корнішони Cucumber

Що таке мова корнішонів?

Ґеркін це мова для ділового читання, яка допомагає описати ділову поведінку, не вдаючись у деталі впровадження. Це доменно-спеціальна мова для визначення тестів Cucumber формат специфікацій. Він використовує зрозумілу мову для опису випадків використання та дозволяє користувачам видаляти логічні деталі з тестів поведінки.

Текст мовою корнішон виступає як документація та каркас ваших автоматизованих тестів. Формат Gherkin базується на граматиці TreeTop, яка існує в 37+ мовах. Тому ви можете написати свій корнішон 37+ розмовними мовами.

Цей сценарій служить двом основним цілям:

  • Сценарії користувача документів
  • Написання автоматизованого тесту (BDD)

Чому корнішон?

Необхідність корнішона можна легко пояснити наступними зображеннями

Перед огірком

Перед огірком

Після корнішона

Після корнішона

Синтаксис корнішона

Gherkin є рядково-орієнтованою мовою, як і YAML Python. Кожен рядок називається кроком і починається ключовим словом, а термінали закінчуються зупинкою. Для відступу використовується табуляція або пробіл.

У цьому сценарії коментар можна додати будь-де, але він має починатися зі знака #. Він читав кожен рядок після видалення ключових слів Грекіна, як надано, коли, тоді тощо.

Типові сходи корнішона виглядають так

Gherkin Scripts: поєднує людську концепцію причини та наслідку з програмною концепцією введення/процесу/виводу.

Синтаксис корнішона

Feature: Title of the Scenario
Given [Preconditions or Initial Context]
When [Event or Trigger]
Then [Expected output]

Документ Gherkin має розширення .feature і просто тестовий файл із привабливим розширенням. Cucumber читає документ Gherkin і виконує перевірку, щоб підтвердити, що програмне забезпечення поводиться відповідно до синтаксису Gherkin.

Важливі терміни, що використовуються в корнішонах

  • особливість
  • фон
  • сценарій
  • при
  • Коли
  • Потім
  • і
  • Можливості
  • Приклади плану сценарію

Угода про найменування використовується для назви функції. Однак тут немає встановлених правил Cucumber про імена.

особливість

Файл має мати розширення .feature, і кожен файл функції має мати лише одну функцію. Ключове слово функції разом із Feature: і після цього додавання буде вказано пробіл і назву функції.

сценарій

Кожен файл функції може мати кілька сценаріїв, і кожен сценарій починається зі Сценарій: за яким іде назва сценарію.

фон

Ключове слово Background допомагає додати контекст до сценарію. Він може містити деякі кроки сценарію, але єдина відмінність полягає в тому, що його слід запускати перед кожним сценарієм.

при

Ключове слово Given використовується для переведення системи у звичний стан до того, як користувач почне взаємодіяти з системою. Однак ви можете не записувати дії користувача в кроках Given, якщо Given у кроці «Переумова».

Синтаксис:

Given
Given - a test step that defines the 'context
Given I am on "/."

Коли

Коли крок має визначити дію, яку виконує користувач.

Синтаксис:

When
A When - a test step that defines the 'action' performed
When I perform "Sign In."

Потім

Використання ключового слова 'then' полягає в тому, щоб побачити результат після дії на кроці. Однак перевірити можна лише помітні зміни.

Синтаксис:

 Then
Then - test step that defines the 'outcome.'
Then I should see "Welcome Tom."

І & Але

Ви можете мати кілька вказівок, коли або Тоді.

Синтаксис:

But
A But - additional test step which defines the 'action' 'outcome.'
But I should see "Welcome Tom."
And - additional test step that defines the 'action' performed
And I write  "EmailAddress" with "Tomjohn@gmail.com."

Given, When, Then і, but є тестовими кроками. Ви можете використовувати їх як взаємозамінні. Інтерпретатор не відображає жодної помилки. Однак вони, безперечно, не матимуть жодного «сенсу» при прочитанні.

Важливі терміни, що використовуються в корнішонах
Важливі терміни, що використовуються в корнішонах
Given The login page is opening
When I input username, password and click the Login button 
Then I am on the Homepage

Приклади корнішонів

Приклад 1:

Feature:  Login functionality of social networking site Facebook. 
Given:  I am a facebook user. 
When: I enter username as username. 
And I enter the password as the password 
Then I should be redirected to the home page of facebook 

Сценарій, згаданий вище, стосується функції під назвою «вхід користувача».

Gherkin проаналізує кожен крок, записаний у файлі визначення кроку. Таким чином, кроки наведено у файлі функції, а файл визначення кроку має відповідати.

Приклад 2:

Feature: User Authentication Background:
Given the user is already registered to the website Scenario:
Given the user is on the login page
When the user inputs the correct email address
And the user inputs the correct password
And the user clicks the Login button
Then the user should be authenticated
And the user should be redirected to their dashboard
And the user should be presented with a success message 

Кращі практики використання огірка

  • Кожен сценарій слід виконувати окремо
  • Кожна функція повинна виконуватися одночасно
  • Інформацію про кроки слід показувати окремо
  • Пов’яжіть свій сценарій із вашими вимогами
  • Слідкуйте за тим, які сценарії слід включити в документ вимоги
  • Створюйте модульні та прості для розуміння кроки
  • Спробуйте поєднати всі ваші спільні сценарії

Переваги корнішона

  • Корнішон досить простий для розуміння непрограмістами
  • Програмісти можуть використовувати його як надійну базу для початку своїх тестів
  • Це робить історії користувачів легшими для засвоєння
  • Керівники компаній і розробники можуть легко зрозуміти сценарій Gherkin
  • Тестування корнішонів відповідає бізнес-вимогам
  • Значна частина функціональних специфікацій написана як історії користувачів
  • Вам не потрібно бути експертом, щоб зрозуміти невеликий набір команд Gherkin
  • Gherkin Test case пов’язує приймальні тести безпосередньо з автоматизованими тестами
  • Стиль написання тестів полегшує повторне використання коду в інших тестах

Недоліки корнішона

  • Це вимагає високого рівня ділової взаємодії та співпраці
  • Може не працювати добре в усіх сценаріях
  • Погано написані тести можуть легко збільшити витрати на обслуговування тестів

Підсумки

  • Корнішон – це формат специфікації огірка
  • Gherkin є рядково-орієнтованою мовою, як і YAML Python
  • Gherkin Scripts поєднує людську концепцію причини та наслідку з програмною концепцією введення/процесу та виведення
  • Feature, Background, Scenario, Given, When, Then, And But важливо використовуються в Gherkin
  • У Gherkin кожен сценарій має виконуватися окремо
  • Найбільша перевага Gherkin досить проста для розуміння непрограмістами
  • Тест на корнішони може не працювати належним чином у всіх типах сценаріїв