Konfigurieren Sie den IDT-Test-Orchestrator - AWS IoT Greengrass

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurieren Sie den IDT-Test-Orchestrator

Ab IDT v4.5.1 enthält IDT ein neuesTest-OrchestratorKomponente. Der Testorchestrator ist eine IDT-Komponente, die den Ausführungsablauf der Testsuite steuert und den Testbericht generiert, nachdem IDT alle Tests ausgeführt hat. Der Testorchestrator bestimmt die Testauswahl und die Reihenfolge, in der Tests ausgeführt werden, basierend auf benutzerdefinierten Regeln.

Wenn Ihre Testsuite keinen benutzerdefinierten Testorchestrator enthält, generiert IDT einen Testorchestrator für Sie.

Der Standard-Testorchestrator führt die folgenden Funktionen aus:

  • Bietet Testläufern die Möglichkeit, bestimmte Testgruppen anstelle der gesamten Testsuite auszuwählen und auszuführen.

  • Wenn keine bestimmten Testgruppen ausgewählt sind, führt jede Testgruppe in der Testsuite in einer zufälligen Reihenfolge aus.

  • Generiert Berichte und druckt eine Konsolenzusammenfassung, die die Testergebnisse für jede Testgruppe und jeden Testfall anzeigt.

Der Testorchestrator ersetzt den IDT-Testorchestrator. Wir empfehlen dringend, dass Sie den Testorchestrator verwenden, um Ihre Test-Suiten anstelle des IDT-Testorchestrators zu entwickeln. Der Test-Orchestrator bietet die folgenden verbesserten Funktionen:

  • Verwendet ein deklaratives Format im Vergleich zu dem zwingenden Format, das der IDT-Statuscomputer verwendet. Dies ermöglicht es Ihnenspezifizierenwelche Tests Sie ausführen möchten undwenndu willst sie laufen lassenaus.

  • Verwaltet die spezifische Gruppenbehandlung, Berichtsgenerierung, Fehlerbehandlung und Ergebnisverfolgungdamit Sie nicht benötigt werdenum diese Aktionen manuell zu verwalten.

  • Verwendet das YAML-Format, das standardmäßig Kommentare unterstützt.

  • Benötigt80 Prozentweniger Speicherplatz als der Test-Orchestrator, um denselben Workflow zu definieren.

  • Fügt eine Validierung vor dem Test hinzu, um sicherzustellen, dass Ihre Workflow-Definition keine falschen Test-IDs oder zirkuläre Abhängigkeiten enthält

Test-Orchestrator-Format

Sie können die folgende Vorlage verwenden, um Ihre eigene zu konfigurieren<custom-test-suite-folder>/suite/test_orchestrator.yamlfile:

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

Nachfolgend sind alle Pflichtfelder beschrieben:

Aliases

Optional. Benutzerdefinierte Zeichenfolgen, die Kontextausdrücken zugeordnet sind. Aliase ermöglichen es Ihnen, Anzeigenamen zu generierenidentifizieren Sie Kontextausdrücke in Ihrer Test-Orchestrator-Konfiguration. Dies ist besonders nützlich, wenn Sie komplexe Kontextausdrücke oder -ausdrücke erstellen, die Sie an mehreren Stellen verwenden.

Sie können Kontextausdrücke verwenden, um Kontextabfragen zu speichern, mit denen Sie auf Daten aus anderen IDT-Konfigurationen zugreifen können. Weitere Informationen finden Sie unter Zugriff auf Daten im Kontext.

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

Optional. Eine Liste der Bedingungen und die entsprechenden Testfälle, die ausgeführt werden, wenn jede Bedingung erfüllt ist. Jede Bedingung kann mehrere Testfälle haben; Sie können jedoch einen bestimmten Testfall nur einer Bedingung zuweisen.

Standardmäßig führt IDT jeden Testfall aus, der keiner Bedingung in dieser Liste zugewiesen ist. Wenn Sie diesen Abschnitt nicht angeben, führt IDT alle Testgruppen in der Testsuite aus.

