Cucumber-features
キュウリ-機能
- 機能*は、プロジェクトのスタンドアロンユニットまたは機能として定義できます。 ソーシャルネットワーキングサイトの非常に一般的な例を見てみましょう。 この製品/プロジェクトの機能はどのように見えますか? いくつかの基本的な機能を決定することができます-
- ソーシャルネットワーキングサイトからユーザーを作成および削除します。
- ソーシャルネットワーキングサイトのユーザーログイン機能。
- ソーシャルネットワーキングサイトで写真やビデオを共有する。
- 友達リクエストを送信します。
- ログアウト。
今では、テスト対象の製品の各独立した機能が、Cucumberについて話すときの機能と呼ばれることは明らかです。 後でテストを開始するときのベストプラクティスです。テストスクリプトを作成する前に、テストする機能を決定する必要があります。
通常、機能には、その機能についてテストするシナリオのリストが含まれています。 機能、テストされる機能およびシナリオに関する説明を保存するファイルは、*機能ファイル*と呼ばれます。 機能ファイルの詳細については、次の章で説明します。
Gherkinsでテスト中の機能を表すキーワードは「機能」です。 推奨されるベストプラクティスは、機能ファイルの機能タイトルの下に機能の簡単な説明を書くことです。 これは、優れたドキュメントの必要性も満たします。
例
機能-ソーシャルネットワーキングサイトのログイン機能。
ユーザー名とパスワードが正しい場合、ユーザーはソーシャルネットワーキングサイトにログインできる必要があります。
ユーザー名とパスワードが正しくない場合、ユーザーにエラーメッセージが表示されます。
ユーザー名とパスワードが正しい場合、ユーザーはホームページに移動する必要があります。
機能ファイル
Cucumberテストが書き込まれるファイルは、*機能ファイル*と呼ばれます。 テスト対象の機能ごとに個別の機能ファイルを用意することをお勧めします。 機能ファイルの拡張子は「.feature」である必要があります。
必要な数の機能ファイルを作成できます。 体系化された構造を持つには、各機能に1つの機能ファイルが必要です。
例-
Sr.No | Feature | Feature File name |
---|---|---|
1 | User Login | userLogin.feature |
2 | Share the Post | sharePost.feature |
3 | Create Account | createAccount.feature |
4 | Delete Account | deleteAccount.feature |
機能名、機能ファイル名に使用される命名規則は、個人の選択に依存します。 Cucumberには名前に関する基本的なルールはありません。
シンプルな機能ファイルは、次のキーワード/部分で構成されています-
- 機能-テスト中の機能の名前。
- 説明(オプション)-テスト対象の機能について説明します。
- シナリオ-テストシナリオとは何ですか。
- 指定-テストステップを実行する前の前提条件。
- When -次のステップを実行するために一致する特定の条件。
- Then -WHENに記載されている条件が満たされた場合にどうなるか。
例
機能-ソーシャルネットワーキングサイトでのユーザーログイン。
ユーザー名とパスワードが正しい場合、ユーザーはソーシャルネットワーキングサイトにログインできる必要があります。
ユーザー名とパスワードが正しくない場合、ユーザーにエラーメッセージが表示されます。
ユーザー名とパスワードが正しい場合、ユーザーはホームページに移動する必要があります。
概要-ソーシャルネットワーキングサイトのログイン機能。
指定されたユーザーはFacebookに移動します。 「<ユーザー名>」としてユーザー名を入力し、「<パスワード>」としてパスワードを入力すると。 次に、ログインが失敗します。
| username | password |
| username1 | password1 |
*AND* キーワードは、2つの条件の組み合わせを示すために使用されます。 *AND* は、 *GIVEN、WHEN* 、 *THEN* などの他のキーワードと一緒に使用できます。
機能ファイルにはロジックの詳細は記述されていません。
ステップの定義
テストシナリオを定義した機能ファイルを用意しました。 ただし、これは完了した作業ではありません。 キュウリは、機能ファイルで概説されている特定のシナリオでどのコードが実行されるかを実際には知りません。
これにより、中間のステップ定義ファイルが必要になります。 ステップ定義ファイルは、機能ファイルで定義されたシナリオの各ステップと実行される機能のコードとの間のマッピングを保存します。
そのため、Cucumberは機能ファイルで言及されているシナリオのステップを実行するときに、ステップ定義ファイルをスキャンして、どの関数を呼び出すかを判断します。
ステップ定義ファイルの例
public void goToFacebook() {
driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@When "^user logs in using Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$"
public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
driver.findElement(By.id("email")).sendKeys(arg1);
driver.findElement(By.id("pass")).sendKeys(arg2);
driver.findElement(By.id("u_0_v")).click();
}
@Then"^login should be unsuccessful$"
public void validateRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
したがって、各関数では、各テストステップで実行するコード(つまり、 GIVEN/THEN/WHEN)、ステップ定義ファイル内に記述できます。 各ステップでコード/関数が定義されていることを確認してください。
この関数はJava関数にすることができます。この場合、テスト手順を自動化するためにJavaコマンドとSeleniumコマンドの両方を使用できます。