Gherkin言語: フォーマット、構文、Gherkinテスト Cucumber

ガーキン言語とは何ですか?

ガーキン ビジネスで読みやすい言語で、実装の詳細に立ち入ることなくビジネス上の動作を記述するのに役立ちます。これは、テストを定義するためのドメイン固有言語です。 Cucumber 仕様の形式。ユースケースを記述するために平易な言語を使用し、ユーザーが動作テストからロジックの詳細を削除できるようにします。

Gherkin 言語のテキストは、自動テストのドキュメントおよびスケルトンとして機能します。 Gherkin 形式は、37 以上の言語に存在する TreeTop Grammar に基づいています。 したがって、37 以上の話し言葉でガーキンを作成できます。

このスクリプトは、次の XNUMX つの主な目的を果たします。

  • ユーザーシナリオを文書化する
  • 自動テスト (BDD) の作成

なぜガーキンなのか?

ガーキンの必要性は次の画像で簡単に説明できます。

ガーキン以前

ガーキン以前

ガーキンの後

ガーキンの後

ガーキン構文

Gherkin は YAML と同じ行指向言語であり、 Python各行は step と呼ばれ、キーワードで始まり、stop で終端が終わります。インデントにはタブまたはスペースが使用されます。

このスクリプトでは、コメントをどこにでも追加できますが、# 記号で始める必要があります。 Ghrekin のキーワード、when、then などを削除した後、各行を読み取ります。

典型的な Gherkin の手順は次のようになります。

Gherkin Scripts: 人間の原因と結果の概念を入力/プロセス/出力のソフトウェア概念に結び付けます。

ガーキン構文

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

Gherkin ドキュメントには拡張子 .feature が付いており、単に派手な拡張子が付いた単なるテスト ファイルです。 Cucumber Gherkin ドキュメントを読み取り、ソフトウェアが Gherkin 構文に従って動作することを検証するテストを実行します。

Gherkin で使用される重要な用語

  • 機能
  • 経歴
  • シナリオ
  • 与えられた
  • 日時
  • その後
  • だけど
  • シナリオ概要例

機能名には命名規則が使われますが、決まったルールはありません。 Cucumber 名前について。

機能

ファイルには拡張子 .feature が付いている必要があり、各機能ファイルには機能が XNUMX つだけ含まれている必要があります。 feature キーワードは、Feature: に追加され、その後にスペースと機能の名前が書き込まれます。

シナリオ

各機能ファイルには複数のシナリオが含まれる場合があり、各シナリオは Scenario: で始まり、その後にシナリオ名が続きます。

経歴

背景キーワードは、シナリオにコンテキストを追加するのに役立ちます。 シナリオのいくつかのステップを含めることができますが、唯一の違いは、各シナリオの前に実行する必要があることです。

与えられた

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」キーワードを使用すると、 結果 when ステップのアクションの後。 ただし、確認できるのは顕著な変化のみです。

構文:

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

そしてそしてしかし

When または Then を複数指定することもできます。

構文:

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 はテスト ステップです。 相互に交換して使用できます。 インタプリタはエラーを表示しません。 しかし、読んでも決して「意味」を理解できないでしょう。

Gherkin で使用される重要な用語
Gherkin で使用される重要な用語
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 スクリプトは企業経営者や開発者が簡単に理解できます
  • Gherkin Testing はビジネス要件をターゲットとしています
  • 機能仕様のかなりの部分がユーザーストーリーとして書かれています
  • 小規模な Gherkin コマンド セットを理解するのに専門家である必要はありません
  • Gherkin テスト ケースは、受け入れテストを自動テストに直接リンクします
  • テストケースの記述スタイルにより、コードを他のテストで再利用しやすくなります

ガーキンのデメリット

  • 高度なビジネス関与とコラボレーションが必要です
  • すべてのシナリオでうまく機能するとは限らない
  • テストの作成が不十分だと、テストの保守コストが簡単に増加する可能性があります

製品概要

  • Gherkin はキュウリ仕様の形式です
  • Gherkin は YAML と同じ行指向言語であり、 Python
  • ガーキン スクリプトは、原因と結果という人間の概念を入力/プロセスと出力というソフトウェアの概念に結び付けます。
  • Gherkin では、機能、背景、シナリオ、与えられた、いつ、その後、およびしかしが重要に使用されます
  • Gherkin では、各シナリオを個別に実行する必要があります
  • Gherkin の最大の利点は、プログラマ以外の人でも理解できるほどシンプルであることです
  • Gherkin Test は、すべての種類のシナリオでうまく機能するとは限りません