automation testing using cucumber tool
前回のSeleniumチュートリアルでは、 セレングリッド これは に 分散テストの実行 テストパスの実行を高速化する環境 。
この包括的なSeleniumトレーニングシリーズの最後に、高度な学習を行っています。 セレンテスト および関連する概念。
このチュートリアルと次のチュートリアルでは、 きゅうり– 受け入れテストを実行するためにSeleniumで使用されるBehaviorDriven Development(BDD)フレームワーク。
学習内容:
きゅうりはじめに
キュウリは、Webアプリケーションの受け入れテストを作成するために使用されるBehavior Driven Development(BDD)フレームワークに基づくツールです。これにより、ビジネスアナリスト、開発者、テスターなどが、読みやすく理解しやすい形式(平易な英語など)で機能検証を自動化できます。
キュウリの機能ファイルは、すべての人にとって優れたドキュメントとして役立ちます。 BDDフレームワークもサポートするJBehaveのような他の多くのツールがあります。当初、CucumberはRubyで実装され、その後Javaフレームワークに拡張されました。どちらのツールもネイティブJUnitをサポートしています。
ビヘイビア駆動開発はテスト駆動開発の拡張であり、特定のコードをテストするのではなく、システムをテストするために使用されます。 BDDとBDDテストの記述スタイルについて詳しく説明します。
Cucumberは、Selenium、Watir、Capybaraなどと一緒に使用できます。Cucumberは、Perl、PHP、Python、Netなどの他の多くの言語をサポートします。このチュートリアルでは、言語としてJavaを使用するCucumberに焦点を当てます。
きゅうりの基本
きゅうりを理解するためには、きゅうりのすべての特徴とその使い方を知る必要があります。
文字列配列に文字列を追加する方法
#1)機能ファイル:
機能ファイルは、テスト自動化ステップまたは受け入れテストを作成するために使用されるキュウリの重要な部分です。これは、ライブドキュメントとして使用できます。手順はアプリケーションの仕様です。すべての機能ファイルは、拡張子が.featureで終わります。
サンプル機能ファイル:
特徴 :ログイン機能機能
ログイン機能を確実に機能させるために、
きゅうりテストを実行して、動作していることを確認したい
シナリオ :ログイン機能
与えられた ユーザーがSOFTWARETETINGHELP.COMに移動します
いつ ユーザーは、ユーザー名を「USER」、パスワードを「PASSWORD」として使用してログインします
次に ログインは成功するはずです
シナリオ :ログイン機能
与えられた ユーザーがSOFTWARETETINGHELP.COMに移動します
いつ ユーザーは、ユーザー名を「USER1」、パスワードを「PASSWORD1」として使用してログインします。
次に エラーメッセージをスローする必要があります
#2)機能:
T 彼は、高レベルのビジネス機能(前の例を参照)とテスト対象のアプリケーションの目的に関する情報を提供します。誰もが最初の機能ステップを読むことで機能ファイルの意図を理解できるはずです。この部分は基本的に簡潔にされています。
#3)シナリオ:
基本的に、シナリオは、テスト中の特定の機能を表します。シナリオを見ることで、ユーザーはシナリオの背後にある意図とテストの内容を理解できるはずです。各シナリオは、与えられた、いつ、そしてフォーマットに従う必要があります。この言語は「ガーキン」と呼ばれます。
- 与えられた: 上記のように、givenは前提条件を指定します。基本的には既知の状態です。
- いつ :これは、何らかのアクションを実行する場合に使用されます。上記の例のように、ユーザーがユーザー名とパスワードを使用してログインしようとすると、アクションになります。 。
- 次に: 期待される結果または結果をここに配置する必要があります。インスタンスの場合:ログインが成功し、ページナビゲーションが成功したことを確認します。
- バックグラウンド: 各シナリオで実行する必要があるステップがある場合は常に、それらのステップをバックグラウンドに配置する必要があります。たとえば、ユーザーが各シナリオの前にデータベースをクリアする必要がある場合、それらの手順をバックグラウンドで実行できます。
- そして :そして、2つ以上の同じタイプのアクションを組み合わせるために使用されます。
例:
特徴 :ログイン機能機能
シナリオ :ログイン機能
与えられた ユーザーがSOFTWARETETINGHELP.COMに移動します
いつ ユーザーは、ユーザー名を「ユーザー」として使用してログインします
そして 「パスワード」としてのパスワード
次に ログインは成功するはずです
そして ホームページを表示する必要があります
sdlcの分析フェーズは何ですか?
背景の例:
バックグラウンド:
与えられた データベース管理者としてログインしたユーザー
そして すべてのジャンク値がクリアされます
#4)シナリオの概要:
シナリオの概要は、同じテストを異なるデータセットで実行する必要がある場合に使用されます。同じ例を見てみましょう。ユーザー名とパスワードの複数の異なるセットを使用してログイン機能をテストする必要があります。
特徴 :ログイン機能機能
ログイン機能を確実に機能させるために、
きゅうりテストを実行して、動作していることを確認したい
シナリオ概要 :ログイン機能
与えられた ユーザーがSOFTWARETESTINGHELP.COMに移動します
いつ ユーザーは、ユーザー名を次のように使用してログインします< ユーザー名 >とパスワード< パスワード >>
次に ログインは成功するはずです
例:
|ユーザー名|パスワード|
|トム| password1 |
|ハリー| password2 |
|ジェリー| password3 |
注意:
- 上記の例に示すように、列名はパラメーターとしてに渡されます いつ ステートメント。
- シナリオの代わりに、シナリオアウトラインを使用する必要があります。
- 例は、表形式でさまざまな引数を渡すために使用されます。垂直パイプは、2つの異なる列を分離するために使用されます。例には、多くの異なる列を含めることができます。
#5)タグ:
Cucumberはデフォルトで、すべての機能ファイルのすべてのシナリオを実行します。リアルタイムプロジェクトでは、常に実行する必要のない何百もの機能ファイルが存在する可能性があります。
例えば :スモークテストに関連する機能ファイルは、常に実行する必要はありません。したがって、スモークテストに関連し、@ SmokeTestタグを使用してキュウリテストを実行する各機能ファイルでタグを無煙として言及するとします。 Cucumberは、指定されたタグに固有の機能ファイルのみを実行します。以下の例に従ってください。 1つのフィーチャファイルで複数のタグを指定できます。
単一タグの使用例:
@SmokeTest
特徴 :ログイン機能機能
ログイン機能を確実に機能させるために、
きゅうりテストを実行して、動作していることを確認したい
シナリオ概要 :ログイン機能
与えられた ユーザーがSOFTWARETESTINGHELP.COMに移動します
いつ ユーザーは、ユーザー名を次のように使用してログインします< ユーザー名 >とパスワード< パスワード >>
次に ログインは成功するはずです
例:
|ユーザー名|パスワード|
|トム| password1 |
|ハリー| password2 |
|ジェリー| password3 |
複数のタグの使用例:
以下の例に示すように、同じ機能ファイルをスモークテストシナリオとログインテストシナリオに使用できます。スモークテスト用のスクリプトを実行する場合は、@ SmokeTestを使用します。同様に、ログインテストのためにスクリプトを実行する場合は、@ LoginTestタグを使用します。
シナリオだけでなく、機能ファイルにも任意の数のタグを記載できます。
@SmokeTest @LoginTest
特徴 :ログイン機能機能
ログイン機能を確実に機能させるために、
きゅうりテストを実行して、動作していることを確認したい
シナリオ概要 :ログイン機能
c ++はcharをintに変換します
与えられた ユーザーがSOFTWARETETINGHELP.COMに移動します
いつ ユーザーは、ユーザー名とパスワードを使用してログインします
次に ログインは成功するはずです
例:
|ユーザー名|パスワード|
|トム| password1 |
|ハリー| password2 |
|ジェリー| password3 |
同様に、タグを指定して、機能ファイルで特定のシナリオを実行できます。特定のシナリオを実行するには、以下の例を確認してください。
特徴 :ログイン機能機能
ログイン機能を確実に機能させるために、
きゅうりテストを実行して、動作していることを確認したい
@positiveScenario
シナリオ :ログイン機能
与えられた ユーザーがSOFTWARETETINGHELP.COMに移動します
いつ ユーザーは、ユーザー名を「USER」、パスワードを「PASSWORD」として使用してログインします
次に ログインは成功するはずです
@negaviveScenario
シナリオ :ログイン機能
与えられた ユーザーがSOFTWARETETINGHELP.COMに移動します
いつ ユーザーは、ユーザー名を「USER1」、パスワードを「PASSWORD1」として使用してログインします。
次に エラーメッセージがスローされます
#6)JUnitランナー:
特定の機能ファイルを実行するには、cucumberは標準のJUnit Runnerを使用し、@ Cucumberでタグを指定します。オプション。カンマ区切りを使用して、複数のタグを指定できます。ここでは、レポートのパスと生成するレポートのタイプを指定できます。
JUnitランナーの例:
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith; @RunWith(Cucumber.class)@ Cucumber.Options(format = {'SimpleHtmlReport:report / smokeTest.html'}、tags = {'@smokeTest'})パブリッククラスJUnitRunner {} 同様に、キュウリに複数のタグを実行するように指示することができます。以下の例は、キュウリで複数のタグを使用してさまざまなシナリオを実行する方法を示しています。
import cucumber.api.junit.Cucumber; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @Cucumber.Options(format={'SimpleHtmlReport:report/smokeTest.html'},tags={'@smokeTest',”@LoginTest”}) Public class JUnitRunner { }
#7)キュウリレポート:
Cucumberは独自のHTML形式を生成します。ただし、Jenkinsまたはbambooツールを使用すると、より適切なレポートを作成できます。レポートの詳細については、キュウリの次のトピックで説明します。
キュウリプロジェクトのセットアップ:
キュウリプロジェクトのセットアップの詳細な説明は、次のチュートリアルで別途入手できます。プロジェクトのセットアップの詳細については、CucumberチュートリアルPart2を参照してください。きゅうりに必要な追加のソフトウェアインストールはないことを忘れないでください。
機能ファイルの実装:
機能ファイルをテストするには、これらの手順をJavaで実装する必要があります。指定された、when、thenステートメントを含むクラスを作成する必要があります。 Cucumberはその注釈を使用し、すべてのステップがそれらの注釈に埋め込まれます(指定された場合、いつ)。各フレーズは「^」で始まり、Cucumberがステップの開始を理解できるようにします。同様に、各ステップは「$」で終わります。ユーザーは正規表現を使用して、さまざまなテストデータに合格できます。正規表現は、フィーチャステップからデータを取得し、ステップ定義に渡します。パラメータの順序は、機能ファイルから渡される方法によって異なります。プロジェクトのセットアップと機能ファイルとJavaクラス間のマッピングについては、次のチュートリアルを参照してください。
例:
以下の例は、機能ファイルを実装する方法を示しています。
この例では、SeleniumAPIを使用していません。これは、キュウリがスタンドアロンフレームワークとしてどのように機能するかを示すためのものです。セレンとキュウリの統合については、次のチュートリアルに従ってください。
public class LoginTest { @Given('^user navigates to SOFTWARETETINGHELP.COM$') public void navigatePage() { system.out.println(“Cucumber executed Given statement”); } @When('^user logs in using Username as '(.*)' and Password '(.*)'$') public void login(String usename,String password) { system.out.println(“Username is:”+ usename); system.out.println(“Password is:”+ password); } @When('^click the Submit button$') public void clickTheSubmitButton() { system.out.println(“Executing When statement”) } @Then('^Home page should be displayed$') public void validatePage() { system.out.println(“Executing Then statement”) } @Then('^login should be successful$') public void validateLoginSuccess() { system.out.println(“Executing 2nd Then statement”) } }
cucumber runnerクラスを実行すると、cucumberは機能ファイルのステップの読み取りを開始します。たとえば、@ smokeTestを実行すると、キュウリは次のようになります。 特徴 ステップと 与えられた の声明 シナリオ 。きゅうりが見つけたらすぐにステートメントを与えられて、同じ 与えられた ステートメントでJavaファイルが検索されます。同じステップがJavaファイルで見つかった場合、cucumberは同じステップに指定された関数を実行します。そうでない場合、cucumberはそのステップをスキップします。
結論
このチュートリアルでは、キュウリツールの機能とリアルタイムシナリオでの使用法について説明しました。
キュウリは、理解しやすく、読みやすく、ビジネス機能が含まれているため、多くのプロジェクトで最も人気のあるツールです。
次の章で 、cucumber – javaプロジェクトをセットアップする方法と、SeleniumWebDriverをCucumberと統合する方法について説明します。
推奨読書
- Cucumber Seleniumチュートリアル:Cucumber Java SeleniumWebDriverの統合
- 30以上の最高のSeleniumチュートリアル:実際の例でSeleniumを学ぶ
- Seleniumグリッドチュートリアル:クロスブラウザテストのセットアップと例
- Seleniumとの統合および機能テスト用のスポック
- Selenium用のMavenビルド自動化ツールとMavenプロジェクトセットアップの使用-Seleniumチュートリアル#24
- Selenium WebDriverの概要– Seleniumチュートリアル#8
- 初心者向けの詳細なEclipseチュートリアル
- WAVEアクセシビリティテストツールチュートリアル