Pruebas de larga duración - 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.

Pruebas de larga duración

Las pruebas de larga duración son un nuevo conjunto de pruebas que monitoriza el comportamiento de un dispositivo cuando funciona durante períodos de tiempo más prolongados. En comparación con la ejecución de pruebas individuales que se centran en comportamientos específicos de un dispositivo, la prueba de larga duración examina el comportamiento del dispositivo en una variedad de escenarios del mundo real a lo largo de su vida útil. Device Advisor organiza las pruebas en el orden más eficiente posible. La prueba genera resultados y registros, incluido un registro resumido con métricas útiles sobre el rendimiento del dispositivo durante la prueba.

Caso de prueba MQTT de larga duración

En el caso de la prueba de larga duración de MQTT, el comportamiento del dispositivo se observa inicialmente en situaciones de casos deseables, como MQTT Connect, Subscribe, Publish y Reconnect. A continuación, se observa el dispositivo en varias situaciones de fallo complejas, como la interrupción de la reconexión MQTT, la desconexión prolongada del servidor y la conectividad intermitente.

Flujo de ejecución de casos de prueba de larga duración en MQTT

La ejecución de un caso de prueba de larga duración en MQTT consta de tres fases:

La «Ejecución de pruebas de larga duración de MQTT», que muestra la ejecución de pruebas básicas, la ejecución de pruebas avanzadas y el tiempo de ejecución adicional.

Ejecución de pruebas básicas

En esta fase, el caso de prueba ejecuta pruebas sencillas en paralelo. La prueba valida si el dispositivo tiene las operaciones seleccionadas en la configuración.

El conjunto de pruebas básicas puede incluir lo siguiente, en función de las operaciones seleccionadas:

CONNECT

Este escenario valida si el dispositivo puede establecer una conexión correcta con el agente.

El flujo de conexión básico que incluye un dispositivo que envía un mensaje CONNECT y Broker responde con un mensaje CONNACK con un código de retorno correcto.

PUBLISH

Este escenario valida si el dispositivo publica correctamente con el agente.

QoS 0

Este caso de prueba valida si el dispositivo envía correctamente un mensaje PUBLISH al agente durante una publicación con QoS 0. La prueba no espera a que el dispositivo reciba el mensaje PUBACK.

El flujo de QoS 0 de PUBLISH que incluye un dispositivo que envía un mensaje de PUBLISH con un nivel de QoS 0.
QoS 1

En este caso de prueba, se espera que el dispositivo envíe dos mensajes PUBLISH al agente con QoS 1. Tras el primer mensaje PUBLISH, el agente espera hasta 15 segundos antes de responder. El dispositivo debe volver a intentar enviar el mensaje PUBLISH original con el mismo identificador de paquete dentro del intervalo de 15 segundos. Si lo hace, el agente responde con un mensaje PUBACK y la prueba se valida. Si el dispositivo no vuelve a intentar el PUBLISH, se envía el PUBACK original al dispositivo y la prueba se marca como superada con advertencias, junto con un mensaje del sistema. Durante la ejecución de la prueba, si el dispositivo pierde la conexión y se vuelve a conectar, el escenario de prueba se restablecerá sin fallar y el dispositivo tendrá que volver a realizar los pasos del escenario de prueba.

El flujo de QoS 1 de PUBLISH, que incluye un dispositivo que envía un mensaje de PUBLISH con un nivel de QoS 1 y múltiples interacciones con el intermediario.

SUBSCRIBE

Este escenario valida si el dispositivo se suscribe correctamente con el agente.

QoS 0

Este caso de prueba valida si el dispositivo envía correctamente un mensaje SUBSCRIBE al agente durante una suscripción con QoS 0. La prueba no espera a que el dispositivo reciba un mensaje SUBACK.

El flujo de QoS 0 de SUBSCRIBE, que incluye un dispositivo que envía un mensaje de SUBSCRIBE con un nivel de QoS 0 y un intermediario que responde con un mensaje SUBACK y un código de QoS 0 de Success Maximum.
QoS 1

En este caso de prueba, se espera que el dispositivo envíe dos mensajes SUBSCRIBE al agente con QoS 1. Tras el primer mensaje SUBSCRIBE, el agente espera hasta 15 segundos antes de responder. El dispositivo debe volver a intentar enviar el mensaje SUBSCRIBE original con el mismo identificador de paquete dentro del intervalo de 15 segundos. Si lo hace, el agente responde con un mensaje SUBACK y la prueba se valida. Si el dispositivo no vuelve a intentar el SUBSCRIBE, se envía el SUBACK original al dispositivo y la prueba se marca como superada con advertencias, junto con un mensaje del sistema. Durante la ejecución de la prueba, si el dispositivo pierde la conexión y se vuelve a conectar, el escenario de prueba se restablecerá sin fallar y el dispositivo tendrá que volver a realizar los pasos del escenario de prueba.

El flujo de QoS 1 de SUBSCRIBE, que incluye un dispositivo que envía un mensaje de SUBSCRIBE con un nivel de QoS 1 y múltiples interacciones con el intermediario.

RECONNECT

