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 cadena JSON que especifica qué casos de prueba incluir en su 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 MQTT Connect (caso deseable) y Reintentos de retroceso exponencial de MQTT Connect, junto con las 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.

He aquí un ejemplo de SDK de Java:

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á el parámetro suiteDefinitionId en el objeto de respuesta de la operación de la API CreateSuiteDefinition.

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 utilizar estos ID para ejecutar un subconjunto de la definición de su conjunto de pruebas.

Ejemplo de SDK de Java:

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

Obtener un punto de conexión de prueba

Utilice la operación de la API GetEndpoint para obtener el punto de conexión 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 proporcione argumentos a la GetEndpoint operación para elegir el punto final a nivel de cuenta.

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

Iniciar la ejecución de un conjunto de pruebas

Después de crear una definición del conjunto de pruebas y configurar su dispositivo de prueba para que se conecte a su punto de conexión de prueba de Device Advisor, ejecute su conjunto de pruebas con la API StartSuiteRun.

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

En el caso de MQTT en lugar de WebSocket cliente, utilice deviceRoleArn 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.

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

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

Después de iniciar la ejecución de un conjunto de pruebas, puede comprobar su progreso y sus resultados con la API GetSuiteRun.

Ejemplo de SDK:

// 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 operación de la API StopSuiteRun. 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 del conjunto utilizando la operación de la API GetSuiteRun, como se muestra en la sección anterior.

Ejemplo de SDK:

// 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 cualificación que finaliza correctamente, puede recuperar un informe de cualificación con la operación de la API GetSuiteRunReport. 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. Después de llamar a la operación de la API GetSuiteRunReport, puede descargar el informe de la URL devuelta durante un máximo de 90 segundos. Si transcurren más de 90 segundos desde la última vez que llamó a la operación GetSuiteRunReport, vuelva a llamarla para recuperar una nueva URL válida.

Ejemplo de SDK:

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