Cucumberはどのように働いていますか?
3138 ワード
BDDは現在敏捷なテストで流行している概念であり、BDDは自然言語でテストシーンを面述し、チーム内の各ロールのメンバーは自然言語で説明されたシーンを通じてコミュニケーションを行い、チーム間の協力効率を高める.CucumberはBDDベースの優れたフレームワークである.
ポピュラーな自動化テストフレームワークとして、Cucumberは理解しやすい構文を使用して、多くの自然言語をサポートしてテストの例を記述します.この記事では、主にCucumberのコアアーキテクチャと実行の詳細を紹介することで、「Cucumberはどのように実行されていますか?」という問題を説明します.
Cucumberプロジェクト構造
1つのCucumberプロジェクトの構造は大体以下の通りです.
次のセクションがあります.
Featureファイル(シナリオファイル)
テスト項目の目的実行ファイルはすべてfeaturesディレクトリの下にあり、.featureで終わるものをシナリオファイルとし、1つのシナリオファイルに複数のシーンを含み、1つのシーンに複数の操作手順を含むことができる.
簡単なfeatureファイルのサンプルを次に示します
このfeatureファイルには、bing検索の一般的な操作フローを主に記述した「bing検索」シーンが含まれています.ドキュメントに基づいて、誰もが何をするかを理解することができます.
.featureシナリオファイルを使用して、テストのビジネスをシーン記述と操作手順で説明します.この方法で、ビジネスを組み合わせます.
Step Definitons(ステップ定義)
これらのコードサンプルによれば、各操作を自動化するコード実装のみが必要である.これらの自動化コードは一般的にstep_に格納されます.definitionsディレクトリにあります.
Support Code(サポートコード)
自動化スクリプトは、上述したdriverのように、ブラウザの駆動として抽象化され、1つのディレクトリに単独で配置されるsupportが必要であり、ここでは、操作ステップごとに実行されるタイムアウト時間、シーン実行前、実行後などの実行時の設定を定義することもできる.
Cucumberテストキット
次に、(1)からシーン(2)とステップ(3)を含むCucumberテストキットfeatureファイルと自動化スクリプトファイルとのマッピング関係を示します.(4)シーンの呼び出しステップを定義し、各操作ステップは自動化実装コードに対応する.
上図は、CukeTest開発環境における簡単なCucumber.js自動化テストの例です.このステップ定義のベースコードはJavaScriptであり、自動化ライブラリはselenium-webdriverです.CukeTestはCucumber.jsを開発する統合開発環境である.Cucumber.jsが広く採用されている重要な原因の一つはNode.jsの広範な普及であり、もう一つの原因は広範な自動化ツールがJavaScript、特にNode.js(Appium、Selenium、puppeteerなど)を全面的にサポートしていることであり、これらのツールはWeb、Android、iOS、API、Windowsなど、さまざまなアプリケーションの自動化をカバーしている.
実行
Cucumberのシナリオファイルと対応するステップ定義は、以下に示すように、特定のフォルダ構造にあります.
Cucumber(シナリオファイル)はfeaturesフォルダにあり、ステップ定義ファイルはstep_にあります.definitionsフォルダにあります.
Cucumberはコマンドラインツールです.テストを実行するには、親フォルダ(前例のプレゼンテーションフォルダ)に移動し、featuresフォルダの場所を参照してテストする必要があります.開発環境でデバッグCucumberスクリプトを編集する場合は、可視化編集ツールCukeTestを使用します.可視化されたfeature編集インタフェースを提供し、自動化コードサンプルを一クリックで生成し、さまざまなテストレポートを提供し、さまざまな継続的な統合ツールを提供します.
これにより、ステップ定義ファイルのフィーチャーファイルと対応するコードが実行されます.ステップの実行にエラーがない場合、Cucumberはシーン内の次のステップを実行します.手順によってエラーが発生しないままシーンの最後に到達すると、シーンは通過したとマークされます.
シナリオのいずれかのステップが失敗した場合、Cucumberはシナリオを失敗としてマークし、次のシナリオに移動します.シーンが実行されると、Cucumberに結果が表示され、各操作手順の実行状況が明確に表示されます.
まとめ
現在、Cucumberはますます多くのチームで使用され始め、コミュニティでもCucumebrに関するドキュメントが増えています.Cucumberコード編集ツールも日々充実しています.英語が十分であれば、Cucumberの公式ドキュメント、github.com/cucumber/cu...より多くのCucumberの内容を直接読むことができます.
ポピュラーな自動化テストフレームワークとして、Cucumberは理解しやすい構文を使用して、多くの自然言語をサポートしてテストの例を記述します.この記事では、主にCucumberのコアアーキテクチャと実行の詳細を紹介することで、「Cucumberはどのように実行されていますか?」という問題を説明します.
Cucumberプロジェクト構造
1つのCucumberプロジェクトの構造は大体以下の通りです.
次のセクションがあります.
Featureファイル(シナリオファイル)
テスト項目の目的実行ファイルはすべてfeaturesディレクトリの下にあり、.featureで終わるものをシナリオファイルとし、1つのシナリオファイルに複数のシーンを含み、1つのシーンに複数の操作手順を含むことができる.
簡単なfeatureファイルのサンプルを次に示します
# language: zh-CN
:
, 。
: bing
"http://www.bing.com"
このfeatureファイルには、bing検索の一般的な操作フローを主に記述した「bing検索」シーンが含まれています.ドキュメントに基づいて、誰もが何をするかを理解することができます.
.featureシナリオファイルを使用して、テストのビジネスをシーン記述と操作手順で説明します.この方法で、ビジネスを組み合わせます.
Step Definitons(ステップ定義)
.feature
ファイルに記述されたビジネスステップを実行するには、ビジネスシーンに基づいて動作を定義する必要があります.具体的なビジネス行動は、step_で主に定義される対応する自動化スクリプトによって実現されます.definitionsディレクトリでは、たとえば、操作手順は、このシーンに基づいてペアを生成するCucumber自動化コードの例を面述する.Given(/^ "([^"]*)"$/, async function(url) {
await driver.get(url);
});
これらのコードサンプルによれば、各操作を自動化するコード実装のみが必要である.これらの自動化コードは一般的にstep_に格納されます.definitionsディレクトリにあります.
Support Code(サポートコード)
自動化スクリプトは、上述したdriverのように、ブラウザの駆動として抽象化され、1つのディレクトリに単独で配置されるsupportが必要であり、ここでは、操作ステップごとに実行されるタイムアウト時間、シーン実行前、実行後などの実行時の設定を定義することもできる.
Cucumberテストキット
次に、(1)からシーン(2)とステップ(3)を含むCucumberテストキットfeatureファイルと自動化スクリプトファイルとのマッピング関係を示します.(4)シーンの呼び出しステップを定義し、各操作ステップは自動化実装コードに対応する.
上図は、CukeTest開発環境における簡単なCucumber.js自動化テストの例です.このステップ定義のベースコードはJavaScriptであり、自動化ライブラリはselenium-webdriverです.CukeTestはCucumber.jsを開発する統合開発環境である.Cucumber.jsが広く採用されている重要な原因の一つはNode.jsの広範な普及であり、もう一つの原因は広範な自動化ツールがJavaScript、特にNode.js(Appium、Selenium、puppeteerなど)を全面的にサポートしていることであり、これらのツールはWeb、Android、iOS、API、Windowsなど、さまざまなアプリケーションの自動化をカバーしている.
実行
Cucumberのシナリオファイルと対応するステップ定義は、以下に示すように、特定のフォルダ構造にあります.
Cucumber(シナリオファイル)はfeaturesフォルダにあり、ステップ定義ファイルはstep_にあります.definitionsフォルダにあります.
Cucumberはコマンドラインツールです.テストを実行するには、親フォルダ(前例のプレゼンテーションフォルダ)に移動し、featuresフォルダの場所を参照してテストする必要があります.開発環境でデバッグCucumberスクリプトを編集する場合は、可視化編集ツールCukeTestを使用します.可視化されたfeature編集インタフェースを提供し、自動化コードサンプルを一クリックで生成し、さまざまなテストレポートを提供し、さまざまな継続的な統合ツールを提供します.
$ cd Desktop/Demo_Folder/
$ ./node_modules/.bin/cucumber.js features/google_Test.feature
これにより、ステップ定義ファイルのフィーチャーファイルと対応するコードが実行されます.ステップの実行にエラーがない場合、Cucumberはシーン内の次のステップを実行します.手順によってエラーが発生しないままシーンの最後に到達すると、シーンは通過したとマークされます.
シナリオのいずれかのステップが失敗した場合、Cucumberはシナリオを失敗としてマークし、次のシナリオに移動します.シーンが実行されると、Cucumberに結果が表示され、各操作手順の実行状況が明確に表示されます.
まとめ
現在、Cucumberはますます多くのチームで使用され始め、コミュニティでもCucumebrに関するドキュメントが増えています.Cucumberコード編集ツールも日々充実しています.英語が十分であれば、Cucumberの公式ドキュメント、github.com/cucumber/cu...より多くのCucumberの内容を直接読むことができます.