Configurer l'orchestrateur de test IDT - AWS IoT Greengrass

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.

Configurer l'orchestrateur de test IDT

À partir de IDT v4.5.1, IDT inclut un nouveauorchestrateur de testsComposant. L'orchestrateur de test est un composant IDT qui contrôle le flux d'exécution de la suite de tests et génère le rapport de test une fois qu'IDT a terminé l'exécution de tous les tests. L'orchestrateur de test détermine la sélection des tests et l'ordre dans lequel les tests sont exécutés en fonction des règles définies par l'utilisateur.

Si votre suite de tests n'inclut pas d'orchestrateur de test défini par l'utilisateur, IDT générera un orchestrateur de test pour vous.

L'orchestrateur de test par défaut remplit les fonctions suivantes :

  • Offre aux coureurs de tests la possibilité de sélectionner et d'exécuter des groupes de tests spécifiques, au lieu de toute la suite de tests.

  • Si des groupes de tests spécifiques ne sont pas sélectionnés, exécute tous les groupes de tests de la suite de tests dans un ordre aléatoire.

  • Génère des rapports et imprime un résumé de la console qui affiche les résultats des tests pour chaque groupe de test et chaque cas de test.

L'orchestrateur de test remplace l'orchestrateur de test IDT. Nous vous recommandons fortement d'utiliser l'orchestrateur de test pour développer vos suites de tests au lieu de l'orchestrateur de test IDT. L'orchestrateur de test offre les fonctionnalités améliorées suivantes :

  • Utilise un format déclaratif par rapport au format impératif utilisé par la machine d'état IDT. Ceci vous permet despécifierquels tests vous souhaitez exécuter etquandvous voulez les diriger.

  • Gère la gestion des groupes spécifiques, la génération de rapports, la gestion des erreurs et le suivi des résultatsde sorte que vous n'êtes pas requispour gérer manuellement ces actions.

  • Utilise le format YAML, qui prend en charge les commentaires par défaut.

  • Nécessite80 pour centmoins d'espace disque que l'orchestrateur de test pour définir le même flux de travail.

  • Ajoute une validation pré-test pour vérifier que la définition de votre flux de travail ne contient pas d'ID de test ou de dépendances circulaires incorrects.

Format de l'orchestrateur de test

Vous pouvez utiliser le modèle suivant pour configurer le vôtre<custom-test-suite-folder>/suite/test_orchestrator.yamldans le fichier:

Aliases: string: context-expression ConditionalTests: - Condition: context-expression Tests: - test-descriptor Order: - - group-descriptor - group-descriptor Features: - Name: feature-name Value: support-description Condition: context-expression Tests: - test-descriptor OneOfTests: - test-descriptor IsRequired: boolean

Tous les champs qui contiennent des valeurs sont requis, comme indiqué ici :

Aliases

Facultatif. Les chaînes définies par l'utilisateur qui correspondent à des expressions contextuelles. Les alias vous permettent de générer des noms conviviaux pouridentifiez les expressions contextuelles dans la configuration de votre orchestrateur de test. Ceci est particulièrement utile si vous créez des expressions de contexte ou d'expressions de contexte complexes que vous utilisez à plusieurs endroits.

Vous pouvez utiliser des expressions de contexte pour stocker des requêtes contextuelles qui vous permettent d'accéder aux données provenant d'autres configurations IDT. Pour plus d'informations, consultez Accédez aux données dans le contexte.

Exemple
Aliases: FizzChosen: "'{{$pool.features[?(@.name == 'Fizz')].value[0]}}' == 'yes'" BuzzChosen: "'{{$pool.features[?(@.name == 'Buzz')].value[0]}}' == 'yes'" FizzBuzzChosen: "'{{$aliases.FizzChosen}}' && '{{$aliases.BuzzChosen}}'"
ConditionalTests

Facultatif. Liste des conditions et des cas de test correspondants exécutés lorsque chaque condition est satisfaite. Chaque condition peut comporter plusieurs cas de test. Toutefois, vous ne pouvez attribuer un cas de test donné qu'à une seule condition.

