本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Device Advisor 工作流程
本教學課程說明如何建立自訂測試套件,以及針對您要在主控台中測試的裝置執行測試。在測試完成之後,您可以檢視測試結果和詳細記錄。
必要條件
開始本教學課程之前,請先完成設定中概述的步驟。
建立測試套件定義
首先,安裝 AWS SDK。
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
來定義測試套件。tests
群組包含個別測試的定義。您可以使用 name
、configuration
,以及針對該測試定義測試案例的 test
區塊來定義每個測試。最後,每個測試案例都是使用 id
和 version
定義的。
如需如何為每個測試案例 (test
區塊) 使用 "id"
和 "version"
欄位的相關資訊,請參閱 Device Advisor 測試案例。該節還包含可用 configuration
設定的相關資訊。
下列區塊是根群組組態的範例。此組態會指定 MQTT Connect 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()
,如果使用裝置層級端點,來使用一個 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
API 操作之後,服務將會啟動清除程序。當服務執行清除程序時,測試套件執行狀態會更新為 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() )