Device Advisor ワークフロー - AWS IoT Core

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

Device Advisor ワークフロー

このチュートリアルでは、カスタムテストスイートを作成し、コンソールでテストするデバイスに対してテストを実行する方法について説明します。テストが完了したら、テスト結果と詳細ログを表示できます。

前提条件

このチュートリアルを開始する前に、「設定」で説明されている手順を完了してください。

テストスイート定義を作成する

まず、 をインストールします AWS SDK

rootGroup の構文

ルートグループは、テストスイートに含めるテストケースを指定するJSON文字列です。また、これらのテストケースに必要な構成も指定します。ルートグループを使用して、テストスイートを任意の態様で構造化し、順序付けます。テストスイートの階層は次のとおりです。

test suite → test group(s) → test case(s)

テストスイートには少なくとも 1 つのテストグループがなければならず、各テストグループには少なくとも 1 つのテストケースが必要です。Device Advisor は、テストグループとテストケースを定義する順序でテストを実行します。

各ルートグループは、次の基本的な構造に従います。

{ "configuration": { // for all tests in the test suite "": "" } "tests": [{ "name": "" "configuration": { // for all sub-groups in this test group "": "" }, "tests": [{ "name": "" "configuration": { // for all test cases in this test group "": "" }, "test": { "id": "" "version": "" } }] }] }

ルートグループでは、グループに含まれる nameconfiguration、および tests を使用してテストスイートを定義します。tests グループには、個々のテストの定義が含まれています。各テストは、nameconfiguration およびそのテストのテストケースを定義する test ブロックを使用して定義します。最後に、各テストケースは idversion で定義されます。

各テストケース (test ブロック) の "id" フィールドと "version" フィールドの使用方法については、「Device Advisor テストケース」を参照してください。そのセクションには、使用可能な configuration 設定に関する情報も含まれています。

次のブロックは、ルートグループ設定の例です。この設定では、MQTTConnect Happy Case MQTT と Connect エクスポネンシャルバックオフ再試行のテストケースと、設定フィールドの説明を指定します。

{ "configuration": {}, // Suite-level configuration "tests": [ // Group definitions should be provided here { "name": "My_MQTT_Connect_Group", // Group definition name "configuration": {} // Group definition-level configuration, "tests": [ // Test case definitions should be provided here { "name": "My_MQTT_Connect_Happy_Case", // Test case definition name "configuration": { "EXECUTION_TIMEOUT": 300 // Test case definition-level configuration, in seconds }, "test": { "id": "MQTT_Connect", // test case id "version": "0.0.0" // test case version } }, { "name": "My_MQTT_Connect_Jitter_Backoff_Retries", // Test case definition name "configuration": { "EXECUTION_TIMEOUT": 600 // Test case definition-level configuration, in seconds }, "test": { "id": "MQTT_Connect_Jitter_Backoff_Retries", // test case id "version": "0.0.0" // test case version } }] }] }

テストスイート定義を作成するときに、ルートグループ設定を指定する必要があります。応答オブジェクトで返された suiteDefinitionId を保存します。この ID を使用して、テストスイートの定義情報を取得し、テストスイートを実行できます。

Java SDKの例を次に示します。

response = iotDeviceAdvisorClient.createSuiteDefinition( CreateSuiteDefinitionRequest.builder() .suiteDefinitionConfiguration(SuiteDefinitionConfiguration.builder() .suiteDefinitionName("your-suite-definition-name") .devices( DeviceUnderTest.builder() .thingArn("your-test-device-thing-arn") .certificateArn("your-test-device-certificate-arn") .deviceRoleArn("your-device-role-arn") //if using SigV4 for MQTT over WebSocket .build() ) .rootGroup("your-root-group-configuration") .devicePermissionRoleArn("your-device-permission-role-arn") .protocol("MqttV3_1_1 || MqttV5 || MqttV3_1_1_OverWebSocket || MqttV5_OverWebSocket") .build() ) .build() )

テストスイート定義を取得する

テストスイート定義を作成すると、CreateSuiteDefinitionAPIオペレーションのレスポンスオブジェクトsuiteDefinitionIdに を受け取ります。

オペレーションが suiteDefinitionId を返すと、各グループ内に新しい id フィールドが表示され、ルートグループ内にテストケース定義が表示される場合があります。これらを使用してIDs、テストスイート定義のサブセットを実行できます。

Java SDKの例:

response = iotDeviceAdvisorClient.GetSuiteDefinition( GetSuiteDefinitionRequest.builder() .suiteDefinitionId("your-suite-definition-id") .build() )

テストエンドポイントを取得する

GetEndpoint API オペレーションを使用して、デバイスが使用するテストエンドポイントを取得します。テストに最適なエンドポイントを選択します。複数のテストスイートを同時に実行する場合は、thing ARNcertificate ARN、または device role ARN を指定してデバイスレベルのエンドポイントを使用します。単一のテストスイートを実行するには、 GetEndpoint オペレーションに引数を指定してアカウントレベルのエンドポイントを選択しないでください。

SDK 例:

response = iotDeviceAdvisorClient.getEndpoint(GetEndpointRequest.builder() .certificateArn("your-test-device-certificate-arn") .thingArn("your-test-device-thing-arn") .deviceRoleArn("your-device-role-arn") //if using SigV4 for MQTT over WebSocket .build())

テストスイートの実行を開始する

テストスイート定義を作成し、Device Advisor テストエンドポイントに接続するようにテストデバイスを設定したら、 StartSuiteRun を使用してテストスイートを実行しますAPI。

MQTT お客様の場合は、 certificateArn または thingArn を使用してテストスイートを実行します。両方が設定されている場合、証明書がモノに属している場合は証明書が使用されます。

MQTT 以上の WebSocket お客様は、 deviceRoleArn を使用してテストスイートを実行します。指定されたロールがテストスイート定義で指定されたロールと異なる場合、指定されたロールは定義されたロールよりも優先されます。

.parallelRun() の場合、デバイスレベルのエンドポイントを使用して、1 つの AWS アカウントアカウントで複数のテストスイートを並列して実行する場合、true を使用します。

SDK 例:

response = iotDeviceAdvisorClient.startSuiteRun(StartSuiteRunRequest.builder() .suiteDefinitionId("your-suite-definition-id") .suiteRunConfiguration(SuiteRunConfiguration.builder() .primaryDevice(DeviceUnderTest.builder() .certificateArn("your-test-device-certificate-arn") .thingArn("your-test-device-thing-arn") .deviceRoleArn("your-device-role-arn") //if using SigV4 for MQTT over WebSocket .build()) .parallelRun(true | false) .build()) .build())

レスポンスから suiteRunId を保存します。これを使用して、このテストスイートの実行の結果を取得します。

テストスイートの実行を取得する

テストスイートの実行を開始したら、 を使用してその進行状況と結果を確認できますGetSuiteRunAPI。

SDK 例:

// Using the SDK, call the GetSuiteRun API. response = iotDeviceAdvisorClient.GetSuiteRun( GetSuiteRunRequest.builder() .suiteDefinitionId("your-suite-definition-id") .suiteRunId("your-suite-run-id") .build())

テストスイートの実行を停止する

まだ進行中のテストスイートの実行を停止するには、 StopSuiteRunAPIオペレーションを呼び出します。StopSuiteRun オペレーションを呼び出すと、サービスはクリーンアッププロセスを開始します。サービスがクリーンアップ処理を実行している間、テストスイートの実行ステータスが Stopping に更新されます。このクリーンアッププロセスには、数分以上かかることがあります。プロセスが完了すると、テストスイートの実行ステータスが Stopped に更新されます。テストの実行が完全に停止したら、別のテストスイートの実行を開始できます。前のセクションに示すように、 GetSuiteRunAPIオペレーションを使用してスイートの実行ステータスを定期的に確認できます。

SDK 例:

// Using the SDK, call the StopSuiteRun API. response = iotDeviceAdvisorClient.StopSuiteRun( StopSuiteRun.builder() .suiteDefinitionId("your-suite-definition-id") .suiteRunId("your-suite-run-id") .build())

成功した認定テストスイートの実行の認定レポートを取得する

正常に完了した認定テストスイートを実行すると、 GetSuiteRunReportAPIオペレーションを使用して認定レポートを取得できます。この認定レポートを使用して、 AWS IoT Core 認定プログラムでデバイスを認定します。テストスイートが認定テストスイートであるかどうかを判断するには、intendedForQualification パラメータが true に設定されているかどうかを確認します。GetSuiteRunReport API オペレーションを呼び出すと、返された からURLレポートを最大 90 秒間ダウンロードできます。前回 GetSuiteRunReportオペレーションを呼び出してから 90 秒以上経過した場合は、 オペレーションを再度呼び出して、新しい有効な を取得しますURL。

SDK 例:

// Using the SDK, call the getSuiteRunReport API. response = iotDeviceAdvisorClient.getSuiteRunReport( GetSuiteRunReportRequest.builder() .suiteDefinitionId("your-suite-definition-id") .suiteRunId("your-suite-run-id") .build() )