Jeder Artikel imConditionalTestsDie Liste enthält die folgenden Parameter:

Condition

Ein Kontextausdruck, der zu einer ausgewertet wirdBooleschWert. Wenn der ausgewertete Wert true ist, führt IDT die Testfälle aus, die imTests-Parameter.

Tests

Die Liste der Testdeskriptoren.

Jeder Testdeskriptor verwendet die Testgruppen-ID und eine oder mehrere Testfall-IDs, um die einzelnen Tests zu identifizieren, die von einer bestimmten Testgruppe aus ausgeführt werden sollen. Der Testdeskriptor verwendet das folgende Format:

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

Im folgenden Beispiel werden generische Kontextausdrücke verwendet, die Sie als definieren könnenAliasesaus.

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

Basierend auf den definierten Bedingungen wählt IDT Testgruppen wie folgt aus:

  • WennCondition1stimmt, IDT führt die Tests in den Testgruppen A, B und C.

  • WennCondition2stimmt, IDT führt die Tests in den Testgruppen C und D durch.

Order

Optional. Die Reihenfolge, in der Tests durchgeführt werden sollen. Sie geben die Testreihenfolge auf Testgruppenebene an. Wenn Sie diesen Abschnitt nicht angeben, führt IDT alle anwendbaren Testgruppen in einer zufälligen Reihenfolge aus. Der Wert vonOrderist eine Liste von Gruppendeskriptorlisten. Jede Testgruppe, in der Sie nicht auflistenOrder, kann parallel zu jeder anderen aufgelisteten Testgruppe ausgeführt werden.

Jede Gruppendeskriptorliste enthält einen von mehreren Gruppendeskriptoren und gibt die Reihenfolge an, in der die Gruppen ausgeführt werden sollen, die in jedem Deskriptor angegeben sind. Sie können die folgenden Formate verwenden, um einzelne Gruppendeskriptoren zu definieren:

  • group-id— Die Gruppen-ID einer vorhandenen Testgruppe.

  • [group-id, group-id]— Liste der Testgruppen, die in beliebiger Reihenfolge relativ zueinander ausgeführt werden können.

  • "*"—Platzhalterzeichen. Dies entspricht der Liste aller Testgruppen, die nicht bereits in der aktuellen Gruppendeskriptorliste angegeben sind.

Der Wert fürOrderSie müssen auch die folgenden Anforderungen erfüllen:

  • Testgruppen-IDs, die Sie in einem Gruppendeskriptor angeben, müssen in Ihrer Testsuite vorhanden sein.

  • Jede Gruppendeskriptor-Liste muss mindestens eine Testgruppe umfassen.

  • Jede Gruppendeskriptorliste muss eindeutige Gruppen-IDs enthalten. Sie können eine Testgruppen-ID nicht innerhalb einzelner Gruppendeskriptoren wiederholen.

  • Eine Gruppendeskriptor-Liste kann höchstens über einen Platzhalterdeskriptor verfügen. Der Platzhaltergruppen-Deskriptor muss das erste oder letzte Element in der Liste sein.

Beispiele

Für eine Testsuite, die die Testgruppen A, B, C, D und E enthält, zeigt die folgende Beispielliste verschiedene Möglichkeiten, um anzugeben, dass IDT zuerst Testgruppe A ausführen, dann die Testgruppe B ausführen und dann die Testgruppen C, D und E in beliebiger Reihenfolge ausführen soll.

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

Optional. Die Liste der Produktfunktionen, die IDT demawsiotdevicetester_report.xmlfile. Wenn Sie diesen Abschnitt nicht angeben, fügt IDT dem Bericht keine Produktfunktionen hinzu.

Ein Produktmerkmal sind benutzerdefinierte Informationen zu bestimmten Kriterien, die ein Gerät möglicherweise erfüllen kann. Beispielsweise kann die MQTT-Produktfunktion angeben, dass das Gerät MQTT-Nachrichten ordnungsgemäß veröffentlicht. In :awsiotdevicetester_report.xmlwerden Produkteigenschaften alssupported,not-supportedoder ein benutzerdefinierter benutzerdefinierter Wert, basierend darauf, ob bestimmte Tests bestanden wurden.

