翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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": "" } }] }] }
ルートグループでは、グループに含まれる name
、configuration
、および tests
を使用してテストスイートを定義します。tests
グループには、個々のテストの定義が含まれています。各テストは、name
、configuration
およびそのテストのテストケースを定義する test
ブロックを使用して定義します。最後に、各テストケースは id
と version
で定義されます。
各テストケース (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() )
テストスイート定義を取得する
テストスイート定義を作成すると、CreateSuiteDefinition
APIオペレーションのレスポンスオブジェクトsuiteDefinitionId
に を受け取ります。
オペレーションが suiteDefinitionId
を返すと、各グループ内に新しい id
フィールドが表示され、ルートグループ内にテストケース定義が表示される場合があります。これらを使用してIDs、テストスイート定義のサブセットを実行できます。
Java SDKの例:
response = iotDeviceAdvisorClient.GetSuiteDefinition( GetSuiteDefinitionRequest.builder() .suiteDefinitionId("
your-suite-definition-id
") .build() )
テストエンドポイントを取得する
GetEndpoint
API オペレーションを使用して、デバイスが使用するテストエンドポイントを取得します。テストに最適なエンドポイントを選択します。複数のテストスイートを同時に実行する場合は、thing
ARN
、certificate 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
を保存します。これを使用して、このテストスイートの実行の結果を取得します。
テストスイートの実行を取得する
テストスイートの実行を開始したら、 を使用してその進行状況と結果を確認できますGetSuiteRun
API。
SDK 例:
// Using the SDK, call the GetSuiteRun API. response = iotDeviceAdvisorClient.GetSuiteRun( GetSuiteRunRequest.builder() .suiteDefinitionId("
your-suite-definition-id
") .suiteRunId("your-suite-run-id
") .build())
テストスイートの実行を停止する
まだ進行中のテストスイートの実行を停止するには、 StopSuiteRun
APIオペレーションを呼び出します。StopSuiteRun
オペレーションを呼び出すと、サービスはクリーンアッププロセスを開始します。サービスがクリーンアップ処理を実行している間、テストスイートの実行ステータスが Stopping
に更新されます。このクリーンアッププロセスには、数分以上かかることがあります。プロセスが完了すると、テストスイートの実行ステータスが Stopped
に更新されます。テストの実行が完全に停止したら、別のテストスイートの実行を開始できます。前のセクションに示すように、 GetSuiteRun
APIオペレーションを使用してスイートの実行ステータスを定期的に確認できます。
SDK 例:
// Using the SDK, call the StopSuiteRun API. response = iotDeviceAdvisorClient.StopSuiteRun( StopSuiteRun.builder() .suiteDefinitionId("
your-suite-definition-id
") .suiteRunId("your-suite-run-id
") .build())
成功した認定テストスイートの実行の認定レポートを取得する
正常に完了した認定テストスイートを実行すると、 GetSuiteRunReport
APIオペレーションを使用して認定レポートを取得できます。この認定レポートを使用して、 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() )