メインコンテンツへスキップ
SDETRole
SDETRole

用語集 · UI 自動化

Gherkin(ガーキン)

英語: Gherkin

別名: ガーキン, Gherkin記法, Given-When-Then, Given/When/Then

定義

BDD のシナリオを .feature ファイルに書くための Given-When-Then 形式のプレーンテキスト構文で、Cucumber などのツールが自動テストとして実行します。

Gherkin は、ソフトウェアの振る舞いを具体例として記述するための、小さな構造化言語です。各ファイルは .feature という拡張子を持ち、複数の Scenario からなる 1 つの Feature を含みます。各シナリオは Given(前提)、When(操作)、Then(期待結果)で始まるステップの並びです。Cucumber などのツールは各ステップをコード内のステップ定義に対応付けるので、同じテキストがドキュメントであると同時に自動テストにもなります。

具体例

Feature: Password reset

  Background:
    Given a registered user "ada@example.com"

  Scenario: Reset link is sent for a known email
    When she requests a password reset for "ada@example.com"
    Then a reset email is sent to "ada@example.com"
    And the link expires after 30 minutes

  Scenario Outline: Weak passwords are rejected
    When she sets her new password to "<password>"
    Then she sees the error "<message>"

    Examples:
      | password | message                       |
      | abc      | Use at least 12 characters    |
      | password | This password is too common   |

対応する Java と Cucumber のステップ定義は次のとおりです。

@When("she sets her new password to {string}")
public void setNewPassword(String password) {
    resetPage.setPassword(password);
}

知っておきたいキーワード

  • And / But は読みやすさのために、直前のステップの種類を引き継ぎます。
  • Background はファイル内のすべてのシナリオの前に実行されます。短く保ちます。
  • Scenario Outline と Examples は表の行ごとにシナリオを 1 回実行します。Gherkin 形式のデータ駆動テストです。
  • シナリオの上に付ける @smoke や @wip などの タグ で、実行するサブセットを選択できます。
  • Rule(Gherkin 6 以降)は、シナリオを、それが例示するビジネスルールの下にグループ化します。

良いシナリオの書き方

  • 1 シナリオに 1 つの振る舞い。 When/Then の組が複数あるなら、たいていは 2 つのシナリオに分けるべきです。
  • 命令的ではなく宣言的に。 「パスワードのリセットを要求する」の方が、フィールドへの入力やボタンのクリックを 3 ステップで書くより優れています。
  • 具体的な値。 実際の例(「120.00」「Gold」)は、あいまいな表現(「大口の注文」)では隠れてしまう誤解を明らかにします。
  • 三人称または一貫したペルソナ。 「私」「ユーザー」「名前付きのペルソナ」が混在すると、ステップライブラリが膨れ上がります。

キーワードを入力すると SDETRole 全体を検索できます。

Pagefind による全文検索 · ブラウザ内で動作します 検索ページを開く →