Par défaut, IDT exécute tout cas de test qui n'est pas affecté à une condition de cette liste. Si vous ne spécifiez pas cette section, IDT exécute tous les groupes de tests de la suite de tests.

Chaque article duConditionalTestscomprend les paramètres suivants :

Condition

Une expression de contexte qui correspond àBooléenValeur . Si la valeur évaluée est vraie, IDT exécute les scénarios de test spécifiés dans leTests  Paramètre .

Tests

La liste des descripteurs de test.

Chaque descripteur de test utilise l'ID du groupe de test et un ou plusieurs ID de cas de test pour identifier les tests individuels à exécuter à partir d'un groupe de test spécifique. Le descripteur de test utilise le format suivant :

GroupId: group-id CaseIds: [test-id, test-id] # optional
Exemple

L'exemple suivant utilise des expressions contextuelles génériques que vous pouvez définir commeAliases.

ConditionalTests: - Condition: "{{$aliases.Condition1}}" Tests: - GroupId: A - GroupId: B - Condition: "{{$aliases.Condition2}}" Tests: - GroupId: D - Condition: "{{$aliases.Condition1}} || {{$aliases.Condition2}}" Tests: - GroupId: C

En fonction des conditions définies, IDT sélectionne les groupes de test comme suit :

  • SiCondition1est vrai, IDT exécute les tests dans les groupes de test A, B et C.

  • SiCondition2est vrai, IDT exécute les tests dans les groupes de test C et D.

Order

Facultatif. Ordre que dans lequel effectuer les tests. Vous spécifiez l'ordre de test au niveau du groupe de test. Si vous ne spécifiez pas cette section, IDT exécute tous les groupes de test applicables dans un ordre aléatoire. PourOrderest une liste de listes de descripteurs de groupes. Tous les groupes de tests que vous ne répertoriez pas dansOrder, peut être exécuté en parallel avec n'importe quel autre groupe de test répertorié.

Chaque liste de descripteurs de groupe contient l'un des autres descripteurs de groupe et identifie l'ordre dans lequel exécuter les groupes spécifiés dans chaque descripteur. Vous pouvez utiliser les formats suivants pour définir des descripteurs de groupes individuels :

  • group-id: ID de groupe d'un groupe de test existant.

  • [group-id, group-id]: liste des groupes de tests pouvant être exécutés dans n'importe quel ordre les uns par rapport aux autres.

  • "*"—Caractères génériques. Cela équivaut à la liste de tous les groupes de test qui ne sont pas déjà spécifiés dans la liste des descripteurs de groupes en cours.

La valeur deOrderdoit également répondre aux critères suivants :

  • Les ID de groupe de test que vous spécifiez dans un descripteur de groupe doivent exister dans votre suite de tests.

  • Chaque liste de descripteurs de groupes doit inclure au moins un groupe de tests.

  • Chaque liste de descripteurs de groupe doit contenir des identifiants de groupe uniques. Vous ne pouvez pas répéter un ID de groupe de test dans des descripteurs de groupe individuels.

  • Une liste de descripteurs de groupe peut comporter au maximum un descripteur de groupe générique. Le descripteur de groupe générique doit être le premier ou le dernier élément de la liste.

Exemples

Pour une suite de tests contenant des groupes de tests A, B, C, D et E, la liste d'exemples suivante montre différentes manières de spécifier qu'IDT doit d'abord exécuter le groupe de test A, puis exécuter le groupe de test B, puis exécuter les groupes de test C, D et E dans n'importe quel ordre.

  • Order: - - A - B - [C, D, E]
  • Order: - - A - B - "*"
  • Order: - - A - B - - B - C - - B - D - - B - E
Features

Facultatif. La liste des fonctionnalités du produit que vous souhaitez qu'IDT ajoute auawsiotdevicetester_report.xmldans le fichier. Si vous ne spécifiez pas cette section, IDT n'ajoutera aucune fonctionnalité produit au rapport.

