Tutoriel : Développement d'une suite de tests IDT simple - Gratuit RTOS

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.

Tutoriel : Développement d'une suite de tests IDT simple

Une suite de tests combine les éléments suivants :

  • Exécutables de test contenant la logique de test

  • Fichiers de configuration décrivant la suite de tests

Ce didacticiel vous montre comment utiliser IDT pour FreeRTOS pour développer une suite de tests Python contenant un seul cas de test. Bien que ce didacticiel utilise le protocole SSH, il est utile d'apprendre à l'utiliser AWS IoT Device Tester avec les appareils FreeRTOS.

Dans ce didacticiel, vous allez effectuer les étapes suivantes :

Prérequis

Pour suivre ce didacticiel, vous aurez besoin des éléments suivants :

  • Exigences relatives à l'ordinateur hôte

    • Dernière version de AWS IoT Device Tester

    • Python 3.7 ou version ultérieure

      Pour vérifier la version de Python installée sur votre ordinateur, exécutez la commande suivante :

      python3 --version

      Sous Windows, si l'utilisation de cette commande renvoie une erreur, utilisez-la à la python --version place. Si le numéro de version renvoyé est 3.7 ou supérieur, exécutez la commande suivante dans un terminal Powershell pour la définir python3 comme alias pour votre python commande.

      Set-Alias -Name "python3" -Value "python"

      Si aucune information de version n'est renvoyée ou si le numéro de version est inférieur à 3.7, suivez les instructions de la section Télécharger Python pour installer Python 3.7+. Pour plus d'informations, consultez la documentation Python.

    • urllib3

      Pour vérifier qu'urllib3il est correctement installé, exécutez la commande suivante :

      python3 -c 'import urllib3'

      S'il n'urllib3est pas installé, exécutez la commande suivante pour l'installer :

      python3 -m pip install urllib3
  • Exigences relatives aux dispositifs

    • Un appareil doté d'un système d'exploitation Linux et d'une connexion réseau au même réseau que votre ordinateur hôte.

      Nous vous recommandons d'utiliser un Raspberry Pi avec le système d'exploitation Raspberry Pi. Assurez-vous de configurer SSH sur votre Raspberry Pi pour vous y connecter à distance.

Création d'un répertoire de suites de tests

IDT sépare logiquement les cas de test en groupes de tests au sein de chaque suite de tests. Chaque cas de test doit faire partie d'un groupe de test. Pour ce didacticiel, créez un dossier appelé MyTestSuite_1.0.0 et créez l'arborescence de répertoires suivante dans ce dossier :

MyTestSuite_1.0.0 └── suite └── myTestGroup └── myTestCase

Création de fichiers de configuration

Votre suite de tests doit contenir les fichiers de configuration requis suivants :

Fichiers requis

suite.json

Contient des informations sur la suite de tests. veuillez consulter Configurer suite.json.

group.json

Contient des informations sur un groupe de test. Vous devez créer un group.json fichier pour chaque groupe de test de votre suite de tests. veuillez consulter Configurer group.json.

test.json

Contient des informations sur un scénario de test. Vous devez créer un test.json fichier pour chaque scénario de test de votre suite de tests. veuillez consulter Configurer test.json.

  1. Dans le MyTestSuite_1.0.0/suite dossier, créez un suite.json fichier avec la structure suivante :

    { "id": "MyTestSuite_1.0.0", "title": "My Test Suite", "details": "This is my test suite.", "userDataRequired": false }
  2. Dans le MyTestSuite_1.0.0/myTestGroup dossier, créez un group.json fichier avec la structure suivante :

    { "id": "MyTestGroup", "title": "My Test Group", "details": "This is my test group.", "optional": false }
  3. Dans le MyTestSuite_1.0.0/myTestGroup/myTestCase dossier, créez un test.json fichier avec la structure suivante :

    { "id": "MyTestCase", "title": "My Test Case", "details": "This is my test case.", "execution": { "timeout": 300000, "linux": { "cmd": "python3", "args": [ "myTestCase.py" ] }, "mac": { "cmd": "python3", "args": [ "myTestCase.py" ] }, "win": { "cmd": "python3", "args": [ "myTestCase.py" ] } } }

L'arborescence de votre MyTestSuite_1.0.0 dossier doit désormais ressembler à ce qui suit :

MyTestSuite_1.0.0 └── suite ├── suite.json └── myTestGroup ├── group.json └── myTestCase └── test.json

Obtenez le SDK du client IDT

Vous utilisez le SDK du client IDT pour permettre à IDT d'interagir avec l'appareil testé et de communiquer les résultats des tests. Pour ce didacticiel, vous allez utiliser la version Python du SDK.

Depuis le <device-tester-extract-location>/sdks/python/ dossier, idt_client copiez-le dans votre MyTestSuite_1.0.0/suite/myTestGroup/myTestCase dossier.

Pour vérifier que le SDK a bien été copié, exécutez la commande suivante.

cd MyTestSuite_1.0.0/suite/myTestGroup/myTestCase python3 -c 'import idt_client'

Création de l'exécutable du scénario de test

