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á.
Fluxo de trabalho do Device Advisor
Este tutorial explica como criar um conjunto de testes personalizado e executar testes no dispositivo que você deseja testar no console. Depois que os testes forem concluídos, você poderá visualizar os resultados do teste e os logs detalhados.
Pré-requisitos
Antes de iniciar este tutorial, conclua as etapas descritas em Configuração.
Criar uma definição de conjunto de teste
Primeiro, instale um AWS SDK.
Sintaxe de rootGroup
Um grupo raiz é uma string JSON que especifica quais casos de teste incluir no conjunto de testes. Ele também especifica todas as configurações necessárias para esses casos de teste. Use o grupo raiz para estruturar e ordenar o conjunto de testes com base em suas necessidades. A hierarquia de um conjunto de testes é:
test suite → test group(s) → test case(s)
Um conjunto de testes deve ter pelo menos um grupo de teste, e cada grupo de teste deve ter pelo menos um caso de teste. O Device Advisor executa testes na ordem em que você define os grupos de teste e os casos de teste.
Cada grupo raiz segue essa estrutura básica:
{ "configuration": { // for all tests in the test suite "": "" } "tests": [{ "name": "" "configuration": { // for all sub-groups in this test group "": "" }, "tests": [{ "name": "" "configuration": { // for all test cases in this test group "": "" }, "test": { "id": "" "version": "" } }] }] }
No grupo raiz, você define o conjunto de testes com um name
, um configuration
e os tests
que o grupo contém. O grupo tests
contém as definições de testes individuais. Você define cada teste com um name
, um configuration
e um bloco test
que define os casos de teste desse teste. Finalmente, cada caso de teste é definido com um id
e um version
.
Para obter informações sobre como usar os campos "id"
e "version"
para cada caso de teste (bloco test
), consulte Casos de teste do Device Advisor. Essa seção também contém informações sobre as configurações configuration
disponíveis.
O bloco a seguir é um exemplo de configuração de grupo raiz. Essas configurações especificam os casos de teste MQTT Connect Happy Case e MQTT Connect Exponential Backoff Retries, junto com as descrições dos campos de configuração.
{ "configuration": {}, // Suite-level configuration "tests": [ // Group definitions should be provided here { "name": "My_MQTT_Connect_Group", // Group definition name "configuration": {} // Group definition-level configuration, "tests": [ // Test case definitions should be provided here { "name": "My_MQTT_Connect_Happy_Case", // Test case definition name "configuration": { "EXECUTION_TIMEOUT": 300 // Test case definition-level configuration, in seconds }, "test": { "id": "MQTT_Connect", // test case id "version": "0.0.0" // test case version } }, { "name": "My_MQTT_Connect_Jitter_Backoff_Retries", // Test case definition name "configuration": { "EXECUTION_TIMEOUT": 600 // Test case definition-level configuration, in seconds }, "test": { "id": "MQTT_Connect_Jitter_Backoff_Retries", // test case id "version": "0.0.0" // test case version } }] }] }
Você deve fornecer a configuração do grupo raiz ao criar a definição de conjunto de testes. Salve o suiteDefinitionId
que é retornado no objeto da resposta. Você pode usar esse ID para recuperar as informações de definição do conjunto de testes e executar o conjunto de testes.
Aqui está um exemplo do Java SDK:
response = iotDeviceAdvisorClient.createSuiteDefinition( CreateSuiteDefinitionRequest.builder() .suiteDefinitionConfiguration(SuiteDefinitionConfiguration.builder() .suiteDefinitionName("
your-suite-definition-name
") .devices( DeviceUnderTest.builder() .thingArn("your-test-device-thing-arn
") .certificateArn("your-test-device-certificate-arn
") .deviceRoleArn("your-device-role-arn
") //if using SigV4 for MQTT over WebSocket .build() ) .rootGroup("your-root-group-configuration
") .devicePermissionRoleArn("your-device-permission-role-arn
") .protocol("MqttV3_1_1 || MqttV5 || MqttV3_1_1_OverWebSocket || MqttV5_OverWebSocket
") .build() ) .build() )
Obtenha uma definição de conjunto de teste
Depois de criar a definição de conjunto de testes, você recebe o suiteDefinitionId
no objeto de resposta da operação da API CreateSuiteDefinition
.
Quando a operação retorna o suiteDefinitionId
, você pode ver novos campos id
em cada grupo e a definição do caso de teste dentro do grupo raiz. Você pode usar esses IDs para executar um subconjunto da definição do conjunto de testes.
Exemplo de Java SDK:
response = iotDeviceAdvisorClient.GetSuiteDefinition( GetSuiteDefinitionRequest.builder() .suiteDefinitionId("
your-suite-definition-id
") .build() )
Obtenha um endpoint de teste
Use a operação da API GetEndpoint
para obter o endpoint de teste usado pelo dispositivo. Selecione o endpoint que melhor se adapta ao teste. Para executar vários conjuntos de testes simultaneamente, use o endpoint em nível de dispositivo fornecendo um thing
ARN
, um certificate ARN
ou um device role ARN
. Para executar uma única suíte de testes, não forneça argumentos à GetEndpoint operação para escolher o endpoint no nível da conta.
Exemplo do SDK:
response = iotDeviceAdvisorClient.getEndpoint(GetEndpointRequest.builder() .certificateArn("
your-test-device-certificate-arn
") .thingArn("your-test-device-thing-arn
") .deviceRoleArn("your-device-role-arn
") //if using SigV4 for MQTT over WebSocket .build())
Inicie a execução de um conjunto de testes
Depois de criar uma definição de conjunto de testes e configurar o dispositivo de teste para se conectar ao endpoint de teste do Device Advisor, execute o conjunto de testes com a API StartSuiteRun
.
Para clientes do MQTT, use um certificateArn
ou um thingArn
para executar o conjunto de testes. Se ambos estiverem configurados, o certificado será usado se pertencer ao objeto.
Para MQTT em vez WebSocket do cliente, use deviceRoleArn
para executar a suíte de testes. Se o perfil especificado for diferente do perfil especificado na definição do conjunto de testes, o perfil especificado substituirá o perfil definido.
Para .parallelRun()
, use true
se você usar um endpoint em nível de dispositivo para executar vários conjuntos de testes em paralelo usando uma Conta da AWS.
Exemplo do SDK:
response = iotDeviceAdvisorClient.startSuiteRun(StartSuiteRunRequest.builder() .suiteDefinitionId("
your-suite-definition-id
") .suiteRunConfiguration(SuiteRunConfiguration.builder() .primaryDevice(DeviceUnderTest.builder() .certificateArn("your-test-device-certificate-arn
") .thingArn("your-test-device-thing-arn
") .deviceRoleArn("your-device-role-arn
") //if using SigV4 for MQTT over WebSocket .build()) .parallelRun(true | false) .build()) .build())
Salve o suiteRunId
da resposta. Você usará isso para recuperar os resultados da execução desse conjunto de testes.
Obtenha a execução de um conjunto de testes
Depois de iniciar a execução de um conjunto de testes, você pode verificar o progresso e os resultados com a API GetSuiteRun
.
Exemplo do SDK:
// Using the SDK, call the GetSuiteRun API. response = iotDeviceAdvisorClient.GetSuiteRun( GetSuiteRunRequest.builder() .suiteDefinitionId("
your-suite-definition-id
") .suiteRunId("your-suite-run-id
") .build())
Interromper a execução de um conjunto de testes
Para interromper a execução de um conjunto de testes que ainda está em andamento, você pode chamar a operação da API StopSuiteRun
. Depois de chamar a operação StopSuiteRun
, o serviço inicia o processo de limpeza. Enquanto o serviço executa o processo de limpeza, o conjunto de testes executa atualizações de status para Stopping
. O processo pode demorar vários minutos. Quando o processo estiver concluído, o conjunto de testes executará atualizações de status para Stopped
. Depois que a execução de um teste for completamente interrompida, você poderá iniciar outra execução do conjunto de testes. Você pode verificar periodicamente o status de execução do conjunto usando a operação da API GetSuiteRun
, conforme mostrado na seção anterior.
Exemplo do SDK:
// Using the SDK, call the StopSuiteRun API. response = iotDeviceAdvisorClient.StopSuiteRun( StopSuiteRun.builder() .suiteDefinitionId("
your-suite-definition-id
") .suiteRunId("your-suite-run-id
") .build())
Obtenha um relatório de qualificação para uma execução bem-sucedida do conjunto de testes de qualificação
Se você executar um conjunto de testes de qualificação concluído com êxito, poderá recuperar um relatório de qualificação com a operação da API GetSuiteRunReport
. Você usa esse relatório de qualificação para qualificar o dispositivo com o programa de qualificação AWS IoT Core . Para determinar se o conjunto de testes é um conjunto de testes de qualificação, verifique se o parâmetro intendedForQualification
está definido como true
. Depois de chamar a operação da API GetSuiteRunReport
, você pode baixar o relatório do URL retornado por até 90 segundos. Se passarem mais de 90 segundos desde a última vez em que você chamou a operação GetSuiteRunReport
, chame a operação novamente para recuperar um novo URL válido.
Exemplo do SDK:
// Using the SDK, call the getSuiteRunReport API. response = iotDeviceAdvisorClient.getSuiteRunReport( GetSuiteRunReportRequest.builder() .suiteDefinitionId("
your-suite-definition-id
") .suiteRunId("your-suite-run-id
") .build() )