Flux de travail Device Advisor - AWS IoT Core

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Flux de travail Device Advisor

Ce didacticiel explique comment créer une suite de tests personnalisée et exécuter des tests sur le périphérique que vous souhaitez tester dans la console. Une fois les tests terminés, vous pouvez consulter les résultats et les journaux détaillés.

Prérequis

Avant de commencer ce didacticiel, suivez les étapes décrites dans Configuration.

Création d'une définition de suite de tests

Tout d'abord, installez un AWS SDK.

Syntaxe de rootGroup

Un groupe racine est une JSON chaîne qui indique les cas de test à inclure dans votre suite de tests. Il spécifie également toutes les configurations nécessaires pour ces cas de test. Utilisez le groupe racine pour structurer et organiser votre suite de tests en fonction de vos besoins. La hiérarchie d'une suite de tests est la suivante :

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

Une suite de tests doit comporter au moins un groupe de test, et chaque groupe de test doit comporter au moins un cas de test. Device Advisor exécute les tests dans l'ordre dans lequel vous définissez les groupes de tests et les scénarios de test.

Chaque groupe racine suit cette structure de base :

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

Dans le groupe racine, vous définissez la suite de tests avec un nameconfiguration, et le tests qui contient le groupe. Le groupe tests contient les définitions des tests individuels. Vous définissez chaque test avec un nameconfiguration, et un test bloc qui définit les cas de test pour ce test. Enfin, chaque cas de test est défini avec un id et version.

Pour plus d'informations sur l'utilisation des champs "id" et "version" pour chaque cas de test (test bloc), consultez Cas de test Device Advisor. Cette section contient également des informations sur les paramètres configuration disponibles.

Le bloc suivant est un exemple de configuration de groupe racine. Cette configuration spécifie les cas de test MQTTConnect Happy Case et MQTTConnect Exponential Backoff Retries, ainsi que les descriptions des champs de configuration.

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

Vous devez fournir la configuration du groupe racine lorsque vous créez la définition de votre suite de tests. Enregistrez le suiteDefinitionId renvoyé dans l’objet de réponse. Vous pouvez utiliser cet ID pour récupérer les informations de définition de votre suite de tests et exécuter votre suite de tests.

Voici un SDK exemple 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") .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() )

Obtenir une définition de suite de tests

Une fois que vous avez créé la définition de votre suite de tests, vous recevez l'suiteDefinitionIdobjet de réponse de l'CreateSuiteDefinitionAPIopération.

Lorsque l'opération renvoie le suiteDefinitionId, vous pouvez voir de nouveaux champs id dans chaque groupe et une définition de cas de test dans le groupe racine. Vous pouvez les utiliser IDs pour exécuter un sous-ensemble de la définition de votre suite de tests.

SDKExemple Java :

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

Obtenez un point de terminaison de test

Utilisez l'GetEndpointAPIopération pour obtenir le point de terminaison de test utilisé par votre appareil. Sélectionnez le point de terminaison qui correspond le mieux à votre test. Pour exécuter simultanément plusieurs suites de tests, utilisez le point de terminaison au niveau de l'appareil en fournissant un thing ARN, certificate ARN, ou device role ARN. Pour exécuter une seule suite de tests, ne fournissez aucun argument à l' GetEndpoint opération permettant de choisir le point de terminaison au niveau du compte.

SDKexemple :

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

Lancer l'exécution d'une suite de test

Après avoir créé une définition de suite de tests et configuré votre appareil de test pour qu'il se connecte à votre point de terminaison de test Device Advisor, exécutez votre suite de tests avec le. StartSuiteRun API

Pour les MQTT clients, utilisez l'une certificateArn ou thingArn l'autre option ou exécutez la suite de tests. Si les deux sont configurés, le certificat est utilisé s'il appartient à l'objet.

Pour les WebSocket clients MQTT excédentaires, deviceRoleArn utilisez-le pour exécuter la suite de tests. Si le rôle spécifié est différent du rôle spécifié dans la définition de la suite de tests, le rôle spécifié remplace le rôle défini.

Pour .parallelRun(), utilisez true si vous utilisez un point de terminaison au niveau de l'appareil pour exécuter plusieurs suites de tests en parallèle en utilisant une seule Compte AWS.

SDKexemple :

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

Enregistrez le suiteRunId de la réponse. Vous l'utiliserez pour récupérer les résultats de cette suite de tests exécutée.

Exécutez une suite de tests

Après avoir lancé l'exécution d'une suite de tests, vous pouvez vérifier sa progression et ses résultats à l'aide du GetSuiteRunAPI.

SDKexemple :

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

Arrêter l'exécution d'une suite de tests

Pour arrêter l'exécution d'une suite de tests toujours en cours, vous pouvez lancer l'StopSuiteRunAPIopération. Une fois que vous avez appelé l'opération StopSuiteRun, le service lance le processus de nettoyage. Pendant que le service exécute le processus de nettoyage, la suite de test exécute des mises à jour de statut sur Stopping. Le processus de nettoyage peut prendre plusieurs minutes. Une fois le processus terminé, la suite de tests exécute des mises à jour de statut sur Stopped. Une fois qu'un cycle de test est complètement arrêté, vous pouvez lancer une autre suite de test. Vous pouvez vérifier régulièrement l'état d'exécution de la suite à l'aide de cette GetSuiteRun API opération, comme indiqué dans la section précédente.

SDKexemple :

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

Obtenez un rapport de qualification pour une exécution réussie de la suite de tests de qualification

Si vous exécutez une suite de tests de qualification qui se termine avec succès, vous pouvez récupérer un rapport de qualification avec l'GetSuiteRunReportAPIopération. Vous utilisez ce rapport de qualification pour qualifier votre appareil dans le cadre du programme AWS IoT Core de qualification. Pour déterminer si votre suite de tests est une suite de tests de qualification, vérifiez si le paramètre intendedForQualification est défini sur true. Après avoir appelé l'GetSuiteRunReportAPIopération, vous pouvez télécharger le rapport renvoyé URL pendant 90 secondes maximum. Si plus de 90 secondes se sont écoulées depuis la dernière fois que vous avez appelé l'GetSuiteRunReportopération, appelez-la à nouveau pour en récupérer une nouvelle valide. URL

SDKexemple :

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