English Japanese
English Japanese

Behaviour-Driven Development with Gherkin

Gherkinとは?

Gherkinは、Cucumber BDDフレームワークの一部であり、少数のキーワードを中心に構成されたシンプルな自然言語構文です。振る舞い駆動開発(BDD)をサポートするために設計されており、そのシンプルで構造化された形式により、スキルセットを問わず、プロジェクトに関わるすべての人が理解しやすくなっています。

プロジェクトのスポンサーや技術者以外のチームメンバーも、ビジネス要件に直接沿ったテストシナリオを容易に作成・理解できます。同時に、Gherkinはテスト担当者や自動化ツールがこれらのシナリオを効果的に実装できるよう、十分な構造とガイダンスを提供します。

この二重の目的を持つ設計により、Gherkinはビジネス要件と技術的な実装をつなぐ優れた橋渡し役となり、すべての関係者が品質保証プロセスに参加できるようになります。


以下は、Gherkinスクリプトの簡単な例です:

Java
Scenario: I want to add two values in the Calculator application
    Given the calculator app is running
    When I add 2*2
    Then The calculator displays the correct value of 4


RobotでのGherkinスクリプトの記述

フィーチャーファイルの作成

Robotでの最初のステップは、基本的なGherkinシナリオを保持する新しいスクリプトを作成することです。これは、他のRobotスクリプトと同じ方法で行います:File → New Script、またはプロジェクトツリー内のScriptsノードを右クリックして「New Script」を選択します。

これにより、reportコマンドのみを含む標準的なRobot(TPR)スクリプトが生成されます。ここで出力レポートの名前を必要に応じて変更してください。


このスクリプト内で、通常どおりGherkinキーワードを任意に組み合わせて、Gherkinスクリプトを記述するか、コピー&ペーストします。上記の例を使用すると、次のようになります:

image-20250407-125200.png

キーワードの後のテキストはすべて引用符で囲むことが重要です。これにより、Robotはその文字列をプロシージャのパラメータとして扱うことができます。

この段階では、Robotコンパイラは各行を構文エラーとしてマークしています。これは今の時点では問題なく、次のプロシージャ定義のステップで解消されるため、無視して構いません。


Robotアクションスクリプトの作成

フィーチャーファイルの記述が完了したので、定義されたタスクを実行するために必要な自動化ステップを定義する必要があります。これを実現するには、関連するスクリプトを作成し、キーワードのプロシージャを定義してから、Robotスクリプトコマンドを挿入し、それらを対応するフィーチャーキーワードに紐付ける必要があります。それでは、これらの各ステップを詳しく見ていきましょう…

新しいRobotスクリプトの作成

上記と同様に、通常と同じ方法で新しいRobotスクリプトを作成します:File → New Script、またはプロジェクトツリー内のScriptノードを右クリックして「New Script」を選択します

このスクリプトの名前は自由に付けられますが、一般的にはフィーチャーファイルの名前を反映させることが推奨されます。


キーワードプロシージャの定義

フィーチャーファイル内に存在する各キーワードは、Robotアクションスクリプト内で個別のProcedureとして定義する必要があります。

プロシージャ名は、「キーワード」を表す最初の単語全体を正確に反映させる必要があります。例:

Java
Procedure=<keyword> {
}


上記の例をそのまま使用すると、最もシンプルな形では、次のようなスクリプトになります:

コードを表示/コピー
Java
Procedure Scenario: {
    // Add scenario description here
}

Procedure Given {
    // Add actions to setup the case here
}

Procedure When {
    // Add actions to be performed here
}

Procedure Then {
    // Add verifications here
}
image-20250407-131854.png


Robotスクリプトコマンドの挿入

キーワードの概要が決まったので、次はRobotがこのタスクを正常に実行するために行うべき具体的な自動化アクションを定義する段階に進みます。

これを実現するために、スクリプトレコーダー、ドラッグ&ドロップのコマンドジェネレーター、コンポーネントキャプチャ、ライブコードエディタなど、Robotのさまざまなスクリプト機能を活用できます。これにより、チームの技術者・非技術者を問わず、これらの自動化スクリプトを生成できます。

Robotの「Procedure」では、スペース区切りの値を変数として渡せることを覚えておいてください。


コードを表示/コピー
Java
Procedure Scenario: {
    // Add scenario description here
    Script "{1}"
}

Procedure Given {
    // Add actions to setup the case here
    Press Windows+R
    Typeline Calc
    Wait 3s
}

Procedure When {
    // Add actions to be performed here
    Typeline 4*4
}

Procedure Then {
    // Add verifications here
    Waitfor match method=tocr text=16 timeout=10s
}
image-20250407-143017.png


前述のとおり、これはProcedureの基本的な仕組みに従っていますが、その関係を視覚的に示すと次のとおりです:

image-20250407-160509.png


必要に応じて、他のコマンドをいくつでも挿入できます。例えば、実行ログや出力レポートに情報を書き込むための「Log」や、重要な検証ポイントの証跡を取得するための「Screenshot」コマンドなどが考えられます。

このシンプルな例には、クロスプラットフォームサポート、カスタムの失敗処理、検証ポイントは含まれていません。必要に応じて、標準的なベストプラクティスに従ってこれらを追加してください。例えば、次に進む前にアプリが正常に開いたことを確認する、といった対応です。



フィーチャーファイルとアクションスクリプトの関連付け

これは、元のフィーチャーファイルに、アクションスクリプトを指す1つのコマンドを追加するだけの簡単な作業です。これにより、Robotはどのフィーチャーがどのアクションに関連しているかを認識できます。

コードを表示/コピー
Java
Include Calculation.tpr

これをフィーチャーファイルに追加すると、コンパイラが直ちにプロシージャのリンクを検証し、構文の警告が解消されることがわかります。

image-20250407-144841.png


実行

これで、フィーチャーを実行する準備が整いました!

UI内での実行、コマンドラインでの実行、または他のアプリケーションとの連携による実行など、Robotのどの実行方法を使用する場合でも、対象は常にフィーチャーファイルである必要があります。

実行中、フィーチャーファイルはプロシージャ呼び出しを通じて必要なアクションを実行します。

スクリプトを実行するには、SUTに「接続」する必要があります。これは、UIで手動で行うか、フィーチャーファイルのヘッダーに「Connect」コマンドを追加するか、接続文字列をCLIの実行時パラメータとして渡すことで実現できます。


実行が成功すると、Result Managerにサマリー出力が表示されます。ここから「View」を選択すると、完全な出力レポートを開くことができます。

image-20250407-152804.png


ソースファイル

このRobotプロジェクトをダウンロードしたい場合は、こちらから行えます:BDD Example.zip

前提条件:

  • このサンプルは、Windows 11 SUTでの実行のみを想定して作成されています

  • フィーチャーファイルを実行する前に、Windows 11 SUTへのアクティブな接続を確立しておく必要があります。