Este escenario valida si el dispositivo se vuelve a conectar correctamente con el agente después de desconectarse de una conexión correcta. Device Advisor no desconectará el dispositivo si se conectó más de una vez anteriormente durante el conjunto de pruebas. En su lugar, marcará la prueba como superada.

El flujo de RECONEXIÓN entre DUT y el intermediario.

Ejecución de pruebas avanzadas

En esta fase, el caso de prueba ejecuta pruebas más complejas en serie para validar si el dispositivo sigue las prácticas recomendadas. Estas pruebas avanzadas están disponibles para su selección y pueden excluirse si no son necesarias. Cada prueba avanzada tiene su propio valor de tiempo de espera en función de lo que exija la situación.

DEVOLVER PUBACK EN SUSCRIPCIÓN DE QoS 1

nota

Seleccione este escenario únicamente si su dispositivo es capaz de realizar suscripciones de QoS 1.

Este escenario se valida si, cuando el dispositivo se suscribe a un tema y recibe un mensaje PUBLISH del agente, devuelve un mensaje PUBACK.

El flujo RETURN PUBACK ON QoS 1 SUSCRIPTION entre DUT y el bróker.

RECIBIR UNA CARGA DE GRAN TAMAÑO

nota

Seleccione este escenario únicamente si su dispositivo es capaz de realizar suscripciones de QoS 1.

Este escenario valida si el dispositivo responde con un mensaje PUBACK después de recibir un mensaje PUBLISH del agente sobre un tema de QoS 1 con una gran carga. El formato de la carga esperada se puede configurar mediante la opción LONG_PAYLOAD_FORMAT.

El flujo de carga útil de RECEIVE LARGE entre DUT y el bróker.

SESIÓN PERSISTENTE

nota

Solo seleccione este escenario únicamente si su dispositivo es capaz de realizar suscripciones de QoS 1 y puede mantener una sesión persistente.

Este escenario valida el comportamiento del dispositivo a la hora de mantener sesiones persistentes. La prueba valida cuándo se cumplen las siguientes condiciones:

  • El dispositivo se conecta al agente con una suscripción de QoS 1 activa y sesiones persistentes habilitadas.

  • El dispositivo se desconecta correctamente del agente durante la sesión.

  • El dispositivo se vuelve a conectar al agente y reanuda las suscripciones a los temas que lo activaron sin volver a suscribirse explícitamente a esos temas.

  • El dispositivo recibe correctamente los mensajes almacenados por el agente sobre los temas a los que se ha suscrito y funciona según lo previsto.

Para obtener más información sobre las sesiones AWS IoT persistentes, consulte Uso de sesiones persistentes de MQTT.

El flujo de SESIÓN PERSISTENTE entre DUT y el bróker.

KEEP-ALIVE

Este escenario valida si el dispositivo se desconecta correctamente después de no recibir una respuesta de ping del agente. La conexión debe tener configurado un temporizador Keep-Alive válido. Como parte de esta prueba, el agente bloquea todas las respuestas enviadas para los mensajes PUBLISH, SUBSCRIBE y PINGREQ. También valida si el dispositivo sometido a prueba desconecta la conexión MQTT.

El flujo KEEP ALIVE entre DUT y el bróker.

CONECTIVIDAD INTERMITENTE

Este escenario valida si el dispositivo puede volver a conectarse al agente después de que el corredor desconecte el dispositivo a intervalos aleatorios durante un período de tiempo aleatorio.

El flujo de CONECTIVIDAD INTERMITENTE entre DUT y el bróker.

RETROCESO DE RECONEXIÓN

Este escenario valida si el dispositivo tiene implementado un mecanismo de inactividad cuando el agente se desconecta de él varias veces. Device Advisor indica que el tipo de retroceso es exponencial, fluctuante, lineal o constante. El número de intentos de retroceso se puede configurar mediante la opción BACKOFF_CONNECTION_ATTEMPTS. El valor predeterminado es 5. El valor se puede configurar entre 5 y 10.

Para superar esta prueba, le recomendamos que implemente el mecanismo de retroceso y fluctuación exponencial en el dispositivo sometido a prueba.

El flujo RECONNECT BACKOFF entre el DUT y el bróker.

DESCONEXIÓN PROLONGADA DEL SERVIDOR

Este escenario valida si el dispositivo puede volver a conectarse correctamente después de que el agente lo desconecte durante un período prolongado (hasta 120 minutos). El tiempo de desconexión del servidor se puede configurar mediante la opción LONG_SERVER_DISCONNECT_TIME. El valor predeterminado es 120 minutos. Este valor se puede configurar de 30 a 120 minutos.

El flujo de DESCONEXIÓN PROLONGADA DEL SERVIDOR entre DUT y el intermediario.

Tiempo de ejecución adicional

El tiempo de ejecución adicional es el tiempo que espera la prueba después de completar todas las pruebas anteriores y antes de finalizar el caso de prueba. Los clientes utilizan este período de tiempo adicional para monitorizar y registrar todas las comunicaciones entre el dispositivo y el agente. El tiempo de ejecución adicional se puede configurar mediante la opción ADDITIONAL_EXECUTION_TIME. De forma predeterminada, esta opción está establecida en 0 minutos y puede ser de 0 a 120 minutos.

