Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Tutorial: Desarrollar un conjunto de pruebas de IDT sencillo
Un conjunto de pruebas combina lo siguiente:
-
Ejecutables de prueba que contienen la lógica de la prueba
-
Archivos de configuración que describen el conjunto de pruebas
Este tutorial le muestra cómo usar IDT para AWS IoT Greengrass para desarrollar un conjunto de pruebas de Python que contenga un único caso de prueba. En este tutorial, completará los siguientes pasos:
Requisitos previos
Necesitará lo siguiente para completar este tutorial:
-
Requisitos del equipo host
-
Última versión de AWS IoT Device Tester
-
Python
3.7 o posterior Para comprobar la versión de Python instalada en el equipo, ejecute el siguiente comando:
python3 --version
En Windows, si el uso de este comando devuelve un error, utilice
python --version
en su lugar. Si el número de versión devuelto es 3.7 o superior, ejecute el siguiente comando en un terminal de Powershell para establecerpython3
como alias para el comandopython
.Set-Alias -Name "python3" -Value "python"
Si no se devuelve información sobre la versión o si la versión es inferior a 3.7, siga las instrucciones que se indican en Descarga de Python)
para instalar Python 3.7 o superior. Para obtener más información, consulte la documentación de Python . -
Para comprobar que
urllib3
se ha instalado correctamente, ejecute el siguiente comando:python3 -c 'import urllib3'
Si
urllib3
no está instalado, ejecute el siguiente comando para instalarlo:python3 -m pip install urllib3
-
-
Requisitos de los dispositivos
-
Un dispositivo con un sistema operativo Linux y una conexión de red a la misma red que el equipo host.
Le recomendamos que utilice un Raspberry Pi
con el sistema operativo Raspberry Pi. Asegúrese de que tiene configurado SSH en el Raspberry Pi para conectarse de forma remota.
-
Creación de un directorio del conjunto de pruebas
IDT separa de forma lógica los casos de prueba en grupos de pruebas dentro de cada conjunto de pruebas. Cada caso de prueba debe estar dentro de un grupo de pruebas. Para este tutorial, cree una carpeta llamada MyTestSuite_1.0.0
y cree el siguiente árbol de directorios dentro de esta carpeta:
MyTestSuite_1.0.0 └── suite └── myTestGroup └── myTestCase
Creación de archivos de configuración
El conjunto de pruebas debe contener los siguientes archivos de configuración necesarios:
Archivos de configuración necesarios
suite.json
-
Contiene información sobre el conjunto de pruebas. Consulte Configuración de suite.json.
group.json
-
Contiene información sobre un grupo de pruebas. Debe crear un archivo
group.json
para cada grupo de pruebas del conjunto de pruebas. Consulte Configuración de group.json. test.json
-
Contiene información sobre un caso de prueba. Debe crear un archivo
test.json
para cada caso de prueba de su conjunto de pruebas. Consulte Configuración de test.json.
-
En la carpeta
MyTestSuite_1.0.0/suite
, cree un archivosuite.json
con la estructura siguiente:{ "id": "MyTestSuite_1.0.0", "title": "My Test Suite", "details": "This is my test suite.", "userDataRequired": false }
-
En la carpeta
MyTestSuite_1.0.0/myTestGroup
, cree un archivogroup.json
con la estructura siguiente:{ "id": "MyTestGroup", "title": "My Test Group", "details": "This is my test group.", "optional": false }
-
En la carpeta
MyTestSuite_1.0.0/myTestGroup/myTestCase
, cree un archivotest.json
con la estructura siguiente:{ "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" ] } } }
El árbol de directorios de la carpeta MyTestSuite_1.0.0
debe ser similar al siguiente:
MyTestSuite_1.0.0 └── suite ├── suite.json └── myTestGroup ├── group.json └── myTestCase └── test.json
Obtención del SDK de cliente de IDT
Utilice el SDK de cliente de IDT para permitir que IDT interactúe con el dispositivo que se está probando e informe de los resultados de las pruebas. Para este tutorial, utilizará la versión de Python del SDK.
Desde la carpeta
, copie la carpeta <device-tester-extract-location>
/sdks/python/idt_client
a su carpeta MyTestSuite_1.0.0/suite/myTestGroup/myTestCase
.
Para comprobar que el SDK se ha copiado correctamente, ejecute el siguiente comando.
cd MyTestSuite_1.0.0/suite/myTestGroup/myTestCase python3 -c 'import idt_client'
Creación del ejecutable del caso de prueba
Los ejecutables del caso de prueba contienen la lógica de prueba que desea ejecutar. Un conjunto de pruebas puede contener varios ejecutables de casos de prueba. Para este tutorial, creará solo un ejecutable de caso de prueba.
-
Cree el archivo del conjunto de pruebas.
En la carpeta
MyTestSuite_1.0.0/suite/myTestGroup/myTestCase
, cree un archivomyTestCase.py
con el siguiente contenido:from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() if __name__ == "__main__": main()
-
Utilice las funciones del SDK del cliente para añadir la siguiente lógica de prueba al archivo
myTestCase.py
:-
Ejecute un comando SSH en el dispositivo que se está probando.
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() -
Envíe el resultado de la prueba a 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()
-
Configuración de la información del dispositivo para IDT
Configure la información del dispositivo para que IDT ejecute la prueba. Debe actualizar la plantilla device.json
ubicada en la carpeta
con la siguiente información.<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>
" } } } } ] } ]
En el objeto devices
, indique la siguiente información:
id
-
Un identificador único definido por el usuario para el dispositivo.
connectivity.ip
-
La dirección IP del dispositivo.
connectivity.port
-
Opcional. El número de puerto que se va a utilizar para las conexiones SSH al dispositivo.
connectivity.auth
-
Información de autenticación para la conexión.
Esta propiedad solo se aplica si
connectivity.protocol
está establecido enssh
.connectivity.auth.method
-
El método de autenticación que se utiliza para acceder a un dispositivo a través de un determinado protocolo de conectividad.
Los valores admitidos son:
-
pki
-
password
-
connectivity.auth.credentials
-
Las credenciales que se utilizan para la autenticación.
connectivity.auth.credentials.user
-
El nombre de usuario utilizado para iniciar sesión en el dispositivo.
connectivity.auth.credentials.privKeyPath
-
La ruta completa a la clave privada que se utiliza para iniciar sesión en el dispositivo.
Este valor solo se aplica si
connectivity.auth.method
está establecido enpki
. devices.connectivity.auth.credentials.password
-
La contraseña que se utiliza para iniciar sesión en el dispositivo.
Este valor solo se aplica si
connectivity.auth.method
está establecido enpassword
.
nota
Especifique privKeyPath
solo si method
está establecido en pki
Especifique password
solo si method
está establecido en password
Ejecución del conjunto de pruebas
Después de crear el conjunto de pruebas, querrá asegurarse de que funciona como se espera. Siga los pasos que se indican a continuación para ejecutar el conjunto de pruebas con su grupo de dispositivos existente.
-
Copie su carpeta
MyTestSuite_1.0.0
en
.<device-tester-extract-location>
/tests -
Ejecute los comandos siguientes:
cd
<device-tester-extract-location>
/bin ./devicetester_[linux | mac | win_x86-64]
run-suite --suite-id MyTestSuite
IDT ejecuta el conjunto de pruebas y transmite los resultados a la consola. Cuando la prueba termine de ejecutarse, verá la siguiente información:
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
Solución de problemas
Utilice la siguiente información para resolver cualquier problema al completar el tutorial.
El caso de prueba no se ejecuta correctamente
Si la prueba no se ejecuta correctamente, IDT transmite los registros de errores a la consola para ayudarle a solucionar los problemas con la ejecución de la prueba. Antes de consultar los registros de errores, compruebe lo siguiente:
-
El SDK del cliente IDT se encuentra en la carpeta correcta, tal y como se describe en este paso.
-
Cumple todos los requisitos previos de este tutorial.
No se puede conectar al dispositivo que se está probando
Compruebe lo siguiente:
-
El archivo
device.json
contiene la dirección IP, el puerto y la información de autenticación correctos. -
Puede conectarse a su dispositivo a través de SSH desde su equipo host.