Revisión de los resultados y registros de las pruebas de IDT
En esta sección se describe el formato en que IDT genera los registros de la consola y los informes de las pruebas.
Formato de mensajes de consola
AWS IoT Device Tester utiliza un formato estándar para imprimir mensajes en la consola cuando inicia un conjunto de pruebas. En el fragmento siguiente se muestra un ejemplo de mensaje de consola generado por IDT.
time="2000-01-02T03:04:05-07:00" level=info msg=Using suite: MyTestSuite_1.0.0 executionId=9a52f362-1227-11eb-86c9-8c8590419f30
La mayoría de los mensajes de consola constan de los siguientes campos:
time
-
Una marca de tiempo completa conforme a la norma ISO 8601 para el evento registrado.
level
-
El nivel de mensaje del evento registrado. Normalmente, el nivel del mensaje registrado es uno de los siguientes:
info
,warn
oerror
. IDT emite un mensajepanic
ofatal
si detecta un evento esperado que provoca su cierre anticipado. msg
-
El mensaje registrado.
executionId
-
Una cadena de ID único para el proceso de IDT actual. Este ID se utiliza para diferenciar entre ejecuciones de IDT individuales.
Los mensajes de consola generados a partir de un conjunto de pruebas proporcionan información adicional sobre el dispositivo que se está probando y el conjunto de pruebas, el grupo de pruebas y los casos de prueba que ejecuta IDT. En el fragmento siguiente se muestra un ejemplo de un mensaje de consola generado por un conjunto de pruebas.
time="2000-01-02T03:04:05-07:00" level=info msg=Hello world! suiteId=MyTestSuite groupId=myTestGroup testCaseId=myTestCase deviceId=my-device executionId=9a52f362-1227-11eb-86c9-8c8590419f30
La parte específica del mensaje de la consola para el conjunto de pruebas contiene los siguientes campos:
suiteId
-
El nombre del conjunto de pruebas que se está ejecutando.
groupId
-
El ID del grupo de pruebas que se está ejecutando.
testCaseId
-
El ID del caso de prueba que se está ejecutando.
deviceId
-
Un ID del dispositivo que se está probando y que el caso de prueba está utilizando.
Para imprimir un resumen de la prueba en la consola cuando IDT termina de ejecutar una prueba, debe incluir un estado de Report en el orquestador de pruebas. El resumen de la prueba contiene información sobre el conjunto de pruebas, los resultados de las pruebas de cada grupo que se ejecutó y las ubicaciones de los registros y archivos de informes generados. En el siguiente ejemplo se muestra un mensaje de resumen de la prueba.
========== Test Summary ========== Execution Time: 5m00s Tests Completed: 4 Tests Passed: 3 Tests Failed: 1 Tests Skipped: 0 ---------------------------------- Test Groups: GroupA: PASSED GroupB: FAILED ---------------------------------- Failed Tests: Group Name: GroupB Test Name: TestB1 Reason: Something bad happened ---------------------------------- Path to IoT Device Tester Report: /path/to/awsiotdevicetester_report.xml Path to Test Execution Logs: /path/to/logs Path to Aggregated JUnit Report: /path/to/MyTestSuite_Report.xml
Esquema de informe de AWS IoT Device Tester
awsiotdevicetester_report.xml
es un informe firmado que contiene la siguiente información:
-
La versión de IDT.
-
La versión del conjunto de pruebas.
-
La firma del informe y la clave utilizada para firmarlo.
-
El SKU del dispositivo y el grupo de dispositivos especificado en el archivo
device.json
. -
La versión del producto y las características del dispositivo que se han probado.
-
El resumen de agregación de los resultados de las pruebas. Esta información es la misma que la que se incluye en el archivo
.suite-name
_report.xml
<apnreport> <awsiotdevicetesterversion>
idt-version
</awsiotdevicetesterversion> <testsuiteversion>test-suite-version
</testsuiteversion> <signature>signature
</signature> <keyname>keyname
</keyname> <session> <testsession>execution-id
</testsession> <starttime>start-time
</starttime> <endtime>end-time
</endtime> </session> <awsproduct> <name>product-name
</name> <version>product-version
</version> <features> <feature name="<feature-name>
" value="supported | not-supported | <feature-value>
" type="optional | required
"/> </features> </awsproduct> <device> <sku>device-sku
</sku> <name>device-name
</name> <features> <feature name="<feature-name>
" value="<feature-value>
"/> </features> <executionMethod>ssh | uart | docker
</executionMethod> </device> <devenvironment> <os name="<os-name>
"/> </devenvironment> <report><suite-name-report-contents>
</report> </apnreport>
El archivo awsiotdevicetester_report.xml
contiene una etiqueta <awsproduct>
que tiene información sobre el producto que se está probando y las características del producto que se han validado después de ejecutar un conjunto de pruebas.
Atributos que se utilizan en la etiqueta <awsproduct>
name
-
El nombre del producto que se está probando.
version
-
La versión del producto que se está probando.
features
-
Las características validadas. Las características marcadas como
required
son necesarias para que el conjunto de pruebas valide el dispositivo. En el siguiente fragmento se muestra cómo aparece esta información en el archivoawsiotdevicetester_report.xml
.<feature name="ssh" value="supported" type="required"></feature>
Las funciones marcadas como
optional
no son necesarias para la validación. Los siguientes fragmentos muestran características opcionales:<feature name="hsi" value="supported" type="optional"></feature> <feature name="mqtt" value="not-supported" type="optional"></feature>
Esquema del informe del conjunto de pruebas
El informe
está en formato XML JUnitsuite-name
_Result.xml
<testsuites name="
<suite-name>
results" time="<run-duration>
" tests="<number-of-test>
" failures="<number-of-tests>
" skipped="<number-of-tests>
" errors="<number-of-tests>
" disabled="0"> <testsuite name="<test-group-id>
" package="" tests="<number-of-tests>
" failures="<number-of-tests>
" skipped="<number-of-tests>
" errors="<number-of-tests>
" disabled="0"> <!--success--> <testcase classname="<classname>
" name="<name>
" time="<run-duration>
"/> <!--failure--> <testcase classname="<classname>
" name="<name>
" time="<run-duration>
"> <failure type="<failure-type>
">reason
</failure> </testcase> <!--skipped--> <testcase classname="<classname>
" name="<name>
" time="<run-duration>
"> <skipped>reason
</skipped> </testcase> <!--error--> <testcase classname="<classname>
" name="<name>
" time="<run-duration>
"> <error>reason
</error> </testcase> </testsuite> </testsuites>
La sección de informe tanto en awsiotdevicetester_report.xml
como en
enumera las pruebas que se han ejecutado y los resultados.suite-name
_report.xml
La primera etiqueta XML <testsuites>
contiene el resumen de la ejecución de las pruebas. Por ejemplo:
<testsuites name="MyTestSuite results" time="2299" tests="28" failures="0" errors="0" disabled="0">
Atributos que se utilizan en la etiqueta <testsuites>
name
-
El nombre del grupo de prueba.
time
-
El tiempo, en segundos, que se ha tardado en ejecutar el conjunto de pruebas.
tests
-
El número de pruebas ejecutadas.
failures
-
El número de pruebas que se ejecutaron, pero que no se superaron.
errors
-
El número de pruebas que IDT no ha podido ejecutar.
disabled
-
Este atributo no se utiliza y se puede omitir.
Si se producen errores en pruebas, puede identificar la prueba fallido revisando las etiquetas XML <testsuites>
. Las etiquetas XML <testsuite>
dentro de la etiqueta <testsuites>
muestran el resumen del resultado de la prueba de un grupo de prueba. Por ejemplo:
<testsuite name="combination" package="" tests="1" failures="0" time="161" disabled="0" errors="0" skipped="0">
El formato es similar a la etiqueta <testsuites>
, pero con un atributo skipped
que no se utiliza y que se puede pasar por alto. Dentro de cada etiqueta XML <testsuite>
, hay etiquetas <testcase>
para cada prueba ejecutada para un grupo de prueba. Por ejemplo:
<testcase classname="Security Test" name="IP Change Tests" attempts="1"></testcase>>
Atributos que se utilizan en la etiqueta <testcase>
name
-
El nombre de la prueba.
attempts
-
El número de veces que IDT ha ejecutado el caso de prueba.
Cuando una prueba genera un error o si se produce un error, las etiquetas <failure>
o <error>
se agregan a la etiqueta <testcase>
con información para la resolución de problemas. Por ejemplo:
<testcase classname="mcu.Full_MQTT" name="MQTT_TestCase" attempts="1"> <failure type="Failure">Reason for the test failure</failure> <error>Reason for the test execution error</error> </testcase>