Revisión de los resultados y registros de las pruebas de IDT - AWS IoT Greengrass

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 o error. IDT emite un mensaje panic o fatal 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 archivo awsiotdevicetester_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 suite-name_Result.xml está en formato XML JUnit. Puede integrarlo en plataformas de integración/implementación continua como Jenkins, Bamboo, etc. El informe contiene un resumen global de los resultados de las pruebas.

<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 suite-name_report.xml enumera las pruebas que se han ejecutado y los resultados.

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>