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 chaîne JSON 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 MQTT Connect Happy Case et MQTT Connect 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 exemple de SDK 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

Après avoir créé la définition de votre suite de tests, vous recevez suiteDefinitionId l'objet de réponse de l'opération d'API CreateSuiteDefinition.

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 utiliser ces identifiants pour exécuter un sous-ensemble de la définition de votre suite de tests.

Exemples de SDK Java

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

Obtenez un point de terminaison de test

Utilisez l'opération GetEndpoint API 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.

Exemples de kit 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())

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 l'API StartSuiteRun.

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

Pour MQTT over WebSocket customer, utilisez-le deviceRoleArn 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.

Exemples de kit 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())

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 test, vous pouvez vérifier sa progression et ses résultats à l'aide de l'API GetSuiteRun.

Exemples de kit SDK :

// 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 appeler l'opération API StopSuiteRun. 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 l'opération API GetSuiteRun, comme indiqué dans la section précédente.

Exemples de kit SDK :

// 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'opération d'API GetSuiteRunReport. 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'opération API GetSuiteRunReport, vous pouvez télécharger le rapport à partir de l'URL renvoyée pendant 90 secondes au maximum. Si plus de 90 secondes se sont écoulées depuis la dernière fois que vous avez appelé l'opération GetSuiteRunReport, appelez-la à nouveau pour récupérer une nouvelle URL valide.

Exemples de kit SDK :

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