Device Advisor 워크플로 - AWS IoT Core

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Device Advisor 워크플로

이 자습서에서는 사용자 지정 테스트 제품군을 만들고 콘솔에서 테스트할 디바이스에 대해 테스트를 실행하는 방법을 설명합니다. 테스트가 완료되면 테스트 결과와 세부 로그를 볼 수 있습니다.

필수 조건

이 자습서를 시작하기 전에 설정에 설명된 단계를 완료하세요.

테스트 스위트 정의 만들기

먼저 SDK를 설치합니다. AWS

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 블록으로 정의합니다. 마지막으로, 각 테스트 케이스는 idversion으로 정의됩니다.

각 테스트 케이스에 대한 "id""version" 필드(test 블록)의 사용 방법에 대한 자세한 내용은 Device Advisor 테스트 케이스 섹션을 참조하세요. 이 섹션에는 사용 가능한 configuration 설정에 대한 정보가 포함되어 있습니다.

다음 블록은 루트 그룹 구성의 예입니다. 이 구성은 구성 필드에 대한 MQTT Connect Happy CaseMQTT Connect Exponential Backoff Retries 테스트 케이스를 지정합니다.

{ "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 필드가 표시되고 루트 그룹 내에 테스트 케이스 정의가 표시될 수 있습니다. 이러한 ID를 사용하여 테스트 제품군 정의의 하위 집합을 실행할 수 있습니다.

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 over WebSocket customer의 경우 테스트 deviceRoleArn 스위트를 실행하는 데 사용하십시오. 지정된 역할이 테스트 제품군 정의에 지정된 역할과 다른 경우 지정된 역할이 정의된 역할을 재정의합니다.

디바이스 수준 엔드포인트를 사용하여 하나의 AWS 계정으로 여러 테스트 제품군을 병렬로 실행하는 경우 .parallelRun()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 API 작업을 호출한 때부터 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() )