cucumber gherkin tutorial
この有益なチュートリアルでは、Cucumber Gherkinフレームワークの利点と、Gherkin言語を使用して自動化スクリプトを作成する方法を明確な例とともに説明します。
Cucumberは、Behavior Driven Development(BDD)フレームワークに基づくツールです。 BDDは、単純なプレーンテキスト表現でアプリケーションの機能を理解するための方法論です。
ビヘイビア駆動開発フレームワークの主な目的は、ビジネスアナリスト、品質保証、開発者などのさまざまなプロジェクトの役割に、技術的な側面を深く掘り下げることなくアプリケーションを理解させることです。
キュウリツールは通常、アプリケーションの受け入れテストを作成するためにリアルタイムで使用されます。 Cucumberツールは、Java、Ruby、.Netなどの多くのプログラミング言語をサポートします。Selenium、Capybaraなどの複数のツールと統合できます。
学習内容:
ガーキンとは何ですか?
Gherkinは、Cucumberツールで使用される言語です。これは、アプリケーションの動作を英語で簡単に表現したものです。 Cucumberは、ドキュメント化の目的で機能ファイルの概念を使用します。機能ファイル内のコンテンツはGherkin言語で書かれています。
次のトピックでは、Cucumber Gherkinフレームワークの利点、CucumberとSeleniumの統合、機能ファイルとそれに対応するステップ定義ファイルおよびサンプル機能ファイルの作成について詳しく説明します。
キュウリガーキンフレームワークの一般的な用語
Cucumber Gherkinフレームワークは、機能ファイルの作成に不可欠な特定のキーワードを使用します。
次の用語は、機能ファイルで最も一般的に使用されます。
#1)機能:
機能ファイルは、被テストアプリケーション(AUT)の高レベルの説明を提供する必要があります。機能ファイルの最初の行は、次の説明に続くキーワード「機能」で始まる必要があります。アプリケーションテスト中。 Cucumberで規定されている標準に従って、機能ファイルには最初の行として次の3つの要素が含まれている必要があります。
- 機能キーワード
- 機能名
- 機能の説明(オプション)
featureキーワードの後には、機能名を続ける必要があります。機能ファイルの複数の行にまたがることができるオプションの説明セクションを含めることができます。機能ファイルの拡張子は.featureです。
#2)シナリオ:
シナリオは、テストする機能のテスト仕様です。理想的には、機能ファイルには、機能の一部として1つ以上のシナリオを含めることができます。シナリオには、複数のテストステップが含まれます。キュウリの基準によると、長いシナリオはステップ数が増えると表現力を失う傾向があるため、シナリオには3〜5のテストステップを含める必要があります。
シナリオには、次の手順を含めることができます。
- ユーザーが実行するアクション。
- アクションの期待される結果。
Gherkin言語では、シナリオに次のキーワードを含める必要があります。
- 与えられた
- いつ
- 次に
- そして
与えられた:
指定されたキーワードは、特定のシナリオを実行するための前提条件を指定するために使用されます。シナリオに複数のGivenステートメントが含まれる場合や、シナリオにGivenステートメントがない場合があります。
いつ:
このキーワードは、ボタンのクリック、テキストボックスへのデータの入力など、ユーザーが実行するアクションまたはイベントを指定するために使用されます。1つのシナリオに複数のwhenステートメントが存在する場合があります。
次に:
次に、キーワードを使用して、ユーザーが実行したアクションの期待される結果を指定します。理想的には、ユーザーアクションの期待される結果を理解するために、Whenキーワードの後にThenキーワードを続ける必要があります。
そして:
また、keywordは、複数のステートメントを組み合わせるための接続詞キーワードとして使用されます。 例えば、 シナリオ内の複数のGivenステートメントとWhenステートメントは、キーワード「And」を使用して組み合わせることができます。
#3)シナリオの概要:
シナリオの概要は、シナリオをパラメーター化する方法です。
これは、複数のデータセットに対して同じシナリオを実行する必要があるが、テスト手順は同じままである場合に理想的に使用されます。シナリオの概要の後には、各パラメータの値のセットを指定するキーワード「例」を続ける必要があります。
以下は、シナリオの概要の概念を理解するための例です。
例:
シナリオの概要: ファイルをアップロードする
与えられた ユーザーがファイルのアップロード画面を表示していること。
いつ ユーザーが(参照)ボタンをクリックします。
そして ユーザーがアップロードテキストボックスに入力します。
そして ユーザーがEnterボタンをクリックします。
次に ファイルのアップロードが成功したことを確認します。
例:
|ファイル名|
| file1 |
| file2 |
シナリオアウトライン内のパラメータは、文字「」で指定する必要があります。パラメーターのデータ値のリストは、パイプ(|)記号を使用して指定する必要があります。
#4)背景:
backgroundキーワードは、複数の指定されたステートメントを1つのグループにグループ化するために使用されます。
これは通常、機能ファイルの各シナリオで同じステートメントのセットが繰り返される場合に使用されます。シナリオごとに指定されたステートメントを繰り返し指定する代わりに、最初のシナリオの前にキーワード「背景」を使用して指定できます。
例:
バックグラウンド:
指定されたユーザーはアプリケーションのログインページにいます
キュウリガーキンフレームワークの利点
以下に示すのは、Cucumberを今日の企業の世界で急速に進化するアジャイル手法に理想的な選択肢にするCucumberGherkinフレームワークの利点です。
- キュウリはオープンソースのツールです。
- プレーンテキスト表現により、技術者以外のユーザーがシナリオを理解しやすくなります。
- これは、ビジネスアナリスト、開発者、品質保証担当者など、さまざまなプロジェクトの利害関係者間のコミュニケーションのギャップを埋めます。
- Cucumberツールを使用して開発された自動化テストケースは、保守と理解が容易です。
- SeleniumやCapybaraなどの他のツールと簡単に統合できます。
キュウリとセレンの統合
キュウリとセレンは、2つの最も強力な機能テストツールです。 CucumberとSeleniumWebdriverの統合は、プロジェクトチームのさまざまな非技術メンバーがアプリケーションフローを理解するのに役立ちます。
CucumberをSeleniumWebdriverと統合するために従うべき手順を以下に示します。
ステップ1:
必要なJARファイルをダウンロードすることで、CucumberをSeleniumWebdriverと統合できます。
以下に、SeleniumWebdriverでCucumberを使用するためにダウンロードするJARファイルのリストを示します。
- カバレッジ-2.1.1.jar
- cucumber-core-1.2.2.jar
- cucumber-java-1.2.2.jar
- cucumber-junit-1.2.2.jar
- cucumber-jvm-deps-1.0.3.jar
- きゅうり-reporting-0.1.0.jar
- gherkin-2.12.2.jar
- hamcrest-core-1.3.jar
- junit-4.11.jar
上記のJARファイルはMavenからダウンロードできます ウェブサイト 。
上記の各JARファイルは、上記のWebサイトから個別にダウンロードする必要があります。
ステップ2:
Eclipseで新しいプロジェクトを作成し、上記のJARファイルをプロジェクトに追加します。 JARファイルをプロジェクトに追加するには、を右クリックします。 プロジェクト->ビルドパス->ビルドパスの構成。
クリック 外部JARを追加する ボタンをクリックして、上記のJARファイルのリストをプロジェクトに追加します。

