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 AWS IoT Greengrass pour développer une suite de tests Python contenant un seul cas de test. 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 --versionSous Windows, si l'utilisation de cette commande renvoie une erreur, utilisez-la à la
python --versionplace. 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éfinirpython3comme alias pour votrepythoncommande.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 . -
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
-
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 de configuration requis
suite.json-
Contient des informations sur la suite de tests. Consultez Configurer suite.json.
group.json-
Contient des informations sur un groupe de test. Vous devez créer un
group.jsonfichier pour chaque groupe de test de votre suite de tests. Consultez Configurer group.json. test.json-
Contient des informations sur un scénario de test. Vous devez créer un
test.jsonfichier pour chaque scénario de test de votre suite de tests. Consultez Configurer test.json.
-
Dans le
MyTestSuite_1.0.0/suitedossier, créez unsuite.jsonfichier avec la structure suivante :{ "id": "MyTestSuite_1.0.0", "title": "My Test Suite", "details": "This is my test suite.", "userDataRequired": false } -
Dans le
MyTestSuite_1.0.0/myTestGroupdossier, créez ungroup.jsonfichier avec la structure suivante :{ "id": "MyTestGroup", "title": "My Test Group", "details": "This is my test group.", "optional": false } -
Dans le
MyTestSuite_1.0.0/myTestGroup/myTestCasedossier, créez untest.jsonfichier 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 dossier, <device-tester-extract-location>/sdks/python/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 ne créerez qu'un seul exécutable de scénario de test.
-
Créez le fichier de suite de tests.
Dans le
MyTestSuite_1.0.0/suite/myTestGroup/myTestCasedossier, créez unmyTestCase.pyfichier avec le contenu suivant :from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() if __name__ == "__main__": main() -
Utilisez les fonctions du SDK client pour ajouter la logique de test suivante à votre
myTestCase.pyfichier :-
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() -
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 dossier avec les informations suivantes.<device-tester-extract-location>/configs
[ { "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.protocolest défini surssh.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.methodest défini surpki. devices.connectivity.auth.credentials.password-
Le mot de passe utilisé pour vous connecter à votre appareil.
Cette valeur s'applique uniquement si
connectivity.auth.methodest défini surpassword.
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.
-
Copiez votre
MyTestSuite_1.0.0dossier dans.<device-tester-extract-location>/tests -
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 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 tout problème lié à 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 :
Impossible de se connecter à l'appareil testé
Vérifiez les paramètres suivants :
-
Votre
device.jsonfichier 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.