Tutorial: Ausführen von end-to-end Tests mit dem Greengrass Testing Framework und dem Greengrass Development Kit - 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.

Tutorial: Ausführen von end-to-end Tests mit dem Greengrass Testing Framework und dem Greengrass Development Kit

AWS IoT Greengrass Testing Framework (GTF) und Greengrass Development Kit (GDK) bieten Entwicklern Möglichkeiten, end-to-end Tests durchzuführen. Sie können dieses Tutorial abschließen, um ein GDK-Projekt mit einer Komponente zu initialisieren, ein GDK-Projekt mit einem end-to-end Testmodul zu initialisieren und einen benutzerdefinierten Testfall zu erstellen. Nachdem Sie Ihren benutzerdefinierten Testfall erstellt haben, können Sie den Test ausführen.

In diesem Tutorial führen Sie folgende Aufgaben aus:

  1. Initialisieren Sie ein GDK-Projekt mit einer Komponente.

  2. Initialisieren Sie ein GDK-Projekt mit einem - end-to-end Testmodul.

  3. Erstellen Sie einen benutzerdefinierten Testfall.

  4. Fügen Sie dem neuen Testfall ein Tag hinzu.

  5. Erstellen Sie das Test-JAR.

  6. Führen Sie den Test aus.

Voraussetzungen

Zum Durcharbeiten dieses Tutorials ist Folgendes erforderlich:

  • GDK Version 1.3.0 oder höher

  • Java

  • Maven

  • Git

Schritt 1: Initialisieren eines GDK-Projekts mit einer Komponente

  • Initialisieren Sie einen leeren Ordner mit einem GDK-Projekt. Laden Sie die in Python implementierte HelloWorld Komponente herunter, indem Sie den folgenden Befehl ausführen.

    gdk component init -t HelloWorld -l python -n HelloWorld

    Dieser Befehl erstellt ein neues Verzeichnis mit dem Namen HelloWorld im aktuellen Verzeichnis.

Schritt 2: Initialisieren eines GDK-Projekts mit einem end-to-end Testmodul

  • Mit GDK können Sie die Testmodulvorlage herunterladen, die aus einer Feature- und Schrittimplementierung besteht. Führen Sie den folgenden Befehl aus, um das HelloWorld Verzeichnis zu öffnen und das vorhandene GDK-Projekt mit einem Testmodul zu initialisieren.

    cd HelloWorld gdk test-e2e init

    Dieser Befehl erstellt ein neues Verzeichnis mit dem Namen gg-e2e-tests innerhalb des HelloWorld Verzeichnisses . Dieses Testverzeichnis ist ein Maven-Projekt, das von der eigenständigen Greengrass-Test-JAR abhängig ist.

Schritt 3: Erstellen eines benutzerdefinierten Testfalls

Das Schreiben eines benutzerdefinierten Testfalls besteht aus zwei Schritten: Erstellen Sie eine Feature-Datei mit einem Testszenario und implementieren Sie Schrittdefinitionen. Ein Beispiel für die Erstellung eines benutzerdefinierten Testfalls finden Sie unter Beispiel: Erstellen eines benutzerdefinierten Testfalls. Führen Sie die folgenden Schritte aus, um Ihren benutzerdefinierten Testfall zu erstellen:

  1. Erstellen einer Feature-Datei mit einem Testszenario

    Ein Feature beschreibt in der Regel eine bestimmte Funktionalität der Software, die getestet wird. In Cucumber wird jedes Feature als einzelne Feature-Datei mit einem Titel, einer detaillierten Beschreibung und einem oder mehreren Beispielen für bestimmte Fälle angegeben, die als Szenarien bezeichnet werden. Jedes Szenario besteht aus einem Titel, einer detaillierten Beschreibung und einer Reihe von Schritten, die die Interaktionen und erwarteten Ergebnisse definieren. Szenarien werden in einem strukturierten Format geschrieben, das die Schlüsselwörter „Gut“, „Wann“ und „Donn“ verwendet.

  2. Schrittdefinitionen implementieren

    Eine Schrittdefinition verknüpft den Gherkin-Schritt in einfacher Sprache mit dem programmatischen Code. Wenn Cucumber einen Gherkin-Schritt in einem Szenario identifiziert, sucht es nach einer übereinstimmenden Schrittdefinition, die ausgeführt werden soll.

Schritt 4: Hinzufügen eines Tags zum neuen Testfall

  • Sie können den Funktionen und Szenarien Tags zuweisen, um den Testprozess zu organisieren. Sie können Tags verwenden, um die Teilmengen von Szenarien zu kategorisieren und auch Hooks bedingt für die Ausführung auszuwählen. Funktionen und Szenarien können mehrere Tags haben, die durch ein Leerzeichen getrennt sind.

    In diesem Beispiel verwenden wir die -HelloWorldKomponente.

    Fügen Sie in der Feature-Datei neben dem @Sample Tag ein neues Tag mit @HelloWorld dem Namen hinzu.

    @Sample @HelloWorld Scenario: As a developer, I can create a component and deploy it on my device ....

