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.
Création d'exécutables de scénarios de test IDT
Vous pouvez créer et placer des exécutables de scénarios de test dans un dossier de suite de tests de la manière suivante :
-
Pour les suites de tests qui utilisent des arguments ou des variables d'environnement provenant des
test.json
fichiers pour déterminer les tests à exécuter, vous pouvez créer un seul scénario de test exécutable pour l'ensemble de la suite de tests, ou un exécutable de test pour chaque groupe de tests de la suite de tests. -
Pour une suite de tests dans laquelle vous souhaitez exécuter des tests spécifiques en fonction de commandes spécifiées, vous devez créer un fichier exécutable pour chaque cas de test de la suite de tests.
En tant que rédacteur de tests, vous pouvez déterminer quelle approche convient à votre cas d'utilisation et structurer l'exécutable de votre scénario de test en conséquence. Assurez-vous de fournir le chemin exécutable du scénario de test correct dans chaque test.json
fichier et que le fichier exécutable spécifié s'exécute correctement.
Lorsque tous les appareils sont prêts pour l'exécution d'un scénario de test, IDT lit les fichiers suivants :
-
Le
test.json
scénario de test sélectionné détermine les processus à démarrer et les variables d'environnement à définir. -
Le
suite.json
for the test suite détermine les variables d'environnement à définir.
IDT lance le processus exécutable de test requis en fonction des commandes et des arguments spécifiés dans le test.json
fichier, et transmet les variables d'environnement requises au processus.
Utiliser le SDK du client IDT
Le client IDT vous permet SDKs de simplifier la façon dont vous écrivez la logique de test dans votre exécutable de test grâce à des commandes d'API que vous pouvez utiliser pour interagir avec IDT et vos appareils testés. IDT fournit actuellement les services suivants : SDKs
-
SDK client IDT pour Python
-
SDK client IDT pour Go
-
SDK client IDT pour Java
Ils se SDKs trouvent dans le
dossier. Lorsque vous créez un nouvel exécutable de scénario de test, vous devez copier le SDK que vous souhaitez utiliser dans le dossier contenant votre exécutable de scénario de test et référencer le SDK dans votre code. Cette section fournit une brève description des commandes d'API disponibles que vous pouvez utiliser dans les exécutables de vos scénarios de test. <device-tester-extract-location>
/sdks
Interaction avec les appareils
Les commandes suivantes vous permettent de communiquer avec l'appareil testé sans avoir à implémenter de fonctions supplémentaires d'interaction avec l'appareil et de gestion de la connectivité.
ExecuteOnDevice
-
Permet aux suites de tests d'exécuter des commandes shell sur un appareil prenant en charge les connexions SSH ou Docker shell.
CopyToDevice
-
Permet aux suites de tests de copier un fichier local depuis la machine hôte qui exécute IDT vers un emplacement spécifié sur un appareil prenant en charge les connexions SSH ou Docker shell.
ReadFromDevice
-
Permet aux suites de tests de lire à partir du port série des appareils prenant en charge les connexions UART.
Note
IDT ne gérant pas les connexions directes aux appareils établies à l'aide des informations d'accès aux appareils issues du contexte, nous vous recommandons d'utiliser ces commandes API d'interaction avec les appareils dans les exécutables de vos scénarios de test. Toutefois, si ces commandes ne répondent pas aux exigences de votre scénario de test, vous pouvez récupérer les informations d'accès à l'appareil à partir du contexte IDT et les utiliser pour établir une connexion directe avec l'appareil à partir de la suite de tests.
Pour établir une connexion directe, récupérez les informations dans les resource.devices.connectivity
champs device.connectivity
et pour votre appareil testé et pour les périphériques ressources, respectivement. Pour plus d'informations sur l'utilisation du contexte IDT, consultezUtiliser le contexte IDT.
Interaction avec IDT
Les commandes suivantes permettent à vos suites de tests de communiquer avec IDT.
PollForNotifications
-
Permet aux suites de tests de vérifier les notifications provenant d'IDT.
GetContextValue
etGetContextString
-
Permet aux suites de tests de récupérer des valeurs à partir du contexte IDT. Pour de plus amples informations, veuillez consulter Utiliser le contexte IDT.
SendResult
-
Permet aux suites de tests de communiquer les résultats des scénarios de test à IDT. Cette commande doit être appelée à la fin de chaque scénario de test dans une suite de tests.
Interaction avec l'hôte
La commande suivante permet à vos suites de tests de communiquer avec la machine hôte.
PollForNotifications
-
Permet aux suites de tests de vérifier les notifications provenant d'IDT.
GetContextValue
etGetContextString
-
Permet aux suites de tests de récupérer des valeurs à partir du contexte IDT. Pour de plus amples informations, veuillez consulter Utiliser le contexte IDT.
ExecuteOnHost
-
Permet aux suites de tests d'exécuter des commandes sur la machine locale et permet à IDT de gérer le cycle de vie des exécutables des scénarios de test.
Activer les commandes IDT CLI
La run-suite
commande IDT CLI fournit plusieurs options qui permettent au lanceur de tests de personnaliser l'exécution des tests. Pour permettre aux testeurs d'utiliser ces options pour exécuter votre suite de tests personnalisée, vous implémentez le support de la CLI IDT. Si vous n'implémentez pas le support, les testeurs pourront toujours exécuter des tests, mais certaines options de la CLI ne fonctionneront pas correctement. Pour offrir une expérience client optimale, nous vous recommandons de mettre en œuvre la prise en charge des arguments suivants pour la run-suite
commande dans la CLI IDT :
timeout-multiplier
-
Spécifie une valeur supérieure à 1,0 qui sera appliquée à tous les délais d'expiration lors de l'exécution des tests.
Les testeurs peuvent utiliser cet argument pour augmenter le délai d'expiration des scénarios de test qu'ils souhaitent exécuter. Lorsqu'un lanceur de tests spécifie cet argument dans sa
run-suite
commande, IDT l'utilise pour calculer la valeur de la variable d'environnement IDT_TEST_TIMEOUT et définit le champ dans le contexte IDT.config.timeoutMultiplier
Pour étayer cet argument, vous devez procéder comme suit :-
Au lieu d'utiliser directement la valeur de délai d'attente du
test.json
fichier, lisez la variable d'environnement IDT_TEST_TIMEOUT pour obtenir la valeur de délai d'expiration correctement calculée. -
Récupérez la
config.timeoutMultiplier
valeur dans le contexte IDT et appliquez-la à des délais d'expiration prolongés.
Pour plus d'informations sur la fermeture anticipée en raison d'événements liés au délai imparti, consultez. Spécifier le comportement de sortie
-
stop-on-first-failure
-
Spécifie qu'IDT doit arrêter d'exécuter tous les tests en cas d'échec.
Lorsqu'un lanceur de tests spécifie cet argument dans sa
run-suite
commande, IDT arrête d'exécuter les tests dès qu'il rencontre un échec. Toutefois, si les scénarios de test sont exécutés en parallèle, cela peut entraîner des résultats inattendus. Pour mettre en œuvre le support, assurez-vous que si IDT rencontre cet événement, votre logique de test indique à tous les scénarios de test en cours d'exécution de s'arrêter, de nettoyer les ressources temporaires et de communiquer un résultat de test à IDT. Pour plus d'informations sur la gestion anticipée des défaillances, consultezSpécifier le comportement de sortie. group-id
ettest-id
-
Spécifie qu'IDT ne doit exécuter que les groupes de tests ou les cas de test sélectionnés.
Les testeurs peuvent utiliser ces arguments avec leur
run-suite
commande pour spécifier le comportement d'exécution du test suivant :-
Exécutez tous les tests au sein des groupes de tests spécifiés.
-
Exécutez une sélection de tests au sein d'un groupe de tests spécifié.
Pour étayer ces arguments, l'orchestrateur de tests de votre suite de tests doit inclure un ensemble
RunTask
et desChoice
états spécifiques dans votre orchestrateur de tests. Si vous n'utilisez pas de machine à états personnalisée, l'orchestrateur de test IDT par défaut inclut les états requis pour vous et vous n'avez pas besoin de prendre d'autres mesures. Toutefois, si vous utilisez un orchestrateur de test personnalisé, utilisez-le Exemple de machine à états : exécuter des groupes de test sélectionnés par l'utilisateur comme exemple pour ajouter les états requis dans votre orchestrateur de test. -
Pour plus d'informations sur les commandes IDT CLI, consultezDéboguer et exécuter des suites de tests personnalisées.
Rédiger des journaux d'événements
Pendant le test, vous envoyez des données à la console stdout
et vous stderr
devez y écrire des journaux d'événements et des messages d'erreur. Pour plus d'informations sur le format des messages de console, consultezFormat des messages de console.
Lorsque l'IDT a terminé d'exécuter la suite de tests, ces informations sont également disponibles dans le test_manager.log
fichier situé dans le
dossier.<devicetester-extract-location>
/results/<execution-id>
/logs
Vous pouvez configurer chaque scénario de test pour écrire les journaux de son exécution, y compris les journaux du périphérique testé, dans le
fichier situé dans le <group-id>
_<test-id>
dossier. Pour ce faire, récupérez le chemin d'accès au fichier journal à partir du contexte IDT contenant la <device-tester-extract-location>
/results/execution-id
/logstestData.logFilePath
requête, créez un fichier sur ce chemin et inscrivez le contenu que vous souhaitez y insérer. IDT met automatiquement à jour le chemin en fonction du scénario de test en cours d'exécution. Si vous choisissez de ne pas créer le fichier journal pour un scénario de test, aucun fichier n'est généré pour ce scénario de test.
Vous pouvez également configurer votre exécutable texte pour créer des fichiers journaux supplémentaires, selon les besoins, dans le
dossier. Nous vous recommandons de spécifier des préfixes uniques pour les noms de fichiers journaux afin que vos fichiers ne soient pas remplacés.<device-tester-extract-location>
/logs
Signaler les résultats à IDT
IDT écrit les résultats des tests dans les fichiers awsiotdevicetester_report.xml
et les
fichiers. Ces fichiers de rapport se trouvent danssuite-name
_report.xml
. Les deux rapports capturent les résultats de l'exécution de la suite de tests. Pour plus d'informations sur les schémas utilisés par IDT pour ces rapports, voir Consulter les résultats et les journaux des tests IDT<device-tester-extract-location>
/results/<execution-id>
/
Pour renseigner le contenu du
fichier, vous devez utiliser la suite-name
_report.xmlSendResult
commande pour communiquer les résultats des tests à IDT avant la fin de l'exécution du test. Si IDT ne trouve pas les résultats d'un test, il émet une erreur pour le scénario de test. L'extrait Python suivant montre les commandes permettant d'envoyer un résultat de test à IDT :
request-variable
= SendResultRequest(TestResult(result
)) client.send_result(request-variable
)
Si vous ne communiquez pas les résultats via l'API, IDT recherche les résultats des tests dans le dossier des artefacts de test. Le chemin d'accès à ce dossier est stocké dans le testData.testArtifactsPath
fichier dans le contexte IDT. Dans ce dossier, IDT utilise le premier fichier XML trié par ordre alphabétique qu'il trouve comme résultat du test.
Si votre logique de test produit des résultats JUnit XML, vous pouvez écrire les résultats du test dans un fichier XML dans le dossier des artefacts pour fournir directement les résultats à IDT au lieu de les analyser puis d'utiliser l'API pour les envoyer à IDT.
Si vous utilisez cette méthode, assurez-vous que votre logique de test résume correctement les résultats du test et formatez votre fichier de résultats dans le même format que le
fichier. IDT n'effectue aucune validation des données que vous fournissez, sauf dans les cas suivants :suite-name
_report.xml
-
IDT ignore toutes les propriétés de la
testsuites
balise. Au lieu de cela, il calcule les propriétés des balises à partir des résultats d'autres groupes de test rapportés. -
Au moins une
testsuite
balise doit figurer à l'intérieurtestsuites
.
Étant donné qu'IDT utilise le même dossier d'artefacts pour tous les scénarios de test et ne supprime pas les fichiers de résultats entre les tests, cette méthode peut également entraîner des rapports erronés si IDT lit le mauvais fichier. Nous vous recommandons d'utiliser le même nom pour le fichier de résultats XML généré dans tous les scénarios de test afin de remplacer les résultats de chaque scénario de test et de vous assurer que les résultats corrects sont disponibles pour IDT. Bien que vous puissiez utiliser une approche mixte pour créer des rapports dans votre suite de tests, c'est-à-dire utiliser un fichier de résultats XML pour certains cas de test et soumettre les résultats via l'API pour d'autres, nous ne recommandons pas cette approche.
Spécifier le comportement de sortie
Configurez votre exécutable texte pour qu'il se ferme toujours avec un code de sortie de 0, même si un scénario de test indique un échec ou un résultat d'erreur. Utilisez des codes de sortie différents de zéro uniquement pour indiquer qu'un scénario de test n'a pas été exécuté ou si l'exécutable du scénario de test n'a pas pu communiquer de résultats à IDT. Lorsque IDT reçoit un code de sortie différent de zéro, cela indique que le scénario de test a rencontré une erreur qui l'a empêché de s'exécuter.
IDT peut demander ou s'attendre à ce qu'un scénario de test cesse de s'exécuter avant qu'il ne soit terminé dans les événements suivants. Utilisez ces informations pour configurer le fichier exécutable de votre scénario de test afin de détecter chacun de ces événements dans le scénario de test :
- Expiration
-
Se produit lorsqu'un scénario de test s'exécute pendant une durée supérieure à la valeur de délai spécifiée dans le
test.json
fichier. Si le lanceur de test a utilisé l'timeout-multiplier
argument pour spécifier un multiplicateur de délai d'attente, IDT calcule la valeur du délai d'expiration avec le multiplicateur.Pour détecter cet événement, utilisez la variable d'environnement IDT_TEST_TIMEOUT. Lorsqu'un lanceur de tests lance un test, IDT définit la valeur de la variable d'environnement IDT_TEST_TIMEOUT sur la valeur du délai d'attente calculée (en secondes) et transmet la variable à l'exécutable du scénario de test. Vous pouvez lire la valeur de la variable pour définir un temporisateur approprié.
- Interrompre
-
Survient lorsque le lanceur de test interrompt l'IDT. Par exemple, en appuyant surCtrl+C.
Étant donné que les terminaux propagent les signaux à tous les processus enfants, vous pouvez simplement configurer un gestionnaire de signaux dans vos scénarios de test pour détecter les signaux d'interruption.
Vous pouvez également interroger régulièrement l'API pour vérifier la valeur du
CancellationRequested
booléen dans la réponse de l'PollForNotifications
API. Lorsque IDT reçoit un signal d'interruption, il définit la valeur duCancellationRequested
booléen sur.true
- Arrêt dès le premier échec
-
Se produit lorsqu'un scénario de test exécuté en parallèle avec le scénario de test en cours échoue et que le lanceur de test a utilisé l'
stop-on-first-failure
argument pour spécifier qu'IDT doit s'arrêter en cas de défaillance.Pour détecter cet événement, vous pouvez interroger régulièrement l'API afin de vérifier la valeur du
CancellationRequested
booléen dans la réponse de l'PollForNotifications
API. Lorsqu'IDT rencontre une défaillance et est configuré pour s'arrêter lors du premier échec, il définit la valeur duCancellationRequested
booléen sur.true
Lorsque l'un de ces événements se produit, IDT attend 5 minutes que les scénarios de test en cours soient terminés. Si tous les scénarios de test en cours ne se terminent pas dans les 5 minutes, IDT force l'arrêt de chacun de leurs processus. Si IDT n'a pas reçu les résultats des tests avant la fin des processus, il marquera les cas de test comme ayant expiré. Il est recommandé de veiller à ce que vos scénarios de test exécutent les actions suivantes lorsqu'ils rencontrent l'un des événements :
-
Arrêtez d'exécuter la logique de test normale.
-
Nettoyez toutes les ressources temporaires, telles que les artefacts de test présents sur l'appareil testé.
-
Signalez un résultat de test à IDT, tel qu'un échec ou une erreur.
-
Sortir.