翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: Greengrass Testing Framework と Greengrass Development Kit を使用して end-to-end テストを実行する
AWS IoT Greengrass テストフレームワーク (GTF) と Greengrass Development Kit (GDK) は、デベロッパーが end-to-end テストを実行する方法を提供します。このチュートリアルを完了すると、 コンポーネントで GDK プロジェクトを初期化し、 end-to-end テストモジュールで GDK プロジェクトを初期化し、カスタムテストケースを構築できます。カスタムテストケースの作成後、テストを実行できます。
このチュートリアルでは、以下の作業を行います。
-
GDK プロジェクトをコンポーネントで初期化します。
-
end-to-end テストモジュールを使用して GDK プロジェクトを初期化します。
-
カスタムテストケースを構築します。
-
新しいテストケースにタグを追加します。
-
テスト JAR をビルドします。
-
テストを実行します。
トピック
前提条件
このチュートリアルを完了するには、以下が必要です。
-
GDK バージョン 1.3.0 以降
-
Java
-
Maven
-
Git
ステップ 1: GDK プロジェクトをコンポーネントで初期化する
-
GDK プロジェクトで空のフォルダを初期化します。以下のコマンドを実行して Python で実装された
HelloWorld
コンポーネントをダウンロードします。gdk component init -t HelloWorld -l python -n HelloWorld
このコマンドで、現在のディレクトリに
HelloWorld
という名前の新しいディレクトリが作成されます。
ステップ 2: テストモジュールを使用して GDK プロジェクトを初期化する end-to-end
-
GDK を使用して、テストモジュールテンプレートをダウンロードできます。このテンプレートには、特定の機能とステップの実装が含まれています。以下のコマンドを実行して
HelloWorld
ディレクトリを開き、テストモジュールを使用して既存の GDK プロジェクトを初期化します。cd HelloWorld gdk test-e2e init
このコマンドで、
HelloWorld
ディレクトリにgg-e2e-tests
という名前の新しいディレクトリが作成されます。このテストディレクトリは Greengrass のテスト用スタンドアロン JAR に依存する Mavenプロジェクトです。
ステップ 3 : カスタムテストケースを構築する
カスタムテストケースの作成は、大きく分けて 2 つのステップで構成されます。テストシナリオを持つ機能ファイルを作成することと、もう 1 つはステップ定義を実装することです。カスタムテストケースの作成例については、例: カスタムテストケースを構築する を参照してください。以下の手順でカスタムテストケースを構築してください。
-
テストシナリオを持つ機能ファイルを作成する
機能は通常、テスト対象のソフトウェアの特定の機能を表します。Cucumber では、各機能はタイトル、詳細な説明、シナリオと呼ばれる特定のケースの 1 つまたは複数の例を含む個別の機能ファイルとして指定されます。各シナリオは、タイトル、詳細な説明、相互作用と期待される結果を定義する一連のステップで構成されています。シナリオは、「given」、「when」、「then」というキーワードを使用して構造化された形式で記述されます。
-
ステップ定義を実装する
ステップ定義は、プログラマティックコードに Gherkin ステップ
をプレインランゲージでリンクします。Cucumber はシナリオ内の Gherkin ステップを識別すると、一致するステップ定義を探して実行します。
ステップ 4 : 新しいテストケースにタグを追加する
-
機能やシナリオにタグを割り当てて、テストプロセスを整理できます。タグを使用してシナリオのサブセットを分類したり、実行するフックを条件付きで選択したりできます。機能とシナリオには、スペースで区切ることで複数のタグを付けることができます。
この例では、
HelloWorld
コンポーネントを使用します。機能ファイルに、
@Sample
タグの横に@HelloWorld
という名前の新しいタグを追加します。@Sample @HelloWorld Scenario: As a developer, I can create a component and deploy it on my device ....
ステップ 5: テスト JAR を構築する
-
コンポーネントを構築します。テストモジュールを構築する前に、コンポーネントを構築する必要があります。
gdk component build
-
次のコマンドを使用してテストモジュールを構築します。このコマンドは、
greengrass-build
フォルダーにテスト用 JAR を構築します。gdk test-e2e build
ステップ 6 : テストを実行する
カスタムテストケースを実行すると、GTF はテスト中に作成されたリソースを管理するとともに、テストのライフサイクルを自動化します。まず、テスト対象デバイス (DUT) を AWS IoT 機器としてプロビジョニングし、そのデバイスに Greengrass コアソフトウェアをインストールします。次に、そのパスで指定されたレシピを使用して HelloWorld
という名前の新しいコンポーネントを作成します。その後、HelloWorld
コンポーネントは Greengrass モノのデプロイを介してコアデバイスにデプロイされます。その後、デプロイが成功したかどうかが検証されます。デプロイが成功すると 3 分以内にデプロイステータスが COMPLETED
に変わります。
-
プロジェクトディレクトリ内の
gdk-config.json
ファイルに移動し、HelloWorld
タグを持つテストをターゲットにします。次のコマンドを使用して、test-e2e
キーをアップデートします。"test-e2e":{ "gtf_options" : { "tags":"HelloWorld" } }
-
テストを実行する前に、AWS ホストデバイスへの認証情報を入力する必要があります。GTF はこれらの認証情報を使用してテストプロセス中の AWS リソースを管理します。指定したロールに、テストに含まれる必要な操作を自動化する権限があることを確認してください。
次のコマンドを実行して、AWS 認証情報を提供します。
-
-
次のコマンドを使用してテストを実行します。
gdk test-e2e run
このコマンドは、
greengrass-build
フォルダーにある Greengrass nucleus の最新バージョンをダウンロードし、それを使用してテストを実行します。また、このコマンドは、HelloWorld
タグを持つシナリオのみをターゲットにし、それらのシナリオのレポートを生成します。このテスト中に作成されたAWSリソースは、テストの最後に破棄されます。
例: カスタムテストケースを構築する
GDK プロジェクトにダウンロードされたテストモジュールは、サンプル機能とステップ実装ファイルで構成されています。
以下の例では、Greengrass ソフトウェアのデバイスデプロイ機能をテストするための機能ファイルを作成します。Greengrass AWS クラウド を介してコンポーネントをデプロイするシナリオを使用して、この機能の機能を部分的にテストします。これは、このユースケースの相互作用と期待される結果を理解するのに役立つ一連のステップです。
-
機能ファイルを作成する
現在のディレクトリ内の
gg-e2e-tests/src/main/resources/greengrass/features
フォルダに移動します。次の例component.feature
のようなサンプルを見つけることができます。この機能ファイルでは、Greengrass ソフトウェアのデバイスデプロイ機能をテストできます。Greengrass クラウドを介したコンポーネントのデプロイを実行するシナリオで、この機能の機能を部分的にテストできます。このシナリオは、このユースケースの相互作用と期待される結果を理解するのに役立つ一連のステップです。
Feature: Testing features of Greengrassv2 component Background: Given my device is registered as a Thing And my device is running Greengrass @Sample Scenario: As a developer, I can create a component and deploy it on my device When I create a Greengrass deployment with components HelloWorld | /path/to/recipe/file And I deploy the Greengrass deployment configuration Then the Greengrass deployment is COMPLETED on the device after 180 seconds And I call my custom step
GTF には、
And I call my custom step
という名前のステップを除く以下のすべてのステップのステップ定義が含まれています。 -
ステップ定義を実装する
GTF スタンドアロン JAR には、
And I call my custom step
ステップを除くすべてのステップのステップ定義が含まれています。このステップをテストモジュールに実装できます。テストファイルのソースコードに移動します。以下のコマンドを使用すると、ステップ定義を使用してカスタムステップをリンクできます。
@And("I call my custom step") public void customStep() { System.out.println("My custom step was called "); }