Schritt 5: Erstellen der Test-JAR

  1. Erstellen Sie die Komponente. Sie müssen die Komponente erstellen, bevor Sie das Testmodul erstellen.

    gdk component build
  2. Erstellen Sie das Testmodul mit dem folgenden Befehl. Mit diesem Befehl wird das Test-JAR im greengrass-build Ordner erstellt.

    gdk test-e2e build

Schritt 6: Ausführen des Tests

Wenn Sie einen benutzerdefinierten Testfall ausführen, automatisiert die GTF den Lebenszyklus des Tests sowie die Verwaltung von Ressourcen, die während des Tests erstellt wurden. Es stellt zunächst ein getestetes Gerät (DUT) als -AWS IoTObjekt bereit und installiert darauf die Greengrass-Kernsoftware. Anschließend wird eine neue Komponente mit dem Namen unter HelloWorld Verwendung des in diesem Pfad angegebenen Rezepts erstellt. Die HelloWorld Komponente wird dann über eine Greengrass-Objektbereitstellung auf dem Core-Gerät bereitgestellt. Sie wird dann überprüft, wenn die Bereitstellung erfolgreich ist. Der Bereitstellungsstatus ändert sich COMPLETED innerhalb von 3 Minuten in , wenn die Bereitstellung erfolgreich ist.

  1. Rufen Sie die gdk-config.json Datei im Projektverzeichnis auf, um die Tests mit dem -HelloWorldTag abzuzielen. Aktualisieren Sie den test-e2e Schlüssel mit dem folgenden Befehl.

    "test-e2e":{ "gtf_options" : { "tags":"HelloWorld" } }
  2. Bevor Sie die Tests ausführen, müssen Sie dem Host-Gerät AWS Anmeldeinformationen bereitstellen. GTF verwendet diese Anmeldeinformationen, um die AWS Ressourcen während des Testprozesses zu verwalten. Stellen Sie sicher, dass die von Ihnen bereitgestellte Rolle über Berechtigungen zur Automatisierung der erforderlichen Operationen verfügt, die im Test enthalten sind.

    Führen Sie die folgenden Befehle aus, um die AWS Anmeldeinformationen bereitzustellen.

    1. Linux or Unix
      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      Windows Command Prompt (CMD)
      set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      PowerShell
      $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
  3. Führen Sie den Test mit dem folgenden Befehl aus.

    gdk test-e2e run

    Dieser Befehl lädt die neueste Version des Greengrass-Kerns im greengrass-build Ordner herunter und führt Tests mit diesem aus. Dieser Befehl zielt auch nur auf die Szenarien mit dem -HelloWorldTag ab und generiert einen Bericht für diese Szenarien. Die AWS Ressourcen, die während dieses Tests erstellt wurden, werden am Ende des Tests verworfen.

Beispiel: Erstellen eines benutzerdefinierten Testfalls

Das heruntergeladene Testmodul im Projekt GDK besteht aus einer Beispielfunktion und einer Schrittimplementierungsdatei.

Im folgenden Beispiel erstellen wir eine Feature-Datei zum Testen der Objektbereitstellungsfunktion der Greengrass-Software. Wir testen die Funktionalität dieser Funktion teilweise mit einem Szenario, das die Bereitstellung einer Komponente über die Greengrass- durchführtAWS Cloud. Dies ist eine Reihe von Schritten, die uns helfen, die Interaktionen und die erwarteten Ergebnisse dieses Anwendungsfalls zu verstehen.

  1. Erstellen einer Feature-Datei

    Navigieren Sie zum gg-e2e-tests/src/main/resources/greengrass/features Ordner im aktuellen Verzeichnis. Sie finden das Beispielcomponent.feature, das wie im folgenden Beispiel aussieht.

    In dieser Feature-Datei können Sie die Objektbereitstellungsfunktion der Greengrass-Software testen. Sie können die Funktionalität dieses Features teilweise mit einem Szenario testen, das eine Bereitstellung einer Komponente über die Greengrass-Cloud durchführt. Das Szenario besteht aus einer Reihe von Schritten, die dabei helfen, die Interaktionen und die erwarteten Ergebnisse dieses Anwendungsfalls zu verstehen.

    Feature: Testing features of Greengrassv2 component Background: Given my device is registered as a Thing And my device is running Greengrass @Sample Scenario: As a developer, I can create a component and deploy it on my device When I create a Greengrass deployment with components HelloWorld | /path/to/recipe/file And I deploy the Greengrass deployment configuration Then the Greengrass deployment is COMPLETED on the device after 180 seconds And I call my custom step

    GTF enthält die Schrittdefinitionen aller folgenden Schritte, mit Ausnahme des Schritts mit dem Namen And I call my custom step.

  2. Schrittdefinitionen implementieren

    GTF Standalone JAR enthält die Schrittdefinitionen aller Schritte mit Ausnahme eines Schritts: And I call my custom step. Sie können diesen Schritt im Testmodul implementieren.

    Navigieren Sie zum Quellcode der Testdatei. Sie können Ihren benutzerdefinierten Schritt mithilfe einer Schrittdefinition verknüpfen, indem Sie den folgenden Befehl verwenden.

    @And("I call my custom step") public void customStep() { System.out.println("My custom step was called "); }