Opciones de configuración de las pruebas de larga duración de MQTT

Todas las opciones de configuración proporcionadas para la prueba de larga duración de MQTT son opcionales. Están disponibles las siguientes opciones:

OPERACIONES

La lista de operaciones que realiza el dispositivo, como CONNECT, PUBLISH y SUBSCRIBE. El caso de prueba ejecuta escenarios basados en las operaciones especificadas. Se supone que las operaciones que no se especifican son válidas.

{ "OPERATIONS": ["PUBLISH", "SUBSCRIBE"] //by default the test assumes device can CONNECT }
ESCENARIOS

En función de las operaciones seleccionadas, el caso de prueba ejecuta escenarios para validar el comportamiento del dispositivo. Existen dos tipos de escenarios:

  • Los escenarios básicos son pruebas sencillas que validan si el dispositivo puede realizar las operaciones seleccionadas anteriormente como parte de la configuración. Se preseleccionan en función de las operaciones especificadas en la configuración. No se requieren más entradas en la configuración.

  • Los escenarios avanzados son escenarios más complejos que se utilizan en el dispositivo para validar si el dispositivo sigue las prácticas recomendadas en condiciones reales. Son opcionales y se pueden transferir como una serie de escenarios a la entrada de configuración del conjunto de pruebas.

{ "SCENARIOS": [ // list of advanced scenarios "PUBACK_QOS_1", "RECEIVE_LARGE_PAYLOAD", "PERSISTENT_SESSION", "KEEP_ALIVE", "INTERMITTENT_CONNECTIVITY", "RECONNECT_BACK_OFF", "LONG_SERVER_DISCONNECT" ] }
BASIC_TESTS_EXECUTION_TIME_OUT:

El tiempo máximo que esperará el caso de prueba hasta que se completen todas las pruebas básicas. El valor predeterminado es 60 minutos. Este valor se puede configurar de 30 a 120 minutos.

LONG_SERVER_DISCONNECT_TIME:

El tiempo que tardó el caso de prueba en desconectar y volver a conectar el dispositivo durante la prueba de desconexión prolongada del servidor. El valor predeterminado es 60 minutos. Este valor se puede configurar de 30 a 120 minutos.

ADDITIONAL_EXECUTION_TIME:

La configuración de esta opción proporciona un período de tiempo después de que se hayan completado todas las pruebas para monitorizar los eventos entre el dispositivo y el agente. El valor predeterminado es 0 minutos. Este valor se puede configurar de 0 a 120 minutos.

BACKOFF_CONNECTION_ATTEMPTS:

Esta opción configura el número de veces que el caso de prueba desconecta el dispositivo. Esto se utiliza en la prueba de retroceso de reconexión. El valor predeterminado es 5 intentos. Este valor se puede configurar de 5 a 10.

LONG_PAYLOAD_FORMAT:

El formato de la carga del mensaje que el dispositivo espera cuando el caso de prueba se publique en un tema de QoS 1 suscrito por el dispositivo.

Definición de caso de prueba de API:

{ "tests":[ { "name":"my_mqtt_long_duration_test", "configuration": { // optional "OPERATIONS": ["PUBLISH", "SUBSCRIBE"], "SCENARIOS": [ "LONG_SERVER_DISCONNECT", "RECONNECT_BACK_OFF", "KEEP_ALIVE", "RECEIVE_LARGE_PAYLOAD", "INTERMITTENT_CONNECTIVITY", "PERSISTENT_SESSION", ], "BASIC_TESTS_EXECUTION_TIMEOUT": 60, // in minutes (60 minutes by default) "LONG_SERVER_DISCONNECT_TIME": 60, // in minutes (120 minutes by default) "ADDITIONAL_EXECUTION_TIME": 60, // in minutes (0 minutes by default) "BACKOFF_CONNECTION_ATTEMPTS": "5", "LONG_PAYLOAD_FORMAT":"{"message":"${payload}"}" }, "test":{ "id":"MQTT_Long_Duration", "version":"0.0.0" } } ] }

Registro resumido de caso de prueba MQTT de larga duración

El caso de prueba de larga duración de MQTT dura más que los casos de prueba normales. Se proporciona un registro resumido independiente, en el que se enumeran los eventos importantes, como las conexiones de los dispositivos, la publicación y la suscripción durante la ejecución. Los detalles incluyen lo que se ha probado, lo que no se ha probado y lo que ha fallado. Al final del registro, la prueba incluye un resumen de todos los eventos ocurridos durante la ejecución del caso de prueba. Esto incluye:

  • El temporizador Keep-Alive configurado en el dispositivo.

  • Indicador de sesión persistente configurado en el dispositivo.

  • El número de conexiones del dispositivo durante la ejecución de la prueba.

  • El tipo de retroceso de reconexión del dispositivo, si está validado para la prueba de retroceso de reconexión.

  • Los temas en los que el dispositivo publicó durante el caso de prueba.

  • Los temas a los que el dispositivo se suscribió durante el caso de prueba.