Jeder Artikel imFeaturesDie Liste enthält die folgenden Parameter:

Name

Der Name der Funktion.

Value

Optional. Der benutzerdefinierte Wert, den Sie im Bericht anstelle von verwenden möchtensupportedaus. Wenn dieser Wert nicht angegeben wird, legt basierend IDT den Feature-Wert aufsupportedodernot-supportedbasierend auf Testergebnissen. Wenn Sie dasselbe Feature mit verschiedenen Bedingungen testen, können Sie einen benutzerdefinierten Wert für jede Instanz dieses Features imFeatureslist, und IDT verkettet die Feature-Werte für unterstützte Bedingungen. Weitere Informationen finden Sie unter

Condition

Ein Kontextausdruck, der zu einer ausgewertet wirdBooleschWert. Wenn der ausgewertete Wert true ist, fügt IDT die Funktion dem Testbericht hinzu, nachdem die Testsuite ausgeführt wurde. Wenn der ausgewertete Wert false ist, ist der Test nicht im Bericht enthalten.

Tests

Optional. Die Liste der Testdeskriptoren. Alle Tests, die in dieser Liste angegeben sind, müssen bestehen, damit das Feature unterstützt wird.

Jeder Testdeskriptor in dieser Liste verwendet die Testgruppen-ID und eine oder mehrere Testfall-IDs, um die einzelnen Tests zu identifizieren, die von einer bestimmten Testgruppe aus ausgeführt werden sollen. Der Testdeskriptor verwendet das folgende Format:

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

Sie müssen entweder angebenTestsoderOneOfTestsfür jedes Feature imFeatures-Liste.

OneOfTests

Optional. Die Liste der Testdeskriptoren. Mindestens einer der in dieser Liste angegebenen Tests muss bestehen, damit das Feature unterstützt wird.

Jeder Testdeskriptor in dieser Liste verwendet die Testgruppen-ID und eine oder mehrere Testfall-IDs, um die einzelnen Tests zu identifizieren, die von einer bestimmten Testgruppe aus ausgeführt werden sollen. Der Testdeskriptor verwendet das folgende Format:

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

Sie müssen entweder angebenTestsoderOneOfTestsfür jedes Feature imFeatures-Liste.

IsRequired

Der boolesche Wert, der definiert, ob das Feature im Testbericht erforderlich ist. Der Standardwert ist false.

Testen von Orchestrierung

Der Test Orchestrator-Kontext ist ein schreibgeschütztes JSON-Dokument, das Daten enthält, die dem Testorchestrator während der Ausführung zur Verfügung stehen. Der Test Orchestrator-Kontext ist nur vom Testorchestrator aus zugänglich und enthält Informationen, die den Testfluss bestimmen. Beispielsweise können Sie Informationen verwenden, die von Testläufern konfiguriert wurden, imuserdata.json-Datei, um festzustellen, ob ein bestimmter Test ausgeführt werden muss.

Der Test Orchestrierkontext verwendet das folgende Format:

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

Informationen über den Gerätepool, der für den Testlauf ausgewählt wurde. Für einen ausgewählten Gerätepool werden diese Informationen aus dem entsprechenden Gerätepool-Array-Element der obersten Ebene abgerufen, das in derdevice.jsonfile.

userData

-Informationen imuserdata.jsonfile.

config

-Informationen imconfig.jsonfile.

Sie können den Kontext mit der JsonPath-Notation abfragen. Die Syntax für JsonPath-Abfragen in Statusdefinitionen lautet{{query}}aus. Wenn Sie auf Daten aus dem Testorchestrator-Kontext zugreifen, stellen Sie sicher, dass jeder Wert zu einer Zeichenfolge, einer Zahl oder einemBooleschaus.

Weitere Informationen zur Verwendung von JSONPath-Notation für den Zugriff auf Daten aus dem Kontext finden Sie unterVerwenden Sie den IDT-Kontextaus.