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.
Cree un caso IDT de prueba ejecutable
Puede crear y colocar ejecutables de casos de prueba en una carpeta de conjunto de pruebas de las siguientes maneras:
-
En el caso de los conjuntos de pruebas que utilizan argumentos o variables de entorno de los archivos
test.json
para determinar qué pruebas se van a ejecutar, puede crear un único ejecutable de caso de prueba para todo el conjunto de pruebas o un ejecutable de prueba para cada grupo de pruebas del conjunto de pruebas. -
En el caso de un conjunto de pruebas en el que desee ejecutar pruebas específicas en función de comandos específicos, debe crear un ejecutable de caso de prueba para cada caso de prueba del conjunto de pruebas.
Como redactor de pruebas, puede determinar qué enfoque es adecuado para su caso de uso y estructurar el ejecutable del caso de prueba en consecuencia. Asegúrese de proporcionar la ruta de acceso correcta al ejecutable del caso de prueba en cada archivo test.json
y de que el ejecutable especificado se ejecute correctamente.
Cuando todos los dispositivos estén preparados para ejecutar un caso de prueba, IDT lee los siguientes archivos:
-
El
test.json
para el caso de prueba seleccionado determina los procesos que se van a iniciar y las variables de entorno que se van a configurar. -
El
suite.json
para el conjunto de pruebas determina las variables de entorno que se van a configurar.
IDTinicia el proceso ejecutable de prueba requerido en función de los comandos y argumentos especificados en el test.json
archivo y pasa las variables de entorno requeridas al proceso.
Utilice el IDT cliente SDK
El IDT cliente le SDKs permite simplificar la forma en que escribe la lógica de prueba en su ejecutable de prueba con API comandos que puede utilizar para interactuar con IDT los dispositivos que se están probando. IDTactualmente proporciona lo siguienteSDKs:
-
IDTCliente SDK para Python
-
IDTCliente SDK para Go
-
IDTCliente SDK para Java
Se SDKs encuentran en la
carpeta. Al crear un nuevo ejecutable de caso de prueba, debe copiar el SDK que desee utilizar en la carpeta que contiene el ejecutable de ese caso de prueba y hacer referencia a él SDK en el código. En esta sección se proporciona una breve descripción de los API comandos disponibles que puede utilizar en los ejecutables de sus casos de prueba. <device-tester-extract-location>
/sdks
Interacción con el dispositivo
Los siguientes comandos le permiten comunicarse con el dispositivo que se está probando sin tener que implementar ninguna función adicional de administración de la conectividad e interacción del dispositivo.
ExecuteOnDevice
-
Permite que los conjuntos de pruebas ejecuten comandos de shell en un dispositivo que admita SSH conexiones de shell de Docker.
CopyToDevice
-
Permite a las suites de pruebas copiar un archivo local de la máquina host IDT para que se ejecute en una ubicación específica de un dispositivo que admita SSH conexiones de shell de Docker.
ReadFromDevice
-
Permite que los conjuntos de pruebas lean desde el puerto serie de los dispositivos que admiten UART conexiones.
nota
Como IDT no gestiona las conexiones directas a los dispositivos que se realizan con la información de acceso a los dispositivos procedente del contexto, recomendamos utilizar estos API comandos de interacción entre dispositivos en los ejecutables de los casos de prueba. Sin embargo, si estos comandos no cumplen los requisitos del caso de prueba, puede recuperar la información de acceso al dispositivo del IDT contexto y utilizarla para establecer una conexión directa con el dispositivo desde el conjunto de pruebas.
Para establecer una conexión directa, recupere la información de los campos device.connectivity
y resource.devices.connectivity
del dispositivo que se está probando y de los dispositivos de recursos, respectivamente. Para obtener más información sobre el uso del IDT contexto, consulteUsa el IDT contexto.
IDTinteracción
Los siguientes comandos permiten que sus conjuntos de pruebas se comuniquen conIDT.
PollForNotifications
-
Permite que los conjuntos de pruebas comprueben las notificaciones deIDT.
GetContextValue
yGetContextString
-
Permite que los conjuntos de pruebas recuperen valores del IDT contexto. Para obtener más información, consulte Usa el IDT contexto.
SendResult
-
Permite que los conjuntos de pruebas informen a los resultados de los casos de pruebaIDT. Debe llamarse a este comando al final de cada caso de prueba en un conjunto de pruebas.
Interacción con el host
El siguiente comando permite que sus conjuntos de pruebas se comuniquen con la máquina host.
PollForNotifications
-
Permite que las suites de pruebas comprueben las notificaciones deIDT.
GetContextValue
yGetContextString
-
Permite que los conjuntos de pruebas recuperen valores del IDT contexto. Para obtener más información, consulte Usa el IDT contexto.
ExecuteOnHost
-
Permite a los conjuntos de pruebas ejecutar comandos en la máquina local y IDT gestionar el ciclo de vida del ejecutable del caso de prueba.
Habilita IDT CLI los comandos
El run-suite
comando IDT CLI proporciona varias opciones que permiten al ejecutor de pruebas personalizar la ejecución de las pruebas. Para permitir que los ejecutores de pruebas utilicen estas opciones para ejecutar su conjunto de pruebas personalizado, debe implementar la compatibilidad con IDTCLI. Si no implementas la compatibilidad, los ejecutores de pruebas podrán seguir realizando pruebas, pero algunas CLI opciones no funcionarán correctamente. Para ofrecer una experiencia de cliente ideal, se recomienda implementar la compatibilidad con los siguientes argumentos para el run-suite
comando en IDTCLI:
timeout-multiplier
-
Especifica un valor superior a 1,0 que se aplicará a todos los tiempos de espera durante la ejecución de las pruebas.
Los ejecutores de pruebas pueden usar este argumento para aumentar el tiempo de espera de los casos de prueba que desean ejecutar. Cuando un ejecutor de pruebas especifica este argumento en su
run-suite
comando, lo IDT usa para calcular el valor de la variable de TIMEOUT entorno IDT TEST _ _ y establece elconfig.timeoutMultiplier
campo en el IDT contexto. Para que se admita este argumento, debe hacer lo siguiente:-
En lugar de utilizar directamente el valor de tiempo de espera del
test.json
archivo, lee la variable de TIMEOUT entorno IDT TEST _ _ para obtener el valor de tiempo de espera calculado correctamente. -
Recupere el
config.timeoutMultiplier
valor del IDT contexto y aplíquelo a los tiempos de espera prolongados.
Para obtener más información sobre cómo salir anticipadamente debido a eventos de tiempo de espera, consulte Especificación del comportamiento de salida.
-
stop-on-first-failure
-
Especifica que IDT deben dejar de ejecutarse todas las pruebas si se produce un error.
Cuando un ejecutor de pruebas especifique este argumento en su
run-suite
comando, IDT dejará de ejecutar las pruebas en cuanto detecte un error. Sin embargo, si los casos de prueba se ejecutan en paralelo, esto puede generar resultados inesperados. Para implementar el soporte, asegúrate de que, si IDT se produce este evento, tu lógica de pruebas indique a todos los casos de prueba en ejecución que se detengan, agoten los recursos temporales y notifiquen el resultado de la prueba aIDT. Para obtener más información sobre cómo salir anticipadamente en caso de error, consulte Especificación del comportamiento de salida. group-id
ytest-id
-
Especifica que solo se IDT deben ejecutar los grupos de pruebas o los casos de prueba seleccionados.
Los ejecutores de pruebas pueden usar estos argumentos con su
run-suite
comando para especificar el siguiente comportamiento de ejecución de la prueba:-
Ejecutar todas las pruebas dentro de los grupos de pruebas especificados.
-
Ejecutar una selección de pruebas desde un grupo de pruebas especificado.
Para admitir estos argumentos, la máquina de estados de su conjunto de pruebas debe incluir un conjunto específico de estados
RunTask
yChoice
en su máquina de estados. Si no utiliza una máquina de estados personalizada, la máquina de IDT estados predeterminada incluye los estados necesarios y no es necesario que realice ninguna acción adicional. Sin embargo, si utiliza una máquina de estados personalizada, use Ejemplo de máquina de estados: ejecutar grupos de pruebas seleccionados por el usuario como ejemplo para añadir los estados necesarios a su máquina de estados. -
Para obtener más información sobre IDT CLI los comandos, consulteDepuración y ejecución de conjuntos de pruebas personalizados.
Escritura de registros de eventos
Mientras se ejecuta la prueba, se envían datos a stdout
y stderr
para escribir registros de eventos y mensajes de error en la consola. Para obtener más información sobre el formato de los mensajes de la consola, consulte Formato de mensajes de consola.
Cuando IDT termine de ejecutar el conjunto de pruebas, esta información también estará disponible en el test_manager.log
archivo ubicado en la
carpeta.<devicetester-extract-location>
/results/<execution-id>
/logs
Puede configurar cada caso de prueba para que escriba los registros de la ejecución de la prueba, incluidos los registros del dispositivo que se está probando, en el archivo
ubicado en la carpeta <group-id>
_<test-id>
. Para ello, recupere la ruta del archivo de registro del IDT contexto de la <device-tester-extract-location>
/results/execution-id
/logstestData.logFilePath
consulta, cree un archivo en esa ruta y escriba el contenido que desee en él. IDTactualiza automáticamente la ruta en función del caso de prueba que se esté ejecutando. Si decide no crear el archivo de registro para un caso de prueba, no se generará ningún archivo para ese caso de prueba.
También puede configurar el ejecutable de texto para crear archivos de registro adicionales en la carpeta
según sea necesario. Le recomendamos que especifique prefijos únicos para los nombres de los archivos de registro para que sus archivos no se sobrescriban.<device-tester-extract-location>
/logs
Informe los resultados a IDT
IDTescribe los resultados de las pruebas en los archivos awsiotdevicetester_report.xml
y en los
archivos. Estos archivos de informes están ubicados en suite-name
_report.xml
. Ambos informes capturan los resultados de la ejecución del conjunto de pruebas. Para obtener más información sobre los esquemas que se IDT utilizan en estos informes, consulte Revise los resultados y los registros de las IDT pruebas<device-tester-extract-location>
/results/<execution-id>
/
Para rellenar el contenido del
archivo, debe utilizar el suite-name
_report.xmlSendResult
comando para informar de los resultados de las pruebas IDT antes de que finalice la ejecución de la prueba. Si IDT no puede localizar los resultados de una prueba, se emite un error para el caso de prueba. El siguiente extracto de Python muestra los comandos a los que se debe enviar el resultado de una prueba: IDT
request-variable
= SendResultRequest(TestResult(result
)) client.send_result(request-variable
)
Si no publica los resultados a través deAPI, IDT busca los resultados de las pruebas en la carpeta de artefactos de prueba. La ruta a esta carpeta se guarda en testData.testArtifactsPath
el archivo del IDT contexto. En esta carpeta, IDT utiliza el primer XML archivo ordenado alfabéticamente que encuentre como resultado de la prueba.
Si la lógica de las pruebas arroja JUnit XML resultados, puede escribirlos en un XML archivo de la carpeta de artefactos para proporcionárselos directamente, IDT en lugar de analizarlos y luego utilizarlos API para enviarlos. IDT
Si utiliza este método, asegúrese de que la lógica de la prueba resuma con precisión los resultados de la prueba y formatee el archivo de resultados con el mismo formato que el archivo
. IDTno realiza ninguna validación de los datos que usted proporciona, con las siguientes excepciones:suite-name
_report.xml
-
IDTignora todas las propiedades de la
testsuites
etiqueta. En su lugar, calcula las propiedades de la etiqueta a partir de los resultados de otros grupos de pruebas notificados. -
Debe haber al menos una etiqueta
testsuite
entestsuites
.
Como IDT utiliza la misma carpeta de artefactos para todos los casos de prueba y no elimina los archivos de resultados entre las ejecuciones de las pruebas, este método también puede provocar informes erróneos si IDT lee el archivo incorrecto. Le recomendamos que utilice el mismo nombre para el archivo de XML resultados generado en todos los casos de prueba para sobrescribir los resultados de cada caso de prueba y asegurarse de que los resultados correctos estén disponibles para su IDT uso. Aunque puede utilizar un enfoque mixto para la elaboración de informes en su conjunto de pruebas, es decir, utilizar un archivo de XML resultados para algunos casos de prueba y enviar los resultados a través del conjunto de pruebas API para otros, no recomendamos este enfoque.
Especificación del comportamiento de salida
Configure el ejecutable de texto para que siempre salga con un código de salida de 0, incluso si un caso de prueba informa de un fallo o un resultado de error. Utilice códigos de salida distintos de cero únicamente para indicar que un caso de prueba no se ha ejecutado o si el ejecutable del caso de prueba no ha podido comunicarle ningún resultado. IDT Cuando IDT recibe un código de salida distinto de cero, indica que el caso de prueba ha detectado un error que ha impedido su ejecución.
IDTpodría solicitar o esperar que un caso de prueba deje de ejecutarse antes de que finalice en los siguientes eventos. Utilice esta información para configurar el ejecutable del caso de prueba para que detecte cada uno de estos eventos del caso de prueba:
- Timeout (Tiempo de espera)
-
Se produce cuando un caso de prueba se ejecuta durante más tiempo que el valor de tiempo de espera especificado en el archivo
test.json
. Si el ejecutor de la prueba usó eltimeout-multiplier
argumento para especificar un multiplicador de tiempo de espera, IDT calcula el valor del tiempo de espera con el multiplicador.Para detectar este evento, utilice la variable de entorno IDT _ _TEST. TIMEOUT Cuando un ejecutor de pruebas lanza una prueba, IDT establece el valor de la variable de TIMEOUT entorno IDT TEST _ _ en el valor de tiempo de espera calculado (en segundos) y pasa la variable al ejecutable del caso de prueba. Puede leer el valor de la variable para configurar un temporizador adecuado.
- Interrumpir
-
Se produce cuando el ejecutor de la prueba interrumpeIDT. Por ejemplo, pulsando Ctrl+C.
Como los terminales propagan las señales a todos los procesos secundarios, solo tiene que configurar un controlador de señales en sus casos de prueba para detectar las señales de interrupción.
Como alternativa, puede sondear periódicamente API para comprobar el valor del
CancellationRequested
booleano en la respuesta.PollForNotifications
API Cuando IDT recibe una señal de interrupción, establece el valor delCancellationRequested
booleano en.true
- Detención en el primer fallo
-
Se produce cuando un caso de prueba que se está ejecutando en paralelo con el caso de prueba actual falla y el ejecutor de la prueba utiliza el
stop-on-first-failure
argumento para especificar que IDT debe detenerse cuando encuentra algún error.Para detectar este evento, puedes sondear periódicamente el API valor del
CancellationRequested
booleano en laPollForNotifications
API respuesta. Cuando IDT detecta un error y está configurado para detenerse en el primer error, establece el valor delCancellationRequested
booleano en.true
Cuando se produce alguno de estos eventos, IDT espera 5 minutos a que terminen de ejecutarse todos los casos de prueba que se estén ejecutando actualmente. Si todos los casos de prueba en ejecución no se cierran en 5 minutos, IDT obliga a detener cada uno de sus procesos. Si no IDT ha recibido los resultados de las pruebas antes de que finalicen los procesos, marcará los casos de prueba como agotados. Como práctica recomendada, debe asegurarse de que los casos de prueba realicen las siguientes acciones cuando detecten alguno de estos eventos:
-
Dejar de ejecutar la lógica de prueba normal.
-
Limpiar todos los recursos temporales, como los artefactos de prueba del dispositivo que se está probando.
-
Informe el resultado de una prueba aIDT, por ejemplo, una falla o un error en la prueba.
-
Salir.