ステップ3:
機能ファイルとステップ定義ファイルを作成する前に、NaturalプラグインをEclipseにインストールする必要があります。それはコピーして貼り付けることによって行うことができます URL に ヘルプ->新しいソフトウェアのインストール-> URL

クリックしてください 次へボタン プラグインをEclipseにインストールします。

フィーチャーファイルの作成
プロジェクト構造内の機能ファイルとステップ定義ファイル用に別々のフォルダーを作成します。ステップ定義ファイルにはJavaコーディング行が含まれ、機能ファイルにはGherkin言語の形式の英語ステートメントが含まれています。
- プロジェクトを右クリックして、機能ファイルを保存するための別のフォルダを作成します-> 新規->パッケージ 。
- フィーチャーファイルは、プロジェクト/パッケージを右クリック->に移動して作成できます。 新規->ファイル 。

- 機能ファイルの名前を指定します。機能ファイルの後に拡張子.featureを付ける必要があります

アンドロイドのための最高の無料のmp3音楽ダウンローダー
- プロジェクトの構造は以下のようになります。

ステップ定義ファイルの作成
機能ファイルの各ステップは、対応するステップ定義にマップする必要があります。 Cucumber Gherkinファイルで使用されるタグは、タグ@ Given、@ When、および@Thenを使用して、そのステップ定義にマップする必要があります。
ステップ定義ファイルの構文は次のとおりです。
構文:
@TagName(“ ^ Step Name $”)
public void methodName()
{{
メソッド定義
}
ステップ名の前には記号carat(^)を付け、接尾辞には記号($)を付ける必要があります。メソッド名は、Javaコーディング標準に従って受け入れられる任意の有効な名前にすることができます。メソッド定義には、Javaまたはテスターが選択したその他のプログラミング言語でのコーディングステートメントが含まれます。
フィーチャーファイルとステップ定義ファイルの例
フィーチャーファイルとステップ定義ファイルを作成するには、次のシナリオを使用できます。
シナリオ:
- テスト対象のアプリケーションのログインページを開きます。
- ユーザー名を入力してください
- パスワードを入力してください
- ログインボタンをクリックします。
- ユーザーログインが成功したかどうかを確認します。
機能ファイル:
上記のシナリオは、次のように機能ファイルの形式で記述できます。
特徴: テスト対象のアプリケーションにログインします。
シナリオ: アプリケーションにログインします。
与えられた Chromeブラウザを開き、アプリケーションを起動します。
いつ ユーザーは、ユーザー名フィールドにユーザー名を入力します。
そして ユーザーは(パスワード)フィールドにパスワードを入力します。
いつ ユーザーが(ログイン)ボタンをクリックします。
ステップ定義ファイル:
上記の機能では、以下に示すように、ファイルを対応するステップ定義ファイルにマップできます。フィーチャーファイルとステップ定義ファイルの間にリンクを提供するには、テストランナーファイルを作成する必要があることに注意してください。
以下は、機能ファイルごとのステップ定義ファイルの表現です。
package com.sample.stepdefinitions; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import cucumber.api.java.en.And; import cucumber.api.java.en.Given; import cucumber.api.java.en.When; public class StepDefinition { WebDriver driver; @Given('^Open Chrome browser and launch the application$') public void openBrowser() { driver = new ChromeDriver(); driver.manage().window().maximize(); driver.get('www.facebook.com'); } @When('^User enters username onto the UserName field$') public void enterUserName() { driver.findElement(By.name('username')).sendKeys('test@demo.com'); } @And('^User enters password onto the Password field$') public void enterPassword() { driver.findElement(By.name('password')).sendKeys('test@123'); } @When('^User clicks on Login button$') public void clickOnLogin() { driver.findElement(By.name('loginbutton')).click(); } } TestRunnerクラスは、機能ファイルとステップ定義ファイルの間のリンクを提供するために使用されます。 以下は、TestRunnerクラスがどのように見えるかのサンプル表現です。 TestRunnerクラスは通常、クラス定義のない空のクラスです。
Package com.sample.TestRunner import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions(features='Features',glue={'StepDefinition'}) public class Runner { } 機能ファイルとステップ定義ファイルを実行するには、TestRunnerクラスファイルを実行する必要があります。
例
以下は、さまざまなシナリオの機能ファイル表現です。
例1:
ユーザー名とパスワードがログインページで利用可能かどうかを確認するには:
特徴: ログインページのユーザー名とパスワードのフィールドの表示を確認します。
シナリオ: ユーザー名とパスワードのフィールドの表示を確認します。
与えられた ユーザーはFirefoxブラウザーを開き、テスト対象のアプリケーションに移動します。
いつ ユーザーはログインページに移動します。
次に ログインページのユーザー名フィールドの表示を確認します。
そして ログインページのパスワードフィールドの表示を確認します。
例2:
以下は、CucumberGherkinのシナリオアウトラインキーワードの例です。
特徴: 複数のテストデータセットでログインが成功したかどうかを確認します。
シナリオの概要: 複数のテストデータセットでログインが成功したかどうかを確認します。
与えられた Chromeブラウザを開き、アプリケーションを起動します。
いつ ユーザーは「ユーザー名」フィールドに入力します。
そして ユーザーは(パスワード)フィールドに入力します。
いつ ユーザーが(ログイン)ボタンをクリックします。
例:
|ユーザー名|パスワード|
| user1 | password1 |
| user2 | password2 |
結論
- BDDは、単純なプレーンテキスト表現でアプリケーションの機能を理解するための方法論です。
- Cucumberは、ビヘイビア駆動開発を使用してアプリケーションの受け入れテストを作成するツールです。これは、さまざまなプロジェクトの利害関係者間のコミュニケーションのギャップを埋めるために使用されます。
- Cucumberの主な用途は、技術者以外のユーザーによる機能ファイルの使用を理解するための単純さにあります。
ガーキン言語を使用してこのキュウリツールを試すのに遅すぎることはありません。