Une fonctionnalité produit est constituée d'informations définies par l'utilisateur sur des critères spécifiques auxquels un appareil peut répondre. Par exemple, la fonctionnalité produit MQTT peut indiquer que l'appareil publie correctement les messages MQTT. Dansawsiotdevicetester_report.xml, les caractéristiques du produit sont définies commesupported,not-supported, ou une valeur personnalisée définie par l'utilisateur, selon que les tests spécifiés ont réussi ou non.

Chaque article duFeaturescomprend les paramètres suivants :

Name

Nom de la fonction.

Value

Facultatif. Valeur personnalisée que vous souhaitez utiliser dans le rapport au lieu desupported. Si cette valeur n'est pas spécifiée, IDT basé définit la valeur de l'entité sursupportedounot-supportedbasé sur les résultats des tests. Si vous testez la même fonctionnalité avec des conditions différentes, vous pouvez utiliser une valeur personnalisée pour chaque instance de cette entité dans leFeatureset IDT concaténe les valeurs des entités pour les conditions prises en charge. Pour de plus amples informations, veuillez consulter

Condition

Une expression de contexte qui correspond àBooléenValeur . Si la valeur évaluée est vraie, IDT ajoute la fonction au rapport de test une fois qu'il a terminé l'exécution de la suite de tests. Si la valeur évaluée est fausse, le test n'est pas inclus dans le rapport.

Tests

Facultatif. La liste des descripteurs de test. Tous les tests spécifiés dans cette liste doivent réussir pour que la fonctionnalité soit prise en charge.

Chaque descripteur de test de cette liste utilise l'ID du groupe de test et un ou plusieurs ID de cas de test pour identifier les tests individuels à exécuter à partir d'un groupe de test spécifique. Le descripteur de test utilise le format suivant :

GroupId: group-id CaseIds: [test-id, test-id] # optional

Vous devez spécifier ouTestsouOneOfTestspour chaque fonctionnalité de laFeaturesliste.

OneOfTests

Facultatif. La liste des descripteurs de test. Au moins un des tests spécifiés dans cette liste doit réussir pour que la fonctionnalité soit prise en charge.

Chaque descripteur de test de cette liste utilise l'ID du groupe de test et un ou plusieurs ID de cas de test pour identifier les tests individuels à exécuter à partir d'un groupe de test spécifique. Le descripteur de test utilise le format suivant :

GroupId: group-id CaseIds: [test-id, test-id] # optional

Vous devez spécifier ouTestsouOneOfTestspour chaque fonctionnalité de laFeaturesliste.

IsRequired

Valeur booléenne qui définit si la fonctionnalité est requise dans le rapport de test. La valeur par défaut est false.

Contexte de l'orchestrateur de tests

Le contexte de l'orchestrateur de test est un document JSON en lecture seule qui contient des données disponibles pour l'orchestrateur de test pendant l'exécution. Le contexte de l'orchestrateur de test est accessible uniquement à partir de l'orchestrateur de test et contient des informations qui déterminent le flux de test. Par exemple, vous pouvez utiliser les informations configurées par les exécuteurs de tests dans leuserdata.jsonpour déterminer si un test spécifique est nécessaire à l'exécution.

Le contexte de l'orchestrateur de tests utilise le format suivant :

{ "pool": { <device-json-pool-element> }, "userData": { <userdata-json-content> }, "config": { <config-json-content> } }
pool

Informations sur le pool de périphériques sélectionné pour le test. Pour un pool de périphériques sélectionné, ces informations sont extraites de l'élément de tableau de pool de périphériques de niveau supérieur correspondant défini dans ledevice.jsondans le fichier.

userData

Informations dans leuserdata.jsondans le fichier.

config

Informations dans leconfig.jsondans le fichier.

Vous pouvez interroger le contexte à l'aide de la notation JSONPath. La syntaxe des requêtes JSONPath dans les définitions d'état est{{query}}. Lorsque vous accédez à des données à partir du contexte de l'orchestrateur de test, assurez-vous que chaque valeur est évaluée en chaîne, en nombre ou en unBooléen.

Pour plus d'informations sur l'utilisation de la notation JSONPath pour accéder aux données du contexte, consultezUtiliser le contexte IDT.