Les exécutables du scénario de test contiennent la logique de test que vous souhaitez exécuter. Une suite de tests peut contenir plusieurs exécutables de scénarios de test. Pour ce didacticiel, vous allez créer un seul exécutable de scénario de test.

  1. Créez le fichier de suite de tests.

    Dans le MyTestSuite_1.0.0/suite/myTestGroup/myTestCase dossier, créez un myTestCase.py fichier avec le contenu suivant :

    from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() if __name__ == "__main__": main()
  2. Utilisez les fonctions du SDK client pour ajouter la logique de test suivante à votre myTestCase.py fichier :

    1. Exécutez une commande SSH sur le périphérique testé.

      from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() # Create an execute on device request exec_req = ExecuteOnDeviceRequest(ExecuteOnDeviceCommand("echo 'hello world'")) # Run the command exec_resp = client.execute_on_device(exec_req) # Print the standard output print(exec_resp.stdout) if __name__ == "__main__": main()
    2. Envoyez le résultat du test à IDT.

      from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() # Create an execute on device request exec_req = ExecuteOnDeviceRequest(ExecuteOnDeviceCommand("echo 'hello world'")) # Run the command exec_resp = client.execute_on_device(exec_req) # Print the standard output print(exec_resp.stdout) # Create a send result request sr_req = SendResultRequest(TestResult(passed=True)) # Send the result client.send_result(sr_req) if __name__ == "__main__": main()

Configurer les informations de l'appareil pour IDT

Configurez les informations de votre appareil pour qu'IDT exécute le test. Vous devez mettre à jour le device.json modèle situé dans le <device-tester-extract-location>/configs dossier avec les informations suivantes.

[ { "id": "pool", "sku": "N/A", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh", "ip": "<ip-address>", "port": "<port>", "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", "privKeyPath": "/path/to/private/key", "password": "<password>" } } } } ] } ]

Dans l'devicesobjet, fournissez les informations suivantes :

id

Identifiant unique défini par l'utilisateur pour votre appareil.

connectivity.ip

L'adresse IP de votre appareil.

connectivity.port

Facultatif. Le numéro de port à utiliser pour les connexions SSH à votre appareil.

connectivity.auth

Informations d'authentification pour la connexion.

Cette propriété s'applique uniquement si connectivity.protocol est défini sur ssh.

connectivity.auth.method

Méthode d'authentification utilisée pour accéder à un appareil sur le protocole de connectivité donné.

Les valeurs prises en charge sont :

  • pki

  • password

connectivity.auth.credentials

Informations d'identification utilisées pour l'authentification.

connectivity.auth.credentials.user

Le nom d'utilisateur utilisé pour vous connecter à votre appareil.

connectivity.auth.credentials.privKeyPath

Le chemin complet vers la clé privée utilisée pour vous connecter à votre appareil.

Cette valeur s'applique uniquement si connectivity.auth.method est défini sur pki.

devices.connectivity.auth.credentials.password

Le mot de passe utilisé pour vous connecter à votre appareil.

Cette valeur s'applique uniquement si connectivity.auth.method est défini sur password.

Note

Spécifiez privKeyPath uniquement si method est défini sur pki.

Spécifiez password uniquement si method est défini sur password.

Exécutez la suite de tests

Après avoir créé votre suite de tests, vous devez vous assurer qu'elle fonctionne comme prévu. Pour ce faire, procédez comme suit pour exécuter la suite de tests avec votre pool d'appareils existant.

  1. Copiez votre MyTestSuite_1.0.0 dossier dans<device-tester-extract-location>/tests.

  2. Exécutez les commandes suivantes :

    cd <device-tester-extract-location>/bin ./devicetester_[linux | mac | win_x86-64] run-suite --suite-id MyTestSuite

IDT exécute votre suite de tests et diffuse les résultats sur la console. Lorsque le test est terminé, les informations suivantes s'affichent :

time="2020-10-19T09:24:47-07:00" level=info msg=Using pool: pool time="2020-10-19T09:24:47-07:00" level=info msg=Using test suite "MyTestSuite_1.0.0" for execution time="2020-10-19T09:24:47-07:00" level=info msg=b'hello world\n' suiteId=MyTestSuite groupId=myTestGroup testCaseId=myTestCase deviceId=my-device executionId=9a52f362-1227-11eb-86c9-8c8590419f30 time="2020-10-19T09:24:47-07:00" level=info msg=All tests finished. executionId=9a52f362-1227-11eb-86c9-8c8590419f30 time="2020-10-19T09:24:48-07:00" level=info msg= ========== Test Summary ========== Execution Time: 1s Tests Completed: 1 Tests Passed: 1 Tests Failed: 0 Tests Skipped: 0 ---------------------------------- Test Groups: myTestGroup: PASSED ---------------------------------- Path to AWS IoT Device Tester Report: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/awsiotdevicetester_report.xml Path to Test Execution Logs: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/logs Path to Aggregated JUnit Report: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/MyTestSuite_Report.xml

Résolution des problèmes

Utilisez les informations suivantes pour résoudre les problèmes rencontrés lors de l'exécution du didacticiel.

Le scénario de test ne s'exécute pas correctement

Si le test échoue, IDT diffuse les journaux d'erreurs sur la console afin de vous aider à résoudre les problèmes liés à l'exécution du test. Avant de consulter les journaux d'erreurs, vérifiez les points suivants :

  • Le SDK du client IDT se trouve dans le bon dossier, comme décrit dans cette étape.

  • Vous répondez à tous les prérequis pour ce didacticiel.

Impossible de se connecter à l'appareil testé

Vérifiez les paramètres suivants :

  • Votre device.json fichier contient l'adresse IP, le port et les informations d'authentification corrects.

  • Vous pouvez vous connecter à votre appareil via SSH depuis votre ordinateur hôte.