Revise os resultados e os registros do teste IDT - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Revise os resultados e os registros do teste IDT

Esta seção descreve o formato no qual o IDT gera logs de console e relatórios de teste.

Formato de mensagens do console

AWS IoT Device Testerusa um formato padrão para imprimir mensagens no console quando ele inicia um conjunto de testes. O trecho a seguir mostra um exemplo de uma mensagem de console gerada pelo IDT.

time="2000-01-02T03:04:05-07:00" level=info msg=Using suite: MyTestSuite_1.0.0 executionId=9a52f362-1227-11eb-86c9-8c8590419f30

A maioria das mensagens do console são compostas de:

time

Um carimbo de data/hora ISO 8601 completo para o evento registrado.

level

O nível da mensagem para o evento registrado. Normalmente, o nível da mensagem registrada é um dosinfo,warn, ouerror. O IDT emite umfataloupanicmensagem se encontrar um evento esperado que faça com que ele saia mais cedo.

msg

A mensagem registrada.

executionId

Uma string de ID exclusiva para o processo IDT atual. Esse ID é usado para diferenciar entre execuções IDT individuais.

As mensagens do console geradas a partir de um conjunto de testes fornecem informações adicionais sobre o dispositivo em teste e o conjunto de testes, o grupo de testes e os casos de teste executados pelo IDT. O trecho a seguir mostra um exemplo de uma mensagem de console gerada a partir de um conjunto de testes.

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

A parte específica do conjunto de testes da mensagem do console contém os seguintes campos:

suiteId

O nome do conjunto de testes em execução no momento.

groupId

O ID do grupo de teste em execução no momento.

testCaseId

A ID do caso de teste em execução atual.

deviceId

Um ID do dispositivo em teste que o caso de teste atual está usando.

Para imprimir um resumo de teste no console quando um IDT terminar de executar um teste, você deve incluir umReportestadoem seu orquestrador de testes. O resumo do teste contém informações sobre o conjunto de testes, os resultados do teste para cada grupo que foi executado e os locais dos registros gerados e arquivos de relatório. O exemplo a seguir mostra uma mensagem de resumo de teste.

========== 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

AWS IoT Device TesterEsquema de relatório

awsiotdevicetester_report.xmlÉ um relatório assinado que contém as seguintes informações:

  • A versão IDT.

  • A versão do conjunto de testes.

  • A assinatura do relatório e a chave usadas para assinar o relatório.

  • A SKU do dispositivo e o nome do conjunto de dispositivos especificados nodevice.jsonfile.

  • A versão do produto e os recursos do dispositivo que foram testados.

  • O resumo agregado dos resultados de teste. Essas informações são as mesmas que as contidas nosuite-name_report.xmlfile.

<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>

O arquivo awsiotdevicetester_report.xml contém uma tag <awsproduct> com informações sobre o produto que está sendo testado e os recursos do produto que foram validados após a execução de um pacote de testes.

Atributos usados na tag <awsproduct>
name

O nome do produto testado.

version

A versão do produto testado.

features

Os recursos validados. Recursos marcados comorequiredsão necessários para que o conjunto de testes valide o dispositivo. O snippet a seguir mostra como essas informações aparecem no arquivo awsiotdevicetester_report.xml.

<feature name="ssh" value="supported" type="required"></feature>

Recursos marcados comooptionalnão são necessários para validação. Os seguintes trechos mostram recursos opcionais.

<feature name="hsi" value="supported" type="optional"></feature>
 <feature name="mqtt" value="not-supported" type="optional"></feature>

Esquema de relatório do conjunto de testes

O relatório suite-name_Result.xml está no formato JUnit XML. Você pode integrá-lo em plataformas de integração e implantação como Jenkins, Bamboo, e assim por diante. O relatório contém um resumo agregado dos resultados de testes.

<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>

A seção de relatório em ambos osawsiotdevicetester_report.xmlousuite-name_report.xmlLista os testes que foram executados e os resultados.

A primeira tag XML <testsuites> contém o resumo da execução do teste. Por exemplo:

<testsuites name="MyTestSuite results" time="2299" tests="28" failures="0" errors="0" disabled="0">
Atributos usados na tag <testsuites>
name

O nome do conjunto de testes.

time

O tempo, em segundos, necessário para executar o conjunto de testes.

tests

O número de testes executados.

failures

O número de testes que foram executados, mas não foram aprovados.

errors

O número de testes que não puderam ser executados pelo IDT.

disabled

Esse atributo não é usado e pode ser ignorado.

Se houver falhas de teste ou erros, você poderá identificar o teste com falha analisando as tags XML <testsuites>. As tags XML <testsuite> dentro da tag <testsuites> mostram o resumo do resultado do teste para um grupo de testes. Por exemplo:

<testsuite name="combination" package="" tests="1" failures="0" time="161" disabled="0" errors="0" skipped="0">

O formato é semelhante à tag <testsuites>, mas com um atributo skipped que não é usado e pode ser ignorado. Dentro de cada tag XML <testsuite>, há tags <testcase> para cada teste executado para um grupo de testes. Por exemplo:

<testcase classname="Security Test" name="IP Change Tests" attempts="1"></testcase>>
Atributos usados na tag <testcase>
name

O nome do teste.

attempts

O número de vezes que o IDT executou o caso de teste.

Quando um teste falha ou ocorre um erro, as tags <failure> ou <error> são adicionadas à tag <testcase> com informações para a solução de problemas. Por exemplo:

<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>