Device Advisor 工作流 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Device Advisor 工作流

本教程提供有关如何创建自定义测试套件以及如何对要在控制台中测试的设备运行测试的说明。测试完成后,您可以查看测试结果和详细日志。

Prerequisites

要完成本教程,请完成 设置 中概述的步骤。

创建测试套件定义

首先,安装Amazon软件开发工具包

rootGroup 语法

根组是 JSON 字符串,用于指定测试套件中包含哪些测试用例以及这些测试用例的任何必要配置。使用根组以您喜欢的任何方式构建和排列测试套件。测试套件的层次结构如下:

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

测试套件必须至少有一个测试组,并且每个测试组必须至少有一个测试用例。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" 的数据块被称为“组定义”。一个包含 "name""configuration""test" 的数据库被称为“测试用例定义”。每个包含 "id""version""test" 数据块被称为“测试用例”。

有关如何填写每个测试用例("test" 数据块)中 "id""version" 字段的信息,请参阅 Device Advisor 测试用例。该部分还包含有关可用 "configuration" 设置的信息。

以下是根组配置的示例,该示例指定了“MQTT Connect 快乐用例”和“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,它用于检索您的测试套件定义信息并运行测试套件。

以下是一个 Java 软件开发工具包示例:

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") .build() ) .rootGroup("your-root-group-configuration") .devicePermissionRoleArn("your-device-permission-role-arn") .build() ) .build() )

运行一个测试套件

创建测试套件定义后,您会在 CreateSuiteDefinition API 的响应对象中收到 suiteDefinitionId

你可能会看到返回的根组的各个组和测试用例定义中都有新的 id 字段。这是预期的结果,您可以使用这些 ID 来运行测试套件定义中的子集。

Java 软件开发工具包示例:

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

启动测试套件运行

在成功创建测试套件定义并配置测试设备以连接到 Device Advisor 测试端点之后,请使用 StartSuiteRun API 运行您的测试套件。使用 certificateArn 或者 thingArn 运行测试套件。如果两者都完成了配置,如果证书属于该事物,则将使用该证书。

软件开发工具包示例:

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") .build()) .build()) .build())

保存在响应中返回的 suiteRunId,您将使用它来检索此测试套件运行的结果。

获取测试套件定义

启动测试套件运行后,您可以使用 GetSuiteRun API 检查其进度及结果。

软件开发工具包示例:

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

停止测试套件运行

Amazon IoT Device Advisor 允许一次运行一个活动测试套件。要停止仍在运行的测试套件,可以调用 StopSuiteRun API。在您调用 StopSuiteRun API 后,则该服务将启动清理程序。当服务运行清理程序时,测试套件运行状态将为 Stopping。清理程序需要几分钟时间,一旦完成,测试套件运行将具有 Stopped 状态。测试运行完全停止后,您将能够启动另一个测试套件运行。您可以使用 GetSuiteRun API 定期检查套件运行状态,如上一节所示。

软件开发工具包示例:

// 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 检索资格报告。您可以使用此资格报告来使用 Amazon IoT Core 资格计划为您的设备获取资格。要确定测试套件是否为合资格测试套件,请检查 intendedForQualification 参数是否设置为 true。在您调用 GetSuiteRunReport API 后,返回的下载 URL 可在 90 秒内供您下载。如果从上次调用 GetSuiteRunReport API 之后超过 90 秒,请再次调用该 API 以检索有效的 URL。

软件开发工具包示例:

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