発行:August 16、2020
Serenity BDDフレームワークの使い方 – 概要
Serenity BDD フレームワークの概要
セレニティは、開発者が理解しやすく、より構造化された受け入れ基準を記述できるようにするオープンソースのレポートライブラリです。 テスト自動化プロジェクト各テストについて有益なレポートを生成するだけでなく、各テストケースでテストされた機能のリストも表示します。実行されたテストの詳細とテストされた要件により、Serenity BDD Frameworkはアプリケーションの動作と機能をより深く理解するのに役立ちます。
Serenity BDDフレームワークの優れた点は、複数の自動受け入れテストソリューションをサポートしていることです。JUnitと併用することで、クリーンでメンテナンス性の高い受け入れ基準を迅速に記述したり、WebDriverと統合してSeleniumでWebアプリケーションをテストしたりできます。また、RestAssuredをサポートしており、REST APIのテストも可能です。Serenityでは、Cucumberなどのあらゆるビヘイビア駆動開発(BDD)ツールを使用できます。JIRAなどのテストケース管理ツールや、ディレクトリベースのアプローチを選択することも可能です。
BDD とは何ですか?
BDDは行動駆動開発の略称です。実際には、 テスト駆動開発 コードを書く前にテストケースを書くことを推奨するTDD(Test Development Driven Development:テスト駆動開発)と、システムの動作とユーザーの動作に焦点を当てたBDD(Test Development Driven Development:テスト開発駆動開発)の2つのアプローチがあります。BDDも同様のアプローチを採用していますが、システムの動作とユーザーの動作に焦点を当てています。BDD環境では、テストは共通の言語で記述されるため、すべての関係者(技術者と非技術者)がアプリケーションの動作を理解できます。また、異なるチーム間の円滑な連携も促進されます。英語などの共通言語でテストケースを記述できることは、受け入れテストの基準を準備する際に開発者にとって大きなメリットとなります。リアルタイムのシナリオを描写したテストケースを記述できます。
BDDの歴史と主要概念
2003年にBDD手法の開発を先導したのはダニエル・テルホルスト=ノースでした。2004年には、リズ・キーオがクリス・マットと共にこの概念に貢献し、ユーザーストーリーをキャプチャして実行可能な形式に変換するためのテンプレート「Given / When / Then」を開発しました。この概念は、エリック・エバンスが書いた「ドメイン駆動設計」に触発されました。また、レイチェル・デイヴィスが作成したユーザーストーリーテンプレート「As a / I / So that」からもインスピレーションを得ました。2005年には、デイブ・アステルズ、デビッド・チェリムスキー、スティーブン・ベイカー、アスラック・ヘレソイがRubyでBDDをサポートするRSpecプロジェクトを設立しました。このプロジェクトを改良する中で、アスラックはRSpec Story Runnerの改良版を考案し、それをCucumberと名付けました。
BDD アプローチでは、要件はユーザー ストーリーと有効なユーザー シナリオに変換されます。
BDDテンプレートの例は次の通りです。
- 与えられた
- その後
別の例であります
- (プレミアム顧客として)
- 私は(ファッションアクセサリー部門の新着商品を閲覧したい)
- 最高の服を注文できるように
BDDは学習曲線が最小限でwing to 共通言語の使用。これにより、異なるチーム間のシームレスなコラボレーションが可能になります。ここでは、テストではなく動作を定義します。つまり、受け入れ基準はコードを開発する前に定義されるため、ビジネスオーナーは機能について考えるのではなく、アプリケーションの動作を明確に理解できるため、メリットがあります。
Cucumber と Serenity は、人気のある BDD フレームワークです。
Serenity BDDフレームワークを使い始める
これらのコンポーネントはSerenity BDDフレームワークを実行します。これらはすべて必須です。
- Java
- IntelliJ IDE
- 受け台
- セレニティ BDD プラグイン
ステップ1:Javaのインストール
Java をダウンロードするには、次のリンクにアクセスしてください。
https://www.oracle.com/in/java/technologies/javase-downloads.html
Java開発キット(JDK)をダウンロードする
Java SE 14.0.2は、Java Standard Editionプラットフォームの最新リリースです。ライセンス契約に同意してダウンロードを続行してください。
ソフトウェアがダウンロードされたら、アプリケーションをダブルクリックして Java をインストールします。
保存先フォルダを選択し、「次へ」をクリックします。
セットアップパッケージは、お使いのマシンにJavaをインストールします。「閉じる」をクリックしてインストールを完了してください。
Java が正常にインストールされたかどうかを確認するには、コマンド プロンプトを開き、version コマンドを入力します。
- java -version
ステップ2: 環境変数を設定する
Javaを使用するには、環境変数を設定する必要があります。システム環境変数とユーザー環境変数の設定にJavaのパスを追加してください。
- システム -> 詳細システム設定 -> 詳細設定 -> 環境変数をクリックします。
システム変数とユーザー変数パスの下に Java パスが追加されているかどうかを確認します。
これで Java が使用できるようになりました。
ステップ3: IDEをインストールする
Serenity BDDフレームワークを使用してテストを記述および実行するには、最新のIDEが必要です。IntelliJまたはEclipseのいずれかを選択できます。IntelliJをインストールするには、次のウェブサイトにアクセスしてください。
https://www.jetbrains.com/idea/
「ダウンロード」ボタンをクリックしてツールをダウンロードしてください。IntelliJには2つのバージョンがあります。30日間の試用期間が付与されるUltimateバージョンと、無料でオープンソースのCommunityバージョンです。テスト目的の場合はCommunityバージョンを選択してください。
次に、IntelliJ ソフトウェアをダブルクリックして、インストール手順を開始します。
「次へ」をクリックしてインストール場所を選択します。
次の画面では、インストール オプションをカスタマイズするように求められます。
デスクトップショートカットを作成したり、コンテキストメニューを更新したりできます。注目すべき重要な機能は「PATH変数を更新」オプションです。このオプションを選択すると、環境変数が自動的に設定されます。つまり、システム変数やユーザー変数にIntelliJのパスを手動で追加する必要はありません。
次の画面でスタート メニュー オプションを選択し、[次へ] をクリックしてインストールを続行します。
インストールが完了すると、再起動を求めるメッセージが表示されます。後で手動で再起動することもできます。
システムが再起動したら、IntelliJ IDE を開きます。初めて開く際は、プライバシーポリシーに同意するように求められます。
次の画面で、データ共有の設定を選択します。
これで、IDE が開きます。
これで使用準備完了です。UIバージョンはDracula(ダークモード)またはLight(ライトモード)からお選びいただけます。
これでツールの準備ができました。新しいプロジェクトを選択するか、既存のプロジェクトを開くことができます。
ステップ4: Gradleをインストールする
テストを実行し、レポートを生成するには、MavenやGradleなどのビルド済みツールを追加する必要があります。Mavenはここからダウンロードできます。
https://maven.apache.org/download.cgi
Gradle については、次のリンクをご覧ください。
https://gradle.org/next-steps/?version=6.5.1&format=all
C ドライブに Gradle というフォルダーを作成し、そのフォルダーに Gradle パッケージを解凍します。
ステップ5: 環境変数を設定する
Gradleを使用するには、環境変数を設定する必要があります。手順2の手順に従って環境変数設定を開き、システム変数に以下のパスを追加してください。
- C:Gradlegradle-6.5.1bin
Gradle が正常に構成されているかどうかを確認するには、コマンド プロンプト ウィンドウを開き、version コマンドを入力します。
- Gradle バージョン
つまり、Gradle は正常に動作しています。
ステップ6:Serenity BDDプラグインを追加する
Serenity BDDフレームワークを使用してテストを実行するには、Serenityプラグインを追加する必要があります。そのためには、IntelliJ IDEを開いてください。
「新規プロジェクト」をクリックします。左側のメニューで「Gradle」を選択します。
ビルド フォルダーの名前と場所を選択し、[完了] をクリックします。
ツールは必要なファイルをダウンロードし、新しい Gradle プロジェクトを作成します。
ビルドが完了すると、ビルドが成功したことを示すメッセージが表示されます。
Serenity BDDプラグインの追加
Serenity BDD Framework プラグインをプロジェクトに適用するには、build.gradle ファイルを開き、次のコードで編集します。
[ジャバスクリプト] プラグインを適用: 'java' プラグインを適用: 'net.serenity-bdd.aggregator' リポジトリ { mavenLocal() jcenter() } ビルドスクリプト { project.ext { serenityVersion = '2.2.12' } リポジトリ { mavenLocal() jcenter() } 依存関係 { classpath('net.serenity-bdd:serenity-gradle-plugin:' + serenityVersion) } } 依存関係 { testCompile 'junit:junit:4.12' testCompile 'net.serenity-bdd:serenity-core:' + serenityVersion testCompile 'net.serenity-bdd:serenity-junit:' + serenityVersion testCompile 'org.assertj:assertj-core:3.4+' testCompile 'org.slf4j:slf4j-simple:1.7+' } gradle.startParameter.continueOnFailure = true [/javascript]
コードにserenityVersionと記載されていることにご注意ください。最新バージョンは2.2.12です。コードを実行すると、Serenityプラグイン2.2.12がインストールされます。
Serenity Gradleプラグインと一緒に、すべての依存関係がインストールされます。この例では、JUnitテストライブラリが追加されています。他のテストライブラリを選択して、依存関係に追加することもできます。
次に、コマンド プロンプト ウィンドウを開き、次のコマンドを入力します。
- Gradle テスト集計
ビルドは成功しました。テストレポートはルートフォルダ(C:\Experitest\Serenity\targetsite\serenity)に保存されています。インデックスHTMLファイルを開くと、Serenity BDDフレームワークによって生成されたテストレポートを確認できます。continueOnFailureを追加したため、一部のテストが失敗してもテストは続行されます。
最初のテストを実行する
デモサイトを使ったサンプルテストはこちら http://decohere.herokuapp.comこのプロジェクトは、ユーザー ログイン タスクを認証し、ユーザーがログインしてウェルカム ページに移動できるかどうかを確認します。
IntelliJ IDE でプロジェクト ExperitestSerenity を開きます。
以下は、プロジェクト用に作成されたパッケージとクラスのリストです。
認証時.java
これは、ユーザーがホームページ上にいるかどうかを確認し、管理者としてアカウントにログインし、ウェルカム ページに正常に移動するかどうかを確認するメイン クラスです。
[ジャバスクリプト] パッケージ ExperitestTC1.features.authentication; インポート ExperitestTC1.steps.DecohereUser; インポート net.serenitybdd.junit.runners.SerenityRunner; インポート net.thucydides.core.annotations.Managed; インポート net.thucydides.core.annotations.Steps; インポート org.junit.Test; インポート org.junit.runner.RunWith; インポート org.openqa.selenium.WebDriver; @RunWith(SerenityRunner.class) パブリック クラス WhenAuthenticating { @Steps プライベート DecohereUser ユーザー; @Managed(driver = “chrome”) WebDriver ブラウザー; @Test パブリック void shouldBeAbleToLoginAsAdmin() { user.isOnTheHomePage(); user.logsInAsAdmin(); user.shouldBeOnLandingPage(); } } [/javascript]
デコヘレユーザー.java
このクラスは、メイン クラスのホーム ページの詳細を提供します。
[ジャバスクリプト] パッケージ ExperitestTC1.steps; インポート ExperitestTC1.ui.DecohereHomePage; インポート ExperitestTC1.ui.LandingPage; インポート net.thucydides.core.annotations.Step; インポート static org.assertj.core.api.Assertions.assertThat; パブリック クラス DecohereUser { private DecohereHomePage decohereHomePage; private LandingPage landingPage; @Step public void isOnTheHomePage() { decohereHomePage.open(); } @Step public void logsInAsAdmin() { decohereHomePage.loginAsAdmin(); } @Step public void shouldBeOnLandingPage() { assertThat(landingPage.noticeMessage()).isEqualTo(“現在、admin@decohere.com としてログインしています。”); } } [/javascript]
デコヘレホームページ.java
このクラスは、サイトにログインするためのユーザー名とパスワードを提供します。
[ジャバスクリプト] パッケージ ExperitestTC1.ui; インポート net.serenitybdd.core.pages.PageObject; インポート net.thucydides.core.annotations.DefaultUrl; @DefaultUrl(“https://decohere.herokuapp.com/”) パブリック クラス DecohereHomePage は PageObject を拡張します { パブリック void loginAsAdmin() { $(“#openLogin”).click(); $(“#username”).sendKeys(“admin@decohere.com”); $(“#password”).sendKeys(“admin”); $(“#login”).click(); } } [/javascript]
ランディングページ.java
このクラスは、ウェルカム ページのメッセージを表示します。
[ジャバスクリプト] パッケージ ExperitestTC1.ui; インポート net.serenitybdd.core.pages.PageObject; パブリッククラス LandingPage は PageObject を拡張します { パブリック文字列 notificationMessage() { 戻り値 $(“.notice”).getText(); } } [/javascript]
IntelliJ IDEでテストを実行すると、Decohereのホームページが開き、アカウントにサインインします。Serenity BDDはテストの詳細を含むレポートを生成します。
製品概要
Serenity BDD Frameworkの便利なレポートライブラリを使用すると、より構造化され、理解しやすい受け入れテストを実行できます。各ステップの各アクションごとにレポートが生成されるため、開発者は各機能の動作を把握し、エラーを迅速に特定できます。Serenity Step Librariesを使用すると、メソッドに@Stepアノテーションを付与できるため、データベース、Webサービス、ページオブジェクトなどの異なるレイヤーへの呼び出しをオーケストレーションできます。全体として、Serenity BDD Frameworkは受け入れテストに最適な選択肢です。
Continuous Testing 障壁を打ち破ることです。 クラウドでの継続的なテスト このウェビナービデオで2021年も残ります。































