Tutorial: Entwickeln Sie eine einfache IDT-Testsuite - AWS IoT Greengrass

AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.

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: Entwickeln Sie eine einfache IDT-Testsuite

Eine Testsuite kombiniert Folgendes:

  • Testen Sie ausführbare Dateien, die die Testlogik enthalten

  • JSON-Konfigurationsdateien, die die Testsuite beschreiben

In diesem Tutorial erfahren Sie, wie IDT für verwendet wirdAWS IoT Greengrassum eine Python-Testsuite zu entwickeln, die einen einzigen Testfall enthält. In diesem Tutorial führen Sie die folgenden Schritte aus:

Voraussetzungen

Zum Durcharbeiten dieses Tutorials ist Folgendes erforderlich:

  • -Host-Anforderungen
    • Neueste Version vonAWS IoTDevice Tester

    • Python3.7 oder höher

      Führen Sie den folgenden Befehl aus, um die auf dem Computer installierte Python zu überprüfen:

      python3 --version

      Wenn die Verwendung dieses Befehls unter Windows einen Fehler zurückgibt, verwenden Siepython --versionStattdessen geschieht Folgendes. Wenn die zurückgegebene Versionsnummer 3.7 oder höher ist, führen Sie den folgenden Befehl in einem Powershell-Terminal aus, um festzulegenpython3als Alias fürpythonbefehl.

      Set-Alias -Name "python3" -Value "python"

      Wenn keine Versionsinformationen zurückgegeben werden oder die Versionsnummer kleiner als 3.7 ist, befolgen Sie die Anweisungen unterPythonSo installieren Sie Python 3.7+. Weitere Informationen finden Sie im .Python-Dokumentationaus.

    • urllib3

      So überprüfen Sie dasurllib3Führen Sie den folgenden Befehl aus:

      python3 -c 'import urllib3'

      Wennurllib3Führen Sie den folgenden Befehl aus, um es zu installieren:

      python3 -m pip install urllib3
  • Anforderungen an Speichergeräte
    • Ein Gerät mit einem Linux-Betriebssystem und einer Netzwerkverbindung zum selben Netzwerk wie Ihr Host-Computer.

      Wir empfehlen Ihnen, zu verwendenRaspberry Pimit Raspberry Pi OS. Stellen Sie sicher, dass Sie die EinrichtungSSHVerwenden Sie Ihren Raspberry Pi aus, um eine Remoteverbindung zu ermöglichen.

Erstellen Sie ein Test Suite-Verzeichnis

IDT unterteilt Testfälle logisch in Testgruppen innerhalb jeder Testsuite. Jeder Testfall muss sich innerhalb einer Testgruppe befinden. Erstellen Sie für dieses Tutorial einen -Ordner mit dem NamenMyTestSuite_1.0.0und erstellen Sie den folgenden Verzeichnisbaum in diesem Ordner:

MyTestSuite_1.0.0 └── suite └── myTestGroup └── myTestCase

Erstellen von JSON-Konfigurationsdateien

Ihre Testsuite muss Folgendes enthaltenJSON-Konfigurationsdateien:

Erforderliche JSON-Dateien
suite.json

Enthält Informationen zu den Testsuite. Siehe Konfigurieren Sie suite.json.

group.json

Enthält Informationen zu einer Testgruppe. Sie müssen eine erstellengroup.json-Datei für jede Testgruppe in Ihrer Testsuite. Siehe Konfigurieren von group.json.

test.json

Enthält Informationen zu einem Testfall. Sie müssen eine erstellentest.json-Datei für jeden Testfall in Ihrer Testsuite. Siehe Konfigurieren Sie test.json.

  1. In derMyTestSuite_1.0.0/suite-Ordner erstellensuite.jsonDatei mit folgender Struktur:

    { "id": "MyTestSuite_1.0.0", "title": "My Test Suite", "details": "This is my test suite.", "userDataRequired": false }
  2. In derMyTestSuite_1.0.0/myTestGroup-Ordner erstellengroup.jsonDatei mit folgender Struktur:

    { "id": "MyTestGroup", "title": "My Test Group", "details": "This is my test group.", "optional": false }
  3. In derMyTestSuite_1.0.0/myTestGroup/myTestCase-Ordner erstellentest.jsonDatei mit folgender Struktur:

    { "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" ] } } }

Der Verzeichnisbaum für IhreMyTestSuite_1.0.0folder sollte jetzt wie folgt aussehen:

MyTestSuite_1.0.0 └── suite ├── suite.json └── myTestGroup ├── group.json └── myTestCase └── test.json

Holen Sie sich das IDT-Client-SDK

Nutzen Sie dieIDT-Client-SDKum IDT zu ermöglichen, mit dem zu testenden Gerät zu interagieren und Testergebnisse zu melden. Für dieses Tutorial verwenden Sie die Python-Version des SDK.

