Device-Advisor-Workflow - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Device-Advisor-Workflow

In diesem Tutorial wird erklärt, wie Sie eine benutzerdefinierte Testsuite erstellen und Tests für das Gerät ausführen, das Sie in der Konsole testen möchten. Nach Abschluss der Tests können Sie die Testergebnisse und detaillierte Protokolle anzeigen.

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, führen Sie die unter Einrichtung beschriebenen Schritte aus.

Erstellen einer Testsuite-Definition

Installieren Sie zunächst eine AWS SDK.

rootGroup-Syntax

Eine Stammgruppe ist eine JSON Zeichenfolge, die angibt, welche Testfälle in Ihre Testsuite aufgenommen werden sollen. Sie spezifiziert auch alle erforderlichen Konfigurationen für diese Testfälle. Verwenden Sie die Root-Gruppe, um Ihre Testsuite nach Ihren Bedürfnissen zu strukturieren und zu ordnen. Die Hierarchie einer Testsuite ist folgende:

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

Eine Testsuite muss mindestens eine Testgruppe haben und jede Testgruppe muss mindestens einen Testfall haben. Device Advisor führt Tests in der Reihenfolge aus, in der Sie die Testgruppen und Testfälle definieren.

Jede Root-Gruppe folgt dieser Grundstruktur:

{ "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": "" } }] }] }

In der Root-Gruppe definieren Sie die Testsuite mit einem name, der configuration und den tests, die die Gruppe enthält. Die tests-Gruppe enthält die Definitionen der einzelnen Tests. Sie definieren jeden Test mit einem name, einer configuration und einem test-Block, der die Testfälle für diesen Test definiert. Schließlich wird jeder Testfall mit einer id und einer version definiert.

Hinweise zur Verwendung der Felder "id" und "version" und für jeden Testfall (test-Block) finden Sie unter Device-Advisor-Testfälle. Dieser Abschnitt enthält auch Informationen zu den verfügbaren configuration-Einstellungen.

Der folgende Block ist ein Beispiel für eine Root-Gruppenkonfiguration. Diese Konfiguration spezifiziert die Testfälle MQTTConnect Happy Case und MQTTConnect Exponential Backoff Retries zusammen mit Beschreibungen der Konfigurationsfelder.

{ "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 } }] }] }

Sie müssen die Root-Gruppenkonfiguration angeben, wenn Sie Ihre Testsuite-Definition erstellen. Speichern Sie die suiteDefinitionId, die im Antwortobjekt zurückgegeben wird. Sie können diese ID verwenden, um Ihre Testsuite-Definitionsinformationen abzurufen und Ihre Testsuite auszuführen.

Hier ist ein Java-Beispiel: 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() )

Abrufen einer Testsuite-Definition

Nachdem Sie Ihre Testsuite-Definition erstellt haben, erhalten Sie suiteDefinitionId im Antwortobjekt der CreateSuiteDefinition API Operation das Objekt.

Wenn der Vorgang die suiteDefinitionId zurückgibt, sehen Sie möglicherweise neue id-Felder in jeder Gruppe und eine Testfalldefinition innerhalb der Root-Gruppe. Sie können diese verwendenIDs, um eine Teilmenge Ihrer Testsuite-Definition auszuführen.

SDKJava-Beispiel:

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

Abrufen eines Testendpunkts

Verwenden Sie den GetEndpoint API Vorgang, um den von Ihrem Gerät verwendeten Testendpunkt abzurufen. Wählen Sie den Endpunkt aus, der am besten zu Ihrem Test passt. Um mehrere Testsuiten gleichzeitig auszuführen, verwenden Sie den Endpunkt auf Geräteebene, indem Sie einen thing ARN, certificate ARN oder device role ARN angeben. Um eine einzelne Testsuite auszuführen, geben Sie keine Argumente für den GetEndpoint Vorgang zur Auswahl des Endpunkts auf Kontoebene an.

SDKBeispiel:

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())

Ausführen einer Testsuite

Nachdem Sie eine Testsuite-Definition erstellt und Ihr Testgerät so konfiguriert haben, dass es eine Verbindung zu Ihrem Device Advisor-Testendpunkt herstellt, führen Sie Ihre Testsuite mit dem aus. StartSuiteRun API

MQTTKunden können entweder certificateArn oder verwenden, thingArn um die Testsuite auszuführen. Wenn beide konfiguriert sind, wird das Zertifikat verwendet, wenn es zum Ding gehört.

Verwenden Sie für MQTT mehr WebSocket Kunden, deviceRoleArn um die Testsuite auszuführen. Wenn sich die angegebene Rolle von der in der Testsuite-Definition angegebenen Rolle unterscheidet, hat die angegebene Rolle Vorrang vor der definierten Rolle.

Verwenden Sie für .parallelRun() true, wenn Sie einen Endpunkt auf Geräteebene verwenden, um mehrere Testsuiten parallel mit einem AWS-Konto auszuführen.

SDKBeispiel:

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())

Speichern Sie die suiteRunId aus der Antwort. Sie werden diese verwenden, um die Ergebnisse dieser Testsuite-Ausführung abzurufen.

Abrufen einer Testsuite-Ausführung

Nachdem Sie einen Testsuite-Lauf gestartet haben, können Sie den Fortschritt und die Ergebnisse mit dem überprüfen GetSuiteRunAPI.

SDKBeispiel:

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

Beenden einer Testsuite-Ausführung

Um einen Testsuite-Lauf zu beenden, der noch läuft, können Sie den StopSuiteRun API Vorgang aufrufen. Nachdem Sie die StopSuiteRun-Operation aufgerufen haben, startet der Service den Bereinigungsvorgang. Während der Service den Bereinigungsvorgang ausführt, führt die Testsuite Statusaktualisierungen bis Stopping durch. Der Bereinigungsvorgang kann mehrere Minuten in Anspruch nehmen. Sobald der Vorgang abgeschlossen ist, führt die Testsuite Statusaktualisierungen bis Stopped durch. Nachdem ein Testlauf vollständig beendet wurde, starten Sie eine weitere Testsuite-Ausführung. Sie können den Status der Ausführung der Suite mithilfe des GetSuiteRun API Vorgangs regelmäßig überprüfen, wie im vorherigen Abschnitt gezeigt.

SDKBeispiel:

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

Abrufen eines Qualifizierungsberichts für eine erfolgreiche Ausführung der Qualifizierungstestsuite

Wenn Sie eine Qualifizierungstestsuite ausführen, die erfolgreich abgeschlossen wurde, können Sie einen Qualifizierungsbericht mit dem GetSuiteRunReport API Vorgang abrufen. Sie verwenden diesen Qualifizierungsbericht, um Ihr Gerät für das AWS IoT Core -Qualifizierungsprogramm zu qualifizieren. Um festzustellen, ob es sich bei Ihrer Testsuite um eine Qualifizierungstestsuite handelt, überprüfen Sie, ob der intendedForQualification-Parameter auf true eingestellt ist. Nachdem Sie den GetSuiteRunReport API Vorgang aufgerufen haben, können Sie den Bericht von der zurückgegebenen Datei URL bis zu 90 Sekunden lang herunterladen. Wenn seit dem letzten Aufruf des Vorgangs mehr als 90 Sekunden vergangen sind, rufen Sie den GetSuiteRunReport Vorgang erneut auf, um einen neuen, gültigen URL Vorgang abzurufen.

SDKBeispiel:

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