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 einer einfachen IDT-Testsuite
Eine Testsuite kombiniert Folgendes:
-
Testen von ausführbaren Dateien, die die Testlogik enthalten
-
Konfigurationsdateien, die die Testsuite beschreiben
Dieses Tutorial zeigt Ihnen, wie Sie IDT für verwenden, AWS IoT Greengrass um eine Python-Testsuite zu entwickeln, die einen einzelnen Testfall enthält. In diesem Tutorial führen Sie die folgenden Schritte aus:
Voraussetzungen
Zum Durcharbeiten dieses Tutorials ist Folgendes erforderlich:
-
Hostcomputer-Anforderungen
-
Neueste Version von AWS IoT Device Tester
-
Python
3.7 oder höher Führen Sie den folgenden Befehl aus, um die auf Ihrem Computer installierte Version von Python zu überprüfen:
python3 --version
Wenn unter Windows bei Verwendung dieses Befehls ein Fehler zurückgegeben wird, verwenden Sie
python --version
stattdessen . Wenn die zurückgegebene Versionsnummer 3.7 oder höher ist, führen Sie den folgenden Befehl in einem Powershell-Terminal aus, umpython3
als Alias für Ihrenpython
Befehl festzulegen.Set-Alias -Name "python3" -Value "python"
Wenn keine Versionsinformationen zurückgegeben werden oder die Versionsnummer kleiner als 3.7 ist, folgen Sie den Anweisungen unter Python herunterladen
, um Python 3.7+ zu installieren. Weitere Informationen finden Sie in der Python-Dokumentation . -
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob korrekt installiert
urllib3
ist:python3 -c 'import urllib3'
Wenn nicht installiert
urllib3
ist, fü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 zu demselben Netzwerk wie Ihr Hostcomputer.
Wir empfehlen Ihnen, einen Raspberry Pi
mit Raspberry Pi OS zu verwenden. Stellen Sie sicher, dass Sie SSH auf Ihrem Raspberry Pi einrichten, um eine Remote-Verbindung herzustellen.
-
Erstellen eines Testsuite-Verzeichnisses
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 Namen MyTestSuite_1.0.0
und erstellen Sie die folgende Verzeichnisstruktur in diesem Ordner:
MyTestSuite_1.0.0 └── suite └── myTestGroup └── myTestCase
Erstellen von Konfigurationsdateien
Ihre Testsuite muss die folgenden erforderlichen Konfigurationsdateien enthalten:
Erforderliche Konfigurationsdateien
suite.json
-
Enthält Informationen über die Testsuite. Siehe Suite.json konfigurieren.
group.json
-
Enthält Informationen zu einer Testgruppe. Sie müssen für jede Testgruppe in Ihrer Testsuite eine
group.json
Datei erstellen. Siehe Konfigurieren von group.json. test.json
-
Enthält Informationen zu einem Testfall. Sie müssen für jeden Testfall in Ihrer Testsuite eine
test.json
Datei erstellen. Siehe Konfigurieren von test.json.
-
Erstellen Sie im
MyTestSuite_1.0.0/suite
Ordner einesuite.json
Datei mit der folgenden Struktur:{ "id": "MyTestSuite_1.0.0", "title": "My Test Suite", "details": "This is my test suite.", "userDataRequired": false }
-
Erstellen Sie im
MyTestSuite_1.0.0/myTestGroup
Ordner einegroup.json
Datei mit der folgenden Struktur:{ "id": "MyTestGroup", "title": "My Test Group", "details": "This is my test group.", "optional": false }
-
Erstellen Sie im
MyTestSuite_1.0.0/myTestGroup/myTestCase
Ordner einetest.json
Datei mit der folgenden 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" ] } } }
Die Verzeichnisstruktur für Ihren MyTestSuite_1.0.0
Ordner sollte jetzt wie folgt aussehen:
MyTestSuite_1.0.0 └── suite ├── suite.json └── myTestGroup ├── group.json └── myTestCase └── test.json
Abrufen des IDT-Client-SDK
Sie verwenden das IDT-Client-SDK, um es IDT zu ermöglichen, mit dem getesteten Gerät zu interagieren und Testergebnisse zu melden. Für dieses Tutorial verwenden Sie die Python-Version des SDK.
Kopieren Sie den idt_client
Ordner aus dem
Ordner in Ihren <device-tester-extract-location>
/sdks/python/MyTestSuite_1.0.0/suite/myTestGroup/myTestCase
Ordner.
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 der ausführbaren Testfall-Datei
Testfall-ausführbare Dateien enthalten die Testlogik, die Sie ausführen möchten. Eine Testsuite kann mehrere ausführbare Testfälle enthalten. Für dieses Tutorial erstellen Sie nur eine ausführbare Testfalldatei.
-
Erstellen Sie die Testsuite-Datei.
Erstellen Sie im
MyTestSuite_1.0.0/suite/myTestGroup/myTestCase
Ordner einemyTestCase.py
Datei mit dem folgenden Inhalt:from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() if __name__ == "__main__": main()
-
Verwenden Sie Client-SDK-Funktionen, um Ihrer
myTestCase.py
Datei die folgende Testlogik hinzuzufügen:-
Führen Sie einen SSH-Befehl auf dem zu testenden Gerät 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() -
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()
-
Konfigurieren von Geräteinformationen für IDT
Konfigurieren Sie Ihre Geräteinformationen für IDT, um den Test auszuführen. Sie müssen die device.json
Vorlage im
Ordner mit den folgenden Informationen aktualisieren.<device-tester-extract-location>
/configs
[ { "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>
" } } } } ] } ]
Geben Sie im devices
Objekt die folgenden Informationen an:
id
-
Eine benutzerdefinierte eindeutige Kennung für Ihr 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
aufssh
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, der für die Anmeldung bei Ihrem Gerät verwendet wird.
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
aufpki
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
aufpassword
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.
Ausführen der Testsuite
Nachdem Sie Ihre Testsuite erstellt haben, möchten Sie sicherstellen, dass sie wie erwartet funktioniert. Führen Sie dazu die folgenden Schritte aus, um die Testsuite mit Ihrem vorhandenen Gerätepool auszuführen.
-
Kopieren Sie Ihren
MyTestSuite_1.0.0
Ordner in
.<device-tester-extract-location>
/tests -
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 an die Konsole. Wenn die Ausführung des Tests 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, um Probleme beim Abschließen des Tutorials zu beheben.
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 des Testlaufs helfen kann. Bevor Sie die Fehlerprotokolle überprüfen, überprüfen Sie Folgendes:
-
Das IDT-Client-SDK befindet sich im richtigen Ordner, wie in diesem Schritt beschrieben.
-
Sie erfüllen alle Voraussetzungen für dieses Tutorial.
Es kann keine Verbindung zum getesteten Gerät hergestellt werden
Überprüfen Sie Folgendes:
-
Ihre -
device.json
Datei enthält die richtigen IP-Adresse, Port und Authentifizierungsinformationen. -
Sie können von Ihrem Hostcomputer aus eine Verbindung zu Ihrem Gerät über SSH herstellen.