Gherkin記法

がーきんきほう

Gherkin記法

Gherkin記法(ガーキン記法)とは、ソフトウェアの振る舞いを Given(前提)・When(操作)・Then(結果)の 3 ステップで自然言語風に記述するための構造化フォーマットである。テスト自動化ツール Cucumber が読み取る .feature ファイルの標準記法として広く使われている。

なぜ Gherkin なのか

テスト仕様書を開発者がコードで、ビジネス側が日本語や英語のドキュメントで、それぞれ別々に管理する現場は多い。仕様変更のたびに両方を更新する必要があり、ズレが蓄積する。

Gherkin記法はこの問題を「実行可能な仕様書」というアプローチで解決する。ビジネス担当者が読める自然言語に近い構文でありながら、そのまま自動テストとして実行できる。仕様書とテストコードが同一ファイルに収まるため、乖離が構造的に起きにくい。

基本構文

.feature ファイルの典型的な構造は以下のとおり。

gherkin
1Feature: ユーザーログイン 2 3 Scenario: 正しい認証情報でログインできる 4 Given ログインページを表示している 5 When メールアドレス "user@example.com" を入力する 6 And パスワード "correct-password" を入力する 7 And ログインボタンをクリックする 8 Then ダッシュボードが表示される

Feature が機能単位のまとまり、Scenario が個別のテストケースに対応する。And / But で条件を追加でき、Scenario Outline + Examples テーブルでパラメータ化も可能。

日本語を含む 70 以上の自然言語に対応しており、キーワードをそのままローカライズできる点も特徴の一つ。

BDD との関係

Gherkin記法は BDD(振る舞い駆動開発)のプラクティスから生まれた。BDD では「ソフトウェアが何をすべきか」を利害関係者全員が共有できる形で記述することを重視する。Gherkin はその記述フォーマットを標準化したもので、Cucumber・Behave・SpecFlow といったフレームワークが Gherkin ファイルをパースしてテストを実行する。

筆者のチームでは受け入れテストを Gherkin で書き始めてから、QA と開発者のレビュー会議で「この Scenario が通ればリリース可」という合意形成が格段に速くなった。

導入時の落とし穴

万能ではない。ステップ定義(Given/When/Then の裏側で実行される実装コード)の粒度設計を誤ると、似たようなステップが大量に増殖して保守コストが跳ね上がる。また、UI の細かい操作を Gherkin で逐一書くと冗長になりがちで、E2Eテストのすべてを Gherkin 化するより、ビジネスルールの検証に絞って適用するほうが費用対効果は高い場合が多い。