チュートリアル: Greengrass Testing Framework と Greengrass Development Kit を使用してテストを実行する end-to-end - AWS IoT Greengrass

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: Greengrass Testing Framework と Greengrass Development Kit を使用してテストを実行する end-to-end

AWS IoT Greengrass テストフレームワーク (GTF) と Greengrass Development Kit (GDK) は、デベロッパーがテストを実行する end-to-end方法を提供します。このチュートリアルを完了すると、コンポーネントを使用してGDKプロジェクトを初期化し、 テストモジュールを使用してGDK end-to-endプロジェクトを初期化し、カスタムテストケースを構築できます。カスタムテストケースの作成後、テストを実行できます。

このチュートリアルでは、以下の作業を行います。

  1. コンポーネントを使用してGDKプロジェクトを初期化します。

  2. テストモジュールを使用してGDKプロジェクトを end-to-end初期化します。

  3. カスタムテストケースを構築します。

  4. 新しいテストケースにタグを追加します。

  5. テスト を構築しますJAR。

  6. テストを実行します。

前提条件

このチュートリアルを完了するには、以下が必要です。

  • 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 テスト に依存する Maven プロジェクトですJAR。

ステップ 3 : カスタムテストケースを構築する

カスタムテストケースの作成は、大きく分けて 2 つのステップで構成されます。テストシナリオを持つ機能ファイルを作成することと、もう 1 つはステップ定義を実装することです。カスタムテストケースの作成例については、例: カスタムテストケースを構築する を参照してください。以下の手順でカスタムテストケースを構築してください。

  1. テストシナリオを持つ機能ファイルを作成する

    機能は通常、テスト対象のソフトウェアの特定の機能を表します。Cucumber では、各機能はタイトル、詳細な説明、シナリオと呼ばれる特定のケースの 1 つまたは複数の例を含む個別の機能ファイルとして指定されます。各シナリオは、タイトル、詳細な説明、相互作用と期待される結果を定義する一連のステップで構成されています。シナリオは、「given」、「when」、「then」というキーワードを使用して構造化された形式で記述されます。

  2. ステップ定義を実装する

    ステップ定義は、プログラマティックコードに 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

  1. コンポーネントを構築します。テストモジュールを構築する前に、コンポーネントを構築する必要があります。

    gdk component build
  2. 次のコマンドを使用してテストモジュールを構築します。このコマンドは、 greengrass-buildフォルダJARにテストを構築します。

    gdk test-e2e build

ステップ 6 : テストを実行する

カスタムテストケースを実行すると、 はテストのライフサイクルと、テスト中に作成されたリソースの管理GTFを自動化します。まず、テスト対象デバイス (DUT) を AWS IoT モノとしてプロビジョニングし、Greengrass コアソフトウェアをインストールします。次に、そのパスで指定されたレシピを使用して HelloWorld という名前の新しいコンポーネントを作成します。その後、HelloWorld コンポーネントは Greengrass デバイスデプロイメントを通じてコアデバイスにデプロイされます。その後、デプロイが成功したかどうかが検証されます。デプロイが成功すると 3 分以内にデプロイステータスが COMPLETED に変わります。

  1. プロジェクトディレクトリ内の gdk-config.json ファイルに移動し、HelloWorld タグを持つテストをターゲットにします。次のコマンドを使用して、test-e2e キーをアップデートします。

    "test-e2e":{ "gtf_options" : { "tags":"HelloWorld" } }
  2. テストを実行する前に、ホストデバイスに AWS 認証情報を指定する必要があります。 GTFは、テストプロセス中にこれらの認証情報を使用して AWS リソースを管理します。指定したロールに、テストに含まれる必要な操作を自動化する権限があることを確認してください。

    次のコマンドを実行して、 AWS 認証情報を指定します。

    1. Linux or Unix
      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      Windows Command Prompt (CMD)
      set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      PowerShell
      $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
  3. 次のコマンドを使用してテストを実行します。

    gdk test-e2e run

    このコマンドは、greengrass-build フォルダーにある Greengrass nucleus の最新バージョンをダウンロードし、それを使用してテストを実行します。また、このコマンドは、HelloWorld タグを持つシナリオのみをターゲットにし、それらのシナリオのレポートを生成します。このテスト中に作成された AWS リソースは、テストの終了時に破棄されます。

例: カスタムテストケースを構築する

GDK プロジェクトにダウンロードされたテストモジュールは、サンプル機能とステップ実装ファイルで構成されます。

以下の例では、Greengrass ソフトウェアのデバイスデプロイ機能をテストするための機能ファイルを作成します。Greengrass  AWS クラウド を介してコンポーネントをデプロイするシナリオを使用して、この機能の機能を部分的にテストします。これは、このユースケースの相互作用と期待される結果を理解するのに役立つ一連のステップです。

  1. 機能ファイルを作成する

    現在のディレクトリの 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

  2. ステップ定義を実装する

    GTF スタンドアロンJARには、1 つのステップ を除くすべてのステップのステップ定義が含まれていますAnd I call my custom step。このステップをテストモジュールに実装できます。

    テストファイルのソースコードに移動します。以下のコマンドを使用すると、ステップ定義を使用してカスタムステップをリンクできます。

    @And("I call my custom step") public void customStep() { System.out.println("My custom step was called "); }