Flujo de trabajo de Device Advisor - AWS IoT Core

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.

Flujo de trabajo de Device Advisor

Este tutorial explica cómo crear un conjunto de pruebas personalizado y ejecutar pruebas con el dispositivo que desea probar en la consola. Una vez finalizadas las pruebas, podrá ver los resultados de las mismas y los registros detallados.

Requisitos previos

Antes de comenzar este tutorial, complete los pasos descritos en Configuración.

Crear una definición de conjunto de pruebas

Primero, instala un AWS SDK.

Sintaxis de rootGroup

Un grupo raíz es una JSON cadena que especifica qué casos de prueba incluir en el conjunto de pruebas. También especifica cualquier configuración necesaria para esos casos de prueba. Utilice el grupo raíz para estructurar y ordenar su conjunto de pruebas en función de sus necesidades. La jerarquía de un conjunto de pruebas es:

test suite → test group(s) → test case(s)

Un conjunto de pruebas debe tener al menos un grupo de pruebas, y cada grupo de pruebas debe tener al menos un caso de prueba. Device Advisor ejecuta las pruebas en el orden en que usted define los grupos de pruebas y los casos de prueba.

Cada grupo raíz sigue esta estructura 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": "" } }] }] }

En el grupo raíz, se define el conjunto de pruebas con los parámetros name, configuration y tests que contiene el grupo. El grupo tests contiene las definiciones de las pruebas individuales. Usted define cada prueba con name, configuration y un bloque test que define los casos de prueba para esa prueba. Por último, cada caso de prueba se define con id y version.

Para obtener información acerca de cómo utilizar los campos "id" y "version" para cada caso de prueba (bloque test), consulte Casos de prueba de Device Advisor. Esa sección también contiene información sobre los ajustes disponibles para configuration.

El siguiente bloque es un ejemplo de configuración de un grupo raíz. Esta configuración especifica los casos de prueba MQTTConnect Happy Case y MQTTConnect Exponential Backoff Retries, junto con descripciones de los campos de configuración.

{ "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 } }] }] }

Debe proporcionar la configuración del grupo raíz cuando cree la definición del conjunto de pruebas. Guarde el parámetro suiteDefinitionId que se devuelve en el objeto de respuesta. Puede utilizar este ID para recuperar la información de definición de su conjunto de pruebas y ejecutar su conjunto de pruebas.

A continuación, se muestra un ejemplo de 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() )

Obtener una definición del conjunto de pruebas

Después de crear la definición del conjunto de pruebas, recibirá suiteDefinitionId el objeto de respuesta de la CreateSuiteDefinition API operación.

Cuando la operación devuelva el parámetro suiteDefinitionId, podrá ver nuevos campos id dentro de cada grupo y la definición del caso de prueba dentro del grupo raíz. Puede utilizarlos IDs para ejecutar un subconjunto de la definición de su conjunto de pruebas.

SDKEjemplo de Java:

response = iotDeviceAdvisorClient.GetSuiteDefinition( GetSuiteDefinitionRequest.builder() .suiteDefinitionId("your-suite-definition-id") .build() )

Obtener un punto de conexión de prueba

Utilice la GetEndpoint API operación para obtener el punto final de prueba utilizado por su dispositivo. Seleccione el punto de conexión que mejor se adapte a su prueba. Para ejecutar simultáneamente varios conjuntos de pruebas, utilice el punto de conexión de nivel de dispositivo proporcionando un thing ARN, certificate ARN o un device role ARN. Para ejecutar un único conjunto de pruebas, no añada ningún argumento a la GetEndpoint operación para elegir el punto final a nivel de cuenta.

SDKejemplo:

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

Iniciar la ejecución de un conjunto de pruebas

Después de crear una definición de conjunto de pruebas y configurar el dispositivo de prueba para que se conecte al terminal de prueba de Device Advisor, ejecute el conjunto de pruebas con el. StartSuiteRun API

Para MQTT los clientes, utilice el conjunto de pruebas certificateArn o thingArn ejecute el conjunto de pruebas. Ambos están configurados, se utiliza el certificado si pertenece al objeto.

Para MQTT más de un WebSocket cliente, deviceRoleArn utilícelo para ejecutar el conjunto de pruebas. Si el rol especificado es diferente del rol especificado en la definición del conjunto de pruebas, el rol especificado anula el rol definido.

Para .parallelRun(), utilice true si utiliza un punto de conexión de nivel de dispositivo para ejecutar varios conjuntos de pruebas en paralelo utilizando una Cuenta de AWS.

SDKejemplo:

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

Guarde el parámetro suiteRunId de la respuesta. Se utilizará para recuperar los resultados de la ejecución de este conjunto de pruebas.

Obtener una ejecución del conjunto de pruebas

Tras iniciar la ejecución de un conjunto de pruebas, puede comprobar su progreso y sus resultados con el GetSuiteRunAPI.

SDKejemplo:

// Using the SDK, call the GetSuiteRun API. response = iotDeviceAdvisorClient.GetSuiteRun( GetSuiteRunRequest.builder() .suiteDefinitionId("your-suite-definition-id") .suiteRunId("your-suite-run-id") .build())

Detener la ejecución de un conjunto de pruebas

Para detener la ejecución de un conjunto de pruebas que aún está en curso, puede llamar a la StopSuiteRun API operación. Tras llamar a la operación StopSuiteRun, el servicio inicia el proceso de limpieza. Mientras el servicio ejecuta el proceso de limpieza, el conjunto de pruebas ejecuta actualizaciones de estado a Stopping. El proceso de limpieza puede durar varios minutos. Una vez finalizado el proceso, el estado de ejecución del conjunto de pruebas se actualiza a Stopped. Después de que la ejecución de una prueba se haya detenido por completo, puede iniciar otra ejecución del conjunto de pruebas. Puede comprobar periódicamente el estado de ejecución de la suite mediante la GetSuiteRun API operación, como se muestra en la sección anterior.

SDKejemplo:

// Using the SDK, call the StopSuiteRun API. response = iotDeviceAdvisorClient.StopSuiteRun( StopSuiteRun.builder() .suiteDefinitionId("your-suite-definition-id") .suiteRunId("your-suite-run-id") .build())

Obtener un informe de cualificación para una ejecución correcta del conjunto de pruebas de cualificación

Si ejecuta un conjunto de pruebas de calificación que se completa correctamente, puede recuperar un informe de calificación con la GetSuiteRunReport API operación. Utilice este informe de cualificación para cualificar su dispositivo con el programa de cualificación de AWS IoT Core . Para determinar si su conjunto de pruebas es un conjunto de pruebas de cualificación, compruebe si el parámetro intendedForQualification está ajustado en true. Una vez finalizada la GetSuiteRunReport API operación, puede descargar el informe devuelto URL durante un máximo de 90 segundos. Si han transcurrido más de 90 segundos desde la última vez que llamó a la GetSuiteRunReport operación, vuelva a llamar a la operación para recuperar una nueva operación válidaURL.

SDKejemplo:

// Using the SDK, call the getSuiteRunReport API. response = iotDeviceAdvisorClient.getSuiteRunReport( GetSuiteRunReportRequest.builder() .suiteDefinitionId("your-suite-definition-id") .suiteRunId("your-suite-run-id") .build() )