Aus<device-tester-extract-location>/sdks/python/, kopieren Sie denidt_clientOrdner zu IhremMyTestSuite_1.0.0/suite/myTestGroup/myTestCasefolder.

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das SDK erfolgreich kopiert wurde.

cd MyTestSuite_1.0.0/suite/myTestGroup/myTestCase python3 -c 'import idt_client'

Erstellen Sie die ausführbare Testfalldatei

Die ausführbaren Testfalldateien enthalten die zu ausführende Testlogik. Eine Testsuite kann mehrere ausführbare Testfalldateien enthalten. Für dieses Tutorial erstellen Sie nur eine ausführbare Testfalldatei.

  1. Erstellen Sie die Test-Suite-Datei.

    In derMyTestSuite_1.0.0/suite/myTestGroup/myTestCase-Ordner erstellenmyTestCase.pyDatei mit folgendem Inhalt:

    from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() if __name__ == "__main__": main()
  2. Verwenden Sie Client-SDK-Funktionen, um Ihre folgende Testlogik hinzuzufügenmyTestCase.pyfile:

    1. Führen Sie auf dem zu testenden Gerät einen SSH-Befehl aus.

      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()
    2. Senden Sie das Testergebnis an 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()

Geräteinformationen für IDT konfigurieren

Konfigurieren Sie Ihre Geräteinformationen, damit IDT den Test ausführen kann. Sie müssen diedevice.jsonVorlage befindet sich im<device-tester-extract-location>/configsOrdner mit den folgenden Informationen.

[ { "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>" } } } } ] } ]

In derdevices-Objekt geben Sie die folgenden Informationen an:

id

Eine benutzerdefinierte eindeutige Kennung für das Gerät.

connectivity.ip

Die IP-Adresse Ihres Geräts.

connectivity.port

Optional. Die Portnummer, die für SSH-Verbindungen zu Ihrem Gerät verwendet werden soll.

connectivity.auth

Authentifizierungsinformationen für die Verbindung.

Diese Eigenschaft gilt nur, wenn connectivity.protocol auf ssh festgelegt ist.

connectivity.auth.method

Die Authentifizierungsmethode, die für den Zugriff über ein bestimmtes Verbindungsprotokoll auf ein Gerät verwendet wird.

Unterstützte Werte sind:

  • pki

  • password

connectivity.auth.credentials

Die für die Authentifizierung verwendeten Anmeldeinformationen.

connectivity.auth.credentials.user

Der Benutzername, mit dem Sie sich bei Ihrem Gerät angemeldet haben.

connectivity.auth.credentials.privKeyPath

Der vollständige Pfad zum privaten Schlüssel, der für die Anmeldung bei Ihrem Gerät verwendet wird.

Dieser Wert gilt nur, wenn connectivity.auth.method auf pki festgelegt ist.

devices.connectivity.auth.credentials.password

Das Passwort für die Anmeldung bei Ihrem Gerät.

Dieser Wert gilt nur, wenn connectivity.auth.method auf password festgelegt ist.

Anmerkung

Geben Sie privKeyPath nur an, wenn method auf pki gesetzt ist.

Geben Sie password nur an, wenn method auf password gesetzt ist.

Führen Sie die Testsuite aus

Nachdem Sie Ihre Testsuite erstellt haben, möchten Sie sicherstellen, dass sie wie erwartet funktioniert. Führen Sie die folgenden Schritte aus, um die Testsuite mit Ihrem vorhandenen Gerätepool auszuführen.

  1. Kopiere deinMyTestSuite_1.0.0folder in<device-tester-extract-location>/testsaus.

  2. Führen Sie die folgenden Befehle aus:

    cd <device-tester-extract-location>/bin ./devicetester_[linux | mac | win_x86-64] run-suite --suite-id MyTestSuite

IDT führt Ihre Testsuite aus und streamt die Ergebnisse zur Konsole. Wenn der Test abgeschlossen ist, sehen Sie die folgenden Informationen:

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

Fehlerbehebung

Verwenden Sie die folgenden Informationen für die Lösung von Problemen beim Ausführen des Tutorials.

Testfall wird nicht erfolgreich ausgeführt

Wenn der Test nicht erfolgreich ausgeführt wird, streamt IDT die Fehlerprotokolle an die Konsole, die Ihnen bei der Fehlerbehebung beim Testlauf helfen können. Überprüfen Sie vor dem Überprüfen der Fehlerprotokolle Folgendes:

Kann keine Verbindung zu dem zu testenden Gerät hergestellt werden

Überprüfen Sie Folgendes:

  • Ihredevice.jsonenthält die richtige IP-Adresse, den Port und die richtigen Authentifizierungsinformationen.

  • Sie können von Ihrem Host-Computer aus über SSH eine Verbindung zu Ihrem Gerät herstellen.