

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.

# Asesor de dispositivos
<a name="device-advisor"></a>

[Device Advisor](https://aws.amazon.com/iot-core/features/) es una capacidad de prueba basada en la nube y totalmente administrada para validar dispositivos IoT durante el desarrollo del software del dispositivo. Device Advisor proporciona pruebas prediseñadas que puede usar para validar los dispositivos de IoT y lograr una conectividad confiable y segura antes de implementar los dispositivos en producción. AWS IoT Core Las pruebas prediseñadas de Device Advisor le ayudarán a validar el software de su dispositivo según las prácticas recomendadas de uso de [TLS](https://docs.aws.amazon.com//iot/latest/developerguide/protocols.html), [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/protocols.html), [Device Shadow](https://docs.aws.amazon.com//iot/latest/developerguide/iot-device-shadows.html) e [IoT Jobs](https://docs.aws.amazon.com//iot/latest/developerguide/iot-jobs.html). También puede descargar informes de cualificación firmados para enviarlos a la Red de socios de AWS y obtener la cualificación de su dispositivo para el [Catálogo de dispositivos de socios de AWS](https://devices.amazonaws.com/) sin necesidad de enviar su dispositivo y esperar a que lo prueben.

**nota**  
Device Advisor es compatible en las regiones us-east-1, us-west-2, ap-northeast-1 y eu-west-1.  
Device Advisor es compatible con dispositivos y clientes que utilizan los protocolos MQTT y MQTT over WebSocket Secure (WSS) para publicar mensajes y suscribirse a ellos. Todos los protocolos admiten y IPv4 . IPv6  
Device Advisor admite certificados de servidor RSA.

Cualquier dispositivo diseñado para conectarse AWS IoT Core puede utilizar Device Advisor. Puede acceder a Device Advisor desde la [AWS IoT consola](https://us-east-1.console.aws.amazon.com/iot/home?region=us-east-1#/deviceadvisor/intro) o mediante el AWS CLI SDK. Cuando esté listo para probar el dispositivo, regístrelo AWS IoT Core y configure el software del dispositivo con el terminal Device Advisor. A continuación, elija las pruebas prediseñadas, configúrelas, ejecute las pruebas en su dispositivo y obtenga los resultados de las pruebas junto con registros detallados o un informe de cualificación.

Device Advisor es un terminal de prueba en la AWS nube. Puede probar sus dispositivos configurándolos para que se conecten al punto de conexión de prueba proporcionado por Device Advisor. Una vez configurado un dispositivo para conectarse al punto final de prueba, puede visitar la consola de Device Advisor o usar el AWS SDK para elegir las pruebas que quiere ejecutar en sus dispositivos. A continuación, Device Advisor administra el ciclo de vida completo de una prueba, incluido el aprovisionamiento de recursos, la programación del proceso de prueba, la administración de la máquina de estados, el registro del comportamiento del dispositivo, el registro de los resultados y el suministro de los resultados finales en forma de informe de la prueba.

**Protocolos TLS**

El protocolo de seguridad de la capa de transporte (TLS) se utiliza para cifrar datos confidenciales a través de redes inseguras, como internet. El protocolo TLS es el sucesor del protocolo Secure Sockets Layer (SSL).

Device Advisor es compatible con los siguientes protocolos TLS:
+ TLS 1.3 (recomendado)
+ TLS 1.2

**Protocolos, asignaciones de puertos y autenticación**

El protocolo de comunicación de dispositivos lo utiliza un dispositivo o un cliente para conectarse al agente de mensajes mediante un punto de conexión de dispositivo. En la siguiente tabla se enumeran los protocolos admitidos por los puntos de conexión de Device Advisor, así como los métodos de autenticación y los puertos que se utilizan.


**Protocolos, autenticación y asignaciones de puertos**  

| Protocolo | Operaciones admitidas | Autenticación | Puerto | Nombre del protocolo ALPN | 
| --- | --- | --- | --- | --- | 
| MQTT ha terminado WebSocket | Publicar, suscribirse | Signature Version 4 | 443 | N/A | 
| MQTT | Publicar, suscribirse | Certificado de cliente X.509 | 8883 | `x-amzn-mqtt-ca` | 
| MQTT | Publicar, suscribirse | Certificado de cliente X.509 | 443 | N/A | 

**Topics**
+ [Configuración](device-advisor-setting-up.md)
+ [Introducción a Device Advisor en la consola](da-console-guide.md)
+ [Flujo de trabajo de Device Advisor](device-advisor-workflow.md)
+ [Flujo de trabajo detallado de la consola de Device Advisor](device-advisor-console-tutorial.md)
+ [Flujo de trabajo de la consola de pruebas de larga duración](device-advisor-long-duration-console-tutorial.md)
+ [puntos de conexión de VPC de Device Advisor (AWS PrivateLink)](device-advisor-vpc-endpoint.md)
+ [Casos de prueba de Device Advisor](device-advisor-tests.md)

# Configuración
<a name="device-advisor-setting-up"></a>

Antes de usar Device Advisor por primera vez, realice las siguientes tareas:

## Cree un objeto de &IoT
<a name="da-create-thing-certificate"></a>

En primer lugar, cree un objeto IoT y asocie un certificado. Para ver un tutorial sobre cómo crear objetos, consulte [Crear un objeto](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing).

## Cree un rol de IAM para utilizarlo como su rol de dispositivo
<a name="da-iam-role"></a>

**nota**  
Puede crear rápidamente el rol de dispositivo con la consola de Device Advisor. Para saber cómo configurar su función de dispositivo con la consola de Device Advisor, consulte [Introducción a Device Advisor en la consola](https://docs.aws.amazon.com/iot/latest/developerguide/da-console-guide.html).

1. Ve a la [AWS Identity and Access Management consola](https://console.aws.amazon.com/iam/home?region=us-west-2#/home) e inicia sesión en la que Cuenta de AWS utilizas para realizar las pruebas de Device Advisor.

1. En el panel de navegación izquierdo, elija **Políticas**.

1. Elija **Crear política**.

1. En **Crear política**, haga lo siguiente:

   1. En **Servicio**, seleccione **IoT**.

   1. En **Acciones**, elija una de las siguientes opciones:
      + (Recomendado) Seleccione acciones basadas en la política asociada al objeto o certificado IoT que creó en la sección anterior.
      + Busque las siguientes acciones en el cuadro **Filtrar acción** y selecciónelas:
        + `Connect`
        + `Publish`
        + `Subscribe`
        + `Receive`
        + `RetainPublish`

   1. En **Recursos**, restrinja los recursos de cliente y tema. Restringir estos recursos es una de las prácticas recomendadas en materia de seguridad. Para restringir los recursos, haga lo siguiente:

      1. Seleccione **Especificar ARN del recurso de cliente para la acción Conectar**.

      1. Seleccione **Agregar ARN** y, a continuación, realice una de las siguientes acciones:
**nota**  
El *clientId* es el ID del cliente MQTT que su dispositivo utiliza para interactuar con Device Advisor.
         + Rellene los campos **Región**, **accountID** y **clientID** en el editor ARN visual.
         + Introduce manualmente los nombres de los recursos de Amazon (ARNs) de los temas de IoT con los que quieres ejecutar tus casos de prueba.

      1. Elija **Añadir**.

      1. Elija **Especificar ARN del recurso del tema para la recepción y una acción más**.

      1. Seleccione **Agregar ARN** y, a continuación, realice una de las siguientes acciones:
**nota**  
El *nombre del tema* es el tema MQTT en el que su dispositivo publica los mensajes.
         + Rellene los campos **Región**, **accountID** y **Nombre del tema** en el editor ARN visual.
         + Introduce manualmente los temas ARNs de IoT con los que deseas ejecutar tus casos de prueba.

      1. Elija **Añadir**.

      1. Seleccione **Especificar ARN del recurso topicFilter para la acción Suscribirse**.

      1. Seleccione **Agregar ARN** y, a continuación, realice una de las siguientes acciones:
**nota**  
El *nombre del tema* es el tema MQTT al que su dispositivo se suscribe.
         + Rellene los campos **Región**, **accountID** y **Nombre del tema** en el editor ARN visual.
         + Introduce manualmente los temas ARNs de IoT con los que deseas ejecutar tus casos de prueba.

      1. Elija **Agregar**.

1. Elija **Siguiente: etiquetas**.

1. Elija **Siguiente: Revisar**.

1. En **Revisar política**, introduzca un **nombre** para su política.

1. Elija **Crear política**.

1. En el panel de navegación izquierdo, seleccione **Roles**.

1. Elija **Crear rol**.

1. En **Seleccionar entidad de confianza**, elija **Política de confianza personalizada**.

1. Introduzca la siguiente política de confianza en el cuadro **Política de confianza personalizada**. Para protegerse contra el problema de la sustitución confusa, agregue las claves contextuales de condición global `[aws:SourceArn](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)` y `[aws:SourceAccount](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)` a la política.
**importante**  
Su `aws:SourceArn` debe ajustarse a `format: arn:aws:iotdeviceadvisor:region:account-id:*.`. Asegúrese de que `region` coincide con su región de AWS IoT y `account-id` con el ID de su cuenta de cliente. Para obtener más información, consulte [Prevención de la sustitución confusa entre servicios](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html#cross-service-confused-deputy-prevention-DA).  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowAwsIoTCoreDeviceAdvisor",
               "Effect": "Allow",
               "Principal": {
                   "Service": "iotdeviceadvisor.amazonaws.com"
           },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "123456789012"
               },
                   "ArnLike": {
                       "aws:SourceArn": "arn:aws:iotdeviceadvisor:*:123456789012:suitedefinition/*"
               }
           }
           }
       ]
   }
   ```

1. Elija **Siguiente**.

1. Elija la política que creó en el paso 4.

1. (Opcional) En **Establecer límite de permisos**, seleccione **Utilizar un límite de permisos para controlar los permisos que puede tener el rolo como máximo** y, a continuación, seleccione la política que ha creado.

1. Elija **Siguiente**.

1. Introduzca un **nombre de rol** y una **descripción del rol**.

1. Elija **Crear rol**.

## Cree una política administrada de forma personalizada para que un usuario de IAM utilice Device Advisor
<a name="da-managed-policy"></a>

1. Vaya a la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). Si se le solicita, introduzca sus credenciales de AWS para iniciar sesión.

1. En el panel de navegación izquierdo, elija **Políticas**.

1. Elija **Crear política** y, a continuación, elija la pestaña **JSON**. 

1. Agregue los permisos necesarios para utilizar Device Advisor. El documento de la política se encuentra en el tema [Prácticas recomendadas de seguridad](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html#device-advisor-perms). 

1. Elija **Revisar la política**.

1. Introduzca un **Nombre** y una **Descripción**.

1. Elija **Crear política**.

## Cree un usuario de IAM para utilizar Device Advisor
<a name="da-iam-user"></a>

**nota**  
Le recomendamos que cree un usuario de IAM para utilizarlo cuando ejecute las pruebas de Device Advisor. Ejecutar las pruebas de Device Advisor desde un usuario administrador puede plantear riesgos de seguridad y no es recomendable.

1. Diríjase a la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)Si se le solicita, introduzca sus AWS credenciales para iniciar sesión.

1. En el panel de navegación izquierdo, elija **Usuarios**.

1. Elija **Add user** (Agregar usuario).

1. Introduzca un **nombre de usuario**.

1. Los usuarios necesitan acceso programático si quieren interactuar con personas AWS ajenas a. Consola de administración de AWS La forma de conceder el acceso programático depende del tipo de usuario que acceda. AWS

   Para conceder acceso programático a los usuarios, elija una de las siguientes opciones.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/device-advisor-setting-up.html)

1. Elija **Siguiente: permisos**.

1. Para dar acceso, agregue permisos a los usuarios, grupos o roles:
   + Usuarios y grupos en AWS IAM Identity Center:

     Cree un conjunto de permisos. Siga las instrucciones de [Creación de un conjunto de permisos](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) en la *Guía del usuario de AWS IAM Identity Center *.
   + Usuarios gestionados en IAM a través de un proveedor de identidades:

     Cree un rol para la federación de identidades. Siga las instrucciones descritas en [Creación de un rol para un proveedor de identidad de terceros (federación)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) en la *Guía del usuario de IAM*.
   + Usuarios de IAM:
     + Cree un rol que el usuario pueda aceptar. Siga las instrucciones descritas en [Creación de un rol para un usuario de IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) en la *Guía del usuario de IAM*.
     + (No recomendado) Adjunte una política directamente a un usuario o agregue un usuario a un grupo de usuarios. Siga las instrucciones descritas en [Adición de permisos a un usuario (consola)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) de la *Guía del usuario de IAM*.

1. Introduzca el nombre de la política administrada de forma personalizada que ha creado en el cuadro de búsqueda. A continuación, marque la casilla **Nombre de la política**.

1. Elija **Siguiente: Etiquetas**.

1. Elija **Siguiente: Revisar**.

1. Seleccione la opción **Crear usuario**.

1. Seleccione **Cerrar**.

Device Advisor requiere el acceso a sus AWS recursos (cosas, certificados y puntos de conexión) en su nombre. Su usuario de IAM debe tener los permisos necesarios. Device Advisor también publicará los registros en Amazon CloudWatch si adjuntas la política de permisos necesaria a tu usuario de IAM.

## Configuración del dispositivo
<a name="da-configure-device"></a>

Device Advisor utiliza la extensión TLS de indicación de nombre de servidor (SNI) para aplicar configuraciones de TLS. Los dispositivos deben utilizar esta extensión cuando se conecten y pasen un nombre de servidor que sea idéntico al punto de conexión de prueba de Device Advisor.

Device Advisor permite la conexión TLS cuando una prueba está en el estado `Running`. Deniega la conexión TLS antes y después de cada prueba. Por esta razón, le recomendamos que utilice el mecanismo de reintento de conexión del dispositivo para una experiencia de prueba totalmente automatizada con Device Advisor. Puede ejecutar conjuntos de pruebas que incluyan más de un caso de prueba, como conexión TLS, conexión MQTT y publicación MQTT. Si ejecuta varios casos de prueba, le recomendamos que su dispositivo intente conectarse a nuestro punto de conexión de prueba cada cinco segundos. A continuación, puede automatizar la ejecución de varios casos de prueba en secuencia.

**nota**  
Para preparar el software de su dispositivo para las pruebas, le recomendamos que utilice un SDK que pueda conectarse a AWS IoT Core. A continuación, deberá actualizar el SDK con el punto de conexión de prueba de Device Advisor proporcionado para su Cuenta de AWS.

Device Advisor admite dos tipos de puntos de conexión: puntos de conexión de nivel de cuenta y de nivel de dispositivo. Elija el punto de conexión que mejor se adapte a su caso. Para ejecutar simultáneamente varios conjuntos de pruebas para distintos dispositivos, utilice un punto de conexión de nivel de dispositivo. 

Ejecute el siguiente comando para obtener el punto de conexión de nivel de dispositivo:

Para los clientes de MQTT que utilicen certificados de cliente X.509:

```
aws iotdeviceadvisor get-endpoint --thing-arn your-thing-arn
```

o

```
aws iotdeviceadvisor get-endpoint --certificate-arn your-certificate-arn
```

Para los WebSocket clientes de MQTT que utilizan la versión 4 de Signature:

```
aws iotdeviceadvisor get-endpoint --device-role-arn your-device-role-arn --authentication-method SignatureVersion4
```

Para ejecutar un conjunto de pruebas a la vez, elija un punto de conexión de nivel de cuenta. Ejecute el siguiente comando para obtener el punto de conexión de nivel cuenta:

```
aws iotdeviceadvisor get-endpoint
```

# Introducción a Device Advisor en la consola
<a name="da-console-guide"></a>

Este tutorial le ayudará a empezar a utilizar AWS IoT Core Device Advisor la consola. Device Advisor ofrece características como las pruebas obligatorias y los informes de cualificación firmados. Puede utilizar estas pruebas e informes para calificar y enumerar los dispositivos en el [Catálogo de dispositivos de socios de AWS](https://devices.amazonaws.com/), tal y como se detalla en el [programa de cualificación de AWS IoT Core](https://aws.amazon.com/partners/dqp/).

Para obtener más información sobre el uso de Device Advisor, consulte [Flujo de trabajo de Device Advisor](device-advisor-workflow.md) y [Flujo de trabajo detallado de la consola de Device Advisor](device-advisor-console-tutorial.md).

Para completar este tutorial, siga los pasos descritos en [Configuración](device-advisor-setting-up.md).

**nota**  
Device Advisor es compatible con lo siguiente Regiones de AWS:  
Este de EE. UU. (Norte de Virginia)
Oeste de EE. UU. (Oregón)
Asia-Pacífico (Tokio)
Europa (Irlanda)

**Introducción**

1. En el panel de navegación de la [consola de AWS IoT](https://console.aws.amazon.com//iot), en **Prueba**, seleccione **Device Advisor**. A continuación, elija el botón **Iniciar recorrido** en la consola.  
![\[Device Advisor es una capacidad de prueba totalmente gestionada para que los dispositivos de IoT validen la interacción segura con ellos AWS IoT Core, identifiquen problemas de software y obtengan los resultados de las pruebas.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-gs.png)

1. La página **Introducción a Device Advisor** ofrece una visión general de los pasos necesarios para crear un conjunto de pruebas y ejecutarlas con su dispositivo. También puede encontrar aquí el punto de conexión de prueba de Device Advisor para su cuenta. Debe configurar el firmware o el software del dispositivo utilizado para las pruebas para conectarse a este punto de conexión de prueba.

   Para completar este tutorial, primero debe [crear un objeto y un certificado](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html#da-create-thing-certificate). Después de revisar la información en **Cómo funciona**, elija **Siguiente**.  
![\[Pasos para probar la conectividad de los dispositivos de IoT: seleccionar el protocolo, crear un conjunto de pruebas, configurar los ajustes del dispositivo.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-gs1.png)

1.  En el **Paso 1: Seleccionar un protocolo**, seleccione un protocolo de entre las opciones de la lista. A continuación, elija **Siguiente**.  
![\[Interfaz de Device Advisor que muestra las opciones para seleccionar un protocolo de comunicación (MQTT 3.1.1, MQTT 3.1.1 over WebSocket, MQTT 5 over) WebSocket para probar un dispositivo IoT.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-protocol.png)

1. En el **paso 2**, creará y configurará un conjunto de pruebas personalizado. Un conjunto de pruebas personalizado debe tener al menos un grupo de pruebas, y cada grupo de pruebas debe tener al menos un caso de prueba. Hemos agregado el caso de prueba **MQTT Connect** para que pueda empezar.

   Seleccione **Propiedades del conjunto de pruebas**.   
![\[La pantalla Crear conjunto de pruebas de Device Advisors, donde los usuarios pueden crear y configurar grupos de pruebas y casos para probar los dispositivos de IoT con el protocolo MQTT.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-test-suite-create.png)

   Proporcione las propiedades del conjunto de pruebas al crear su conjunto de pruebas. Puede configurar las siguientes propiedades de nivel de conjunto:
   + **Nombre del conjunto de pruebas**: introduzca un nombre para su conjunto de pruebas.
   + **Tiempo de espera** (opcional): el tiempo de espera (en segundos) para cada caso de prueba en el conjunto de pruebas actual. Si no especifica un valor de tiempo de espera, se utilizará el valor predeterminado.
   + **Etiquetas** (opcional): agregue etiquetas al conjunto de pruebas.

   Cuando haya finalizado, seleccione **Actualizar propiedades**.  
![\[Formulario para actualizar las propiedades de un conjunto de pruebas, incluidos el nombre, el tiempo de espera y la posibilidad de añadir etiquetas. Contiene un botón para Actualizar propiedades.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-test-suite-properties.png)

1. (Opcional) Para actualizar la configuración del grupo de pruebas, seleccione el botón **Editar** situado junto al nombre del grupo de pruebas.
   + **Nombre**: introduzca un nombre personalizado para el grupo del conjunto de pruebas.
   + **Tiempo de espera** (opcional): el tiempo de espera (en segundos) para cada caso de prueba en el conjunto de pruebas actual. Si no especifica un valor de tiempo de espera, se utilizará el valor predeterminado.

   Cuando haya terminado, elija **Hecho** para continuar.  
![\[Aparece un grupo de pruebas denominado Grupo de pruebas 1 con opciones para configurar el tiempo de espera y añadir más grupos de pruebas.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-test-suite-config.png)

1. (Opcional) Para actualizar la configuración de un caso de prueba, seleccione el botón **Editar** situado junto al nombre del caso de prueba.
   + **Nombre**: introduzca un nombre personalizado para el grupo del conjunto de pruebas.
   + **Tiempo de espera** (opcional): el tiempo de espera (en segundos) para el caso de prueba seleccionado. Si no especifica un valor de tiempo de espera, se utilizará el valor predeterminado.

   Cuando haya terminado, elija **Hecho** para continuar.  
![\[La interfaz Crear conjunto de pruebas que muestra opciones para configurar un conjunto de pruebas, grupos de pruebas y casos de prueba individuales para probar dispositivos de IoT.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-test-case-config.png)

1. (Opcional) Para agregar más grupos de pruebas al conjunto de pruebas, seleccione **Agregar grupo de pruebas** y, a continuación, siga las instrucciones del paso 5.

1. (Opcional) Para agregar más casos de prueba, arrastre los casos de prueba de la sección **Casos de prueba** a cualquiera de sus grupos de pruebas.  
![\[La interfaz Crear conjunto de pruebas donde los usuarios pueden configurar grupos de pruebas y casos de prueba para probar el protocolo MQTT de los dispositivos de IoT.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-drag.png)

1. Puede cambiar el orden de sus grupos y casos de prueba. Para realizar cambios, arrastre los casos de prueba de la lista hacia arriba o hacia abajo. Device Advisor ejecuta las pruebas en el orden en que usted las enumeró.

   Una vez configurado el conjunto de pruebas, seleccione **Siguiente**.

1. En el **paso 3**, seleccione un elemento o certificado para probarlo AWS IoT con Device Advisor. Si no dispone de objetos o certificados, consulte [Configuración](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html).   
![\[Las opciones de configuración incluyen la selección de un protocolo, la creación de un conjunto de pruebas, la configuración de los ajustes del dispositivo y la revisión de las ejecuciones y los resultados de las pruebas.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-device-settings.png)

1. Puede configurar una función de dispositivo que Device Advisor utilice para realizar acciones de AWS IoT MQTT en nombre del dispositivo de prueba. Solo para el caso de prueba **MQTT Connect**, la acción **Conectar** se selecciona automáticamente. Esto se debe a que el rol de dispositivo requiere este permiso para ejecutar el conjunto de pruebas. Para otros casos de prueba, se seleccionan las acciones correspondientes. 

   Proporcione los valores de los recursos para cada una de las acciones seleccionadas. Por ejemplo, para la acción **Conectar**, proporcione el ID de cliente que utiliza su dispositivo para conectarse al punto de conexión de Device Advisor. Puede proporcionar varios valores separados por comas y anteponer valores con un carácter comodín (\$1). Por ejemplo, para dar permiso para publicar sobre cualquier tema que empiece por `MyTopic`, introduzca **MyTopic\$1** como valor del recurso.  
![\[La interfaz de Device Advisor, donde puede seleccionar una función de dispositivo y definir los permisos para conectarse, publicar, suscribirse y gestionar los temas y el cliente de MQTT. IDs\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-device-role.png)

   Para utilizar un rol de dispositivo creado previamente en [Configuración](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html), elija **Seleccionar un rol existente**. A continuación, elija el rol de su dispositivo en **Seleccionar rol**.  
![\[Una interfaz de formulario web para seleccionar una función de dispositivo, con opciones para crear una nueva función o seleccionar una función existente denominada "»DeviceAdvisorServiceRole.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-select-device-role.png)

   Configure el rol de su dispositivo con una de las dos opciones proporcionadas y, a continuación, seleccione **Siguiente**.

1. En la sección **Punto de enlace de prueba**, seleccione el punto de conexión que mejor se adapte a su caso de uso. Para ejecutar varios conjuntos de pruebas simultáneamente con el mismo Cuenta de AWS, seleccione **Dispositivo de punto final.** Para ejecutar un conjunto de pruebas a la vez, seleccione **Punto de enlace de nivel de cuenta**.  
![\[Opciones para seleccionar el punto de conexión de nivel de cuenta o de dispositivo para realizar las pruebas, con una URL de punto de conexión y el botón Siguiente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-endpoint.png)

1. El **paso 4** muestra un resumen del dispositivo de prueba seleccionado, el punto de conexión de prueba, el conjunto de pruebas y el rol del dispositivo de prueba configurado. Para realizar cambios en una sección, elija el botón **Editar** de la sección que desee editar. Una vez que haya confirmado la configuración de las pruebas, seleccione **Ejecutar** para crear el conjunto de pruebas y ejecutarlas.
**nota**  
Para obtener los mejores resultados, puede conectar el dispositivo de prueba seleccionado al punto de conexión de prueba de Device Advisor antes de iniciar la ejecución del conjunto de pruebas. Le recomendamos que disponga de un mecanismo para que su dispositivo intente conectarse a nuestro punto de conexión de prueba cada cinco segundos durante un máximo de uno o dos minutos.  
![\[Una consola de configuración del dispositivo que muestra los detalles del rol del dispositivo, el punto de conexión de prueba y las opciones para cancelar, volver atrás o ejecutar.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-device-review.png)  
![\[Una consola de configuración del dispositivo que muestra los detalles del rol del dispositivo, el punto de conexión de prueba y las opciones para cancelar, volver atrás o ejecutar.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-device-review-contd.png)

1. En el panel de navegación situado debajo de **Prueba**, elija **Device Advisor** y, a continuación, seleccione **Ejecuciones de pruebas y resultados**. Seleccione la ejecución de un conjunto de pruebas para ver los detalles de su ejecución y los registros.  
![\[La interfaz del conjunto de pruebas que indica que se está realizando una prueba de MQTT 3.1.1 para el dispositivo "». MyThing\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-console-runs-results.png)

1. Para acceder a los CloudWatch registros de Amazon de la suite, ejecuta:
   + Elija el **registro del conjunto de pruebas** para ver los CloudWatch registros de la ejecución del conjunto de pruebas.
   + Elija **Registro de casos de prueba** para cualquier caso de prueba para ver los CloudWatch registros específicos de cada caso de prueba.

1. Basándose en los resultados de las pruebas, [solucione los problemas](https://docs.aws.amazon.com/iot/latest/developerguide/iot_troubleshooting.html#device-advisor-troubleshooting) de su dispositivo hasta que todas las pruebas queden superadas.

# Flujo de trabajo de Device Advisor
<a name="device-advisor-workflow"></a>

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
<a name="device-advisor-workflow-prereqs"></a>

Antes de comenzar este tutorial, complete los pasos descritos en [Configuración](device-advisor-setting-up.md).

## Crear una definición de conjunto de pruebas
<a name="device-advisor-workflow-create-suite-definition"></a>

En primer lugar, [instala un AWS SDK](https://docs.aws.amazon.com/iot/latest/developerguide/iot-connect-service.html#iot-service-sdks).

### Sintaxis de `rootGroup`
<a name="rootGroup"></a>

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](device-advisor-tests.md). 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
<a name="device-advisor-workflow-describe-suite-run"></a>

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 usarlos IDs 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
<a name="device-advisor-workflow-get-test-endpoint"></a>

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
<a name="device-advisor-workflow-start-suite-run"></a>

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
<a name="device-advisor-workflow-describe-suite"></a>

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
<a name="device-advisor-workflow-stop-suite-run"></a>

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
<a name="device-advisor-workflow-qualification-report"></a>

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

# Flujo de trabajo detallado de la consola de Device Advisor
<a name="device-advisor-console-tutorial"></a>

En este tutorial, 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.

**Topics**
+ [Requisitos previos](#da-detailed-prereqs)
+ [Crear una definición de conjunto de pruebas](#device-advisor-console-create-suite)
+ [Iniciar la ejecución de un conjunto de pruebas](#device-advisor-console-run-test-suite)
+ [Detener la ejecución de un conjunto de pruebas (opcional)](#device-advisor-stop-test-run)
+ [Ver los detalles y los registros de las ejecuciones del conjunto de pruebas](#device-advisor-console-view-logs)
+ [Descarga un informe AWS IoT de calificación](#device-advisor-console-qualification-report)

## Requisitos previos
<a name="da-detailed-prereqs"></a>

Para completar este tutorial, debe [crear un objeto y un certificado](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html#da-create-thing-certificate).

## Crear una definición de conjunto de pruebas
<a name="device-advisor-console-create-suite"></a>

Cree un conjunto de pruebas para poder ejecutarlo en sus dispositivos y realizar la verificación.

1. En la [consola de AWS IoT](https://console.aws.amazon.com//iot), en el panel de navegación, expanda **Prueba**, **Device Advisor** y elija **Conjuntos de pruebas**.  
![\[La interfaz de Device Advisor ofrece opciones para crear conjuntos de pruebas para los dispositivos aptos y ejecutar pruebas de larga duración y conjuntos de pruebas personalizados.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-testsuite.png)

   Seleccione **Crear conjunto de pruebas**.

1. Seleccione `Use the AWS Qualification test suite` o `Create a new test suite`.

   Para el protocolo, elija **MQTT 3.1.1** o **MQTT 5**.  
![\[«Crear conjunto de pruebas» con opciones para elegir el tipo de conjunto de pruebas (AWS IoT Core cualificación, larga duración o personalizado) y el protocolo (MQTT 3.1.1 o MQTT 5).\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-create-test-suite.png)

   Seleccione si `Use the AWS Qualification test suite` desea reunir los requisitos e incluya su dispositivo en el catálogo de dispositivos AWS asociados. Al elegir esta opción, se preseleccionan los casos de prueba necesarios para que su dispositivo pueda participar en el programa de cualificación de AWS IoT Core . Los grupos de pruebas y los casos de prueba no pueden agregarse ni eliminarse. Aún tendrá que configurar las propiedades del conjunto de pruebas.

   Seleccione `Create a new test suite` para crear y configurar un conjunto de pruebas personalizado. Recomendamos empezar con esta opción para las pruebas iniciales y la solución de problemas. Un conjunto de pruebas personalizado debe tener al menos un grupo de pruebas, y cada grupo de pruebas debe tener al menos un caso de prueba. Para el propósito de este tutorial, seleccionaremos esta opción y elegiremos **Siguiente**.  
![\[Página Configurar conjuntos de pruebas que muestra los pasos para crear un conjunto de pruebas con grupos de pruebas y casos para probar dispositivos de IoT.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-configure-test-suite.png)

1. Seleccione **Propiedades del conjunto de pruebas**. Debe crear las propiedades del conjunto de pruebas cuando cree su conjunto de pruebas.  
![\[La interfaz Configurar conjuntos de pruebas que muestra opciones para crear grupos de pruebas y añadir casos de prueba para probar la funcionalidad de los dispositivos de IoT.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-test-suite-properties.png)

   En **Propiedades del conjunto de pruebas**, complete lo siguiente:
   + **Nombre del conjunto de pruebas**: puede crear el conjunto con un nombre personalizado.
   + **Tiempo de espera** (opcional): el tiempo de espera (en segundos) para cada caso de prueba en el conjunto de pruebas actual. Si no especifica un valor de tiempo de espera, se utilizará el valor predeterminado.
   + **Etiquetas** (opcional): agregue etiquetas al conjunto de pruebas.  
![\[Ventana titulada Propiedades del conjunto de pruebas que muestra los campos para especificar el nombre del conjunto de pruebas, el tiempo de espera y las etiquetas personalizadas de un conjunto de demostraciones de Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-test-suite-properties-1.png)

   Cuando haya finalizado, seleccione **Actualizar propiedades**.

1. Para modificar la configuración a nivel de grupo, en `Test group 1`, seleccione **Editar**. A continuación, introduzca un **nombre** para asignar al grupo un nombre personalizado. 

   Si lo desea, también puede introducir un valor de **tiempo de espera** en segundos en el grupo de prueba seleccionado. Si no especifica un valor de tiempo de espera, se utilizará el valor predeterminado.  
![\[La interfaz Configurar conjuntos de pruebas para crear grupos de pruebas y casos para validar la funcionalidad de los dispositivos de IoT.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-edit-test-group.png)

   Seleccione **Listo**.

1. Arrastre uno de los casos de prueba disponibles desde **Casos de prueba** hasta el grupo de pruebas.  
![\[La interfaz de configuración para crear un conjunto de pruebas en Device Advisor, con opciones para agregar grupos de pruebas y casos de prueba para probar dispositivos de IoT.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-configure-test-suite-step5.png)

1. Para modificar la configuración de nivel de caso de prueba del caso de prueba que ha agregado a su grupo de pruebas, elija **Editar**. A continuación, introduzca un **nombre** para asignar al grupo un nombre personalizado. 

   Si lo desea, también puede introducir un valor de **tiempo de espera** en segundos en el grupo de prueba seleccionado. Si no especifica un valor de tiempo de espera, se utilizará el valor predeterminado.  
![\[Interfaz Configuración del conjunto de pruebas con opciones para configurar grupos de pruebas, casos de prueba, ajustes de tiempo de espera y puntos de partida para la ejecución del conjunto de pruebas.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-edit-test-case.png)

   Seleccione **Listo**.
**nota**  
Para agregar más grupos de pruebas al conjunto de pruebas, elija **Agregar grupo de pruebas**. Siga los pasos anteriores para crear y configurar más grupos de pruebas o para agregar más casos de prueba a uno o más grupos de pruebas. Los grupos de pruebas y los casos de prueba se pueden reordenar seleccionando y arrastrando un caso de prueba a la posición deseada. Device Advisor ejecuta las pruebas en el orden en que usted define los grupos de pruebas y los casos de prueba.

1. Elija **Siguiente**.

1. En el **paso 3**, configure una función de dispositivo que Device Advisor utilizará para realizar acciones de AWS IoT MQTT en nombre del dispositivo de prueba.

   Si seleccionó el caso de prueba de **MQTT Connect** solo en el **paso 2**, la acción **Conectar** se marcará automáticamente, ya que el rol del dispositivo requiere ese permiso para ejecutar este conjunto de pruebas. Si ha seleccionado otros casos de prueba, se comprobarán las acciones necesarias correspondientes. Asegúrese de proporcionar los valores de los recursos para cada una de las acciones. Por ejemplo, para la acción **Conectar**, proporcione el ID de cliente con el que su dispositivo se conectará al punto de conexión de Device Advisor. Puede proporcionar varios valores mediante comas para separarlos, y también puede proporcionar valores de prefijo con un carácter comodín (\$1). Por ejemplo, para dar permiso para publicar sobre cualquier tema que empiece por `MyTopic`, puede introducir «`MyTopic*`» como valor del recurso.  
![\[El paso Seleccionar un rol de dispositivo de Device Advisor para crear un conjunto de pruebas, con opciones para crear un nuevo rol o seleccionar un rol existente, y campos para especificar el nombre del rol, los permisos y los detalles de los recursos.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-connect-role.png)

   Si ya ha creado un rol de dispositivo anteriormente y desea usarlo, seleccione **Seleccionar un rol existente** y elija su rol de dispositivo en **Seleccionar rol**.  
![\[Página para seleccionar un rol de dispositivo para las pruebas de Device Advisor con las opciones para crear un rol nuevo o seleccionar uno existente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-existing-role.png)

   Configure el rol de su dispositivo con una de las dos opciones proporcionadas y, a continuación, seleccione **Siguiente**.

1. En el **paso 4**, asegúrese de que la configuración proporcionada en cada uno de los pasos sea correcta. Para editar la configuración proporcionada para un paso en particular, elija **Editar** para el paso correspondiente.

   Después de verificar la configuración, elija **Crear conjunto de pruebas**.

   El conjunto de pruebas debe crearse correctamente y se le redirigirá a la página **Conjuntos de pruebas**, donde podrá ver todos los conjuntos de pruebas que se han creado.

   Si no se pudo crear el conjunto de pruebas, asegúrese de que el conjunto de pruebas, los grupos de pruebas, los casos de prueba y el rol del dispositivo se hayan configurado de acuerdo con las instrucciones anteriores.

## Iniciar la ejecución de un conjunto de pruebas
<a name="device-advisor-console-run-test-suite"></a>

1. En la [consola de AWS IoT](https://console.aws.amazon.com//iot), en el panel de navegación, expanda **Prueba**, **Device Advisor** y elija **Conjuntos de pruebas**.

1. Elija el conjunto de pruebas del que desee ver los detalles del conjunto de pruebas.  
![\[La consola que muestra un único conjunto de pruebas denominado Paquete de demostración de Device Advisor se creó el 11 de mayo de 2021.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-test-suites.png)

   La página de detalles del conjunto de pruebas muestra toda la información relacionada con el conjunto de pruebas.

1. Seleccione **Acciones** y, a continuación, **Ejecutar conjunto de pruebas**.  
![\[La página del paquete de demostración con el botón Ejecutar conjunto de pruebas y un registro de actividad vacío que muestra que no se ha realizado ningún conjunto de pruebas anterior.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-run-test-suites.png)

1. En **Ejecutar la configuración**, tendrá que seleccionar un elemento o AWS IoT certificado para probarlo con Device Advisor. Si no tiene ningún objeto o certificado existente, [cree primero AWS IoT Core los recursos](device-advisor-setting-up.md). 

   En la sección **Punto de enlace de prueba**, seleccione el punto de conexión que mejor se adapte a su caso. Si planea ejecutar varios conjuntos de pruebas simultáneamente con la misma AWS cuenta en el futuro, seleccione Punto final a **nivel de dispositivo**. En caso contrario, si pretende ejecutar solo un conjunto de pruebas a la vez, seleccione **Punto de enlace de nivel de cuenta**.

   Configure su dispositivo de prueba con el punto de conexión de prueba de Device Advisor seleccionado.

   Tras seleccionar un objeto o un certificado y elegir un punto de conexión de Device Advisor, elija **Ejecutar prueba**.  
![\[La configuración para ejecutar un conjunto de pruebas AWS IoT Core, que te permite seleccionar los dispositivos de prueba (cosas o certificados), elegir un punto final de prueba (a nivel de cuenta o de dispositivo) y, opcionalmente, añadir etiquetas.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-choose-thing-certificate.png)

1. Seleccione **Ir a los resultados** en el banner superior para ver los detalles de la ejecución de la prueba.  
![\[Detalles de un conjunto de pruebas personalizado denominado Conjunto de demostraciones de Device Advisor en curso con el estado Pendiente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-test-run-results.png)

## Detener la ejecución de un conjunto de pruebas (opcional)
<a name="device-advisor-stop-test-run"></a>

1. En la [consola de AWS IoT](https://console.aws.amazon.com//iot), en el panel de navegación, expanda **Prueba**, **Device Advisor** y elija **Ejecuciones de pruebas y resultados**.

1. Elija el conjunto de pruebas en curso que quiera detener.  
![\[Resultados de las pruebas en la consola de Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-test-suite-to-stop.PNG)

1. Seleccione **Acciones** y, a continuación, **Detener conjunto de pruebas**.  
![\[Resultados de las pruebas en la consola de Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-stop-test-suite.PNG)

1. El proceso de limpieza tardará varios minutos en completarse. Mientras se ejecuta el proceso de limpieza, el estado de ejecución de la prueba será `STOPPING`. Espere a que se complete el proceso de limpieza y a que el estado del conjunto de pruebas cambie al mismo estado `STOPPED` antes de iniciar la ejecución de un nuevo conjunto.  
![\[Resultados de las pruebas detenidos en la consola de Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-stopped-test-suite.PNG)

## Ver los detalles y los registros de las ejecuciones del conjunto de pruebas
<a name="device-advisor-console-view-logs"></a>

1. En la [consola de AWS IoT](https://console.aws.amazon.com//iot), en el panel de navegación, expanda **Prueba**, **Device Advisor** y elija **Ejecuciones de pruebas y resultados**.

   Se abre esta página:
   + Número de objetos IoT
   + Número de certificados de IoT
   + Número de conjuntos de pruebas actualmente en ejecución
   + Todas las ejecuciones del conjunto de pruebas que se han creado

1. Elija el conjunto de pruebas del que desee ver los detalles de la ejecución y los registros.  
![\[Sección Resultados y ejecuciones de pruebas que muestra los detalles de una serie de pruebas denominada Conjunto de demostraciones de Device Advisor que se encuentra actualmente en curso.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-test-suite-run.png)

   La página de resumen de la ejecución muestra el estado de la ejecución actual del conjunto de pruebas. Esta página se actualiza automáticamente cada 10 segundos. Le recomendamos que disponga de un mecanismo para que su dispositivo intente conectarse a nuestro punto de conexión de prueba cada cinco segundos durante uno o dos minutos. A continuación, puede ejecutar varios casos de prueba en secuencia de forma automatizada.  
![\[Registro de casos de prueba que muestra una prueba de MQTT Connect correcta sin que aparezca ningún mensaje del sistema.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-run-summary.png)

1. **Para acceder a los CloudWatch registros de la ejecución del conjunto de pruebas, elija el registro del conjunto de pruebas.**

   Para acceder a CloudWatch los registros de cualquier caso de prueba, selecciona **Registro de casos de prueba**.

1. Basándose en los resultados de las pruebas, [solucione los problemas](https://docs.aws.amazon.com/iot/latest/developerguide/iot_troubleshooting.html#device-advisor-troubleshooting) de su dispositivo hasta que todas las pruebas queden superadas.

## Descarga un informe AWS IoT de calificación
<a name="device-advisor-console-qualification-report"></a>

Si ha elegido la opción **Utilizar el conjunto de pruebas de AWS IoT cualificación** al crear un conjunto de pruebas y ha podido ejecutar un conjunto de pruebas de cualificación, puede descargar un informe de cualificación seleccionando **Descargar el informe de cualificación** en la página de resumen de la ejecución de las pruebas.

![\[Resultados de las pruebas del programa de cualificación que muestran las pruebas superadas de MQTT, TLS y otros componentes.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/da-qualification-report.png)


# Flujo de trabajo de la consola de pruebas de larga duración
<a name="device-advisor-long-duration-console-tutorial"></a>

Este tutorial le ayuda a empezar con las pruebas de larga duración en Device Advisor mediante la consola. Para completar el tutorial, siga los pasos que se indican en [Configuración](device-advisor-setting-up.md).

1.  En el panel de navegación de la [consola de AWS IoT](https://console.aws.amazon.com/iot), expanda **Prueba**, luego **Device Advisor** y, por último, **Conjuntos de pruebas**. En la página, seleccione **Crear conjunto de pruebas de larga duración**.   
![\[La sección Crear conjunto de pruebas de larga duración de la consola de Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/create-ld-ts.png)

1.  En la página **Crear conjunto de pruebas**, seleccione **Conjunto de pruebas de larga duración** y elija **Siguiente**. 

   Para el protocolo, elija **MQTT 3.1.1** o **MQTT 5**.  
![\[El paso Crear conjunto de pruebas de la consola de Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/choose-ld-ts.png)

1. Haga lo siguiente en la página **Configurar conjunto de pruebas**:

   1. Actualice el campo **Nombre del conjunto de pruebas**.

   1. Actualice el campo **Nombre del grupo de pruebas**.

   1. Elija las **operaciones del dispositivo** que el dispositivo puede realizar. Esto seleccionará las pruebas que se van a ejecutar.

   1. Seleccione la opción **Configuración**.  
![\[El paso Crear conjunto de pruebas de la consola de Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/configure-ld-ts.png)

1. (Opcional) Introduzca el tiempo máximo que Device Advisor debe esperar hasta que se completen las pruebas básicas. Seleccione **Guardar**.  
![\[El cuadro Tiempo de espera: opcional para las Pruebas básicas en la consola de Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/timeout-ld-ts.png)

1.  Realice lo siguiente en las secciones **Pruebas avanzadas** y **Configuración adicional**. 

   1. Marque o desmarque las **pruebas avanzadas** que quiera ejecutar como parte de esta prueba.

   1. **Edite** las configuraciones de las pruebas cuando proceda.

   1. Configure el **tiempo de ejecución adicional** en la sección **Configuración adicional**.

   1. Elija **Siguiente** para ir al siguiente paso.  
![\[La interfaz Device Advisor que le permite configurar y ejecutar pruebas en dispositivos de IoT.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/additional-ld-ts.png)

1.  En este paso, **cree un nuevo rol** o **seleccione un rol existente**. Para obtener más información, consulte [Cree un rol de IAM para utilizarlo como su rol de dispositivo](device-advisor-setting-up.md#da-iam-role).   
![\[El paso de rol de dispositivo en el que se puede crear un rol nuevo o seleccionar uno existente para probar el dispositivo. El rol otorga permisos para que Device Advisor realice acciones de MQTT como Connect, Publish y Subscribe en nombre del dispositivo de prueba.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/devicerole-ld-ts.png)

1.  Revise todas las configuraciones creadas hasta este paso y seleccione **Crear conjunto de pruebas**.   
![\[Página Revisar donde puede revisar todos los detalles de la configuración de Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/finalconfigure1-ld-ts.png)  
![\[Página de configuración donde puede ver todos los detalles de Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/finalconfigure2-ld-ts.png)

1.  El conjunto de pruebas creado se encuentra en la sección **Conjuntos de pruebas**. Seleccione el conjunto para ver detalles.   
![\[Se ha creado correctamente un nuevo conjunto de pruebas denominado Demostración de larga duración en Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/finalts-ld-ts.png)

1.  Para ejecutar el conjunto de pruebas creado, seleccione **Acciones** y, a continuación, **Ejecutar conjunto de pruebas**.   
![\[El menú desplegable de acciones del nuevo conjunto de pruebas se denomina Demostración de larga duración en la interfaz de Device Advisor.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/runts-ld-ts.png)

1.  Elija las opciones de configuración en la página **Ejecutar configuración**. 

   1. Seleccione los **objetos** o el **certificado** en los que desee ejecutar la prueba.

   1. Seleccione el **punto de conexión de nivel de cuenta** o el **punto de conexión de nivel de dispositivo**.

   1. Seleccione **Ejecutar prueba** para ejecutar la prueba.  
![\[La página Configuración de ejecución de la interfaz de Device Advisor. La página muestra Seleccionar dispositivos de prueba, Objetos, Punto de conexión de prueba y Etiquetas.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/runconfiguration-ld-ts.png)

1.  Para ver los resultados de la ejecución del conjunto de pruebas, seleccione **Ejecuciones de pruebas y resultados** en el panel de navegación izquierdo. Elija el conjunto de pruebas que se ejecutó para ver los detalles de los resultados.   
![\[Caso de prueba Demostración de larga duración en la página Ejecuciones de pruebas y resultados.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/results-ld-ts.png)

1.  El paso anterior abre la página de resumen de la prueba. En esta página se muestran todos los detalles de la ejecución de la prueba. Cuando la consola solicite iniciar la conexión del dispositivo, conéctelo al punto de conexión proporcionado. El progreso de las pruebas se puede ver en esta página.   
![\[La página de resumen de la prueba Demostración de larga duración que ha creado.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/summary-ld-ts.png)

1.  La prueba de larga duración proporciona un **resumen adicional del registro de pruebas** en el panel lateral, que muestra todos los eventos importantes que se producen entre el dispositivo y el agente casi en tiempo real. Para ver registros más detallados, elija **Registro de casos de prueba**.   
![\[La sección Resumen de registro de prueba de la página de la prueba Demostración de larga duración.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/log-ld-ts.png)

# puntos de conexión de VPC de Device Advisor (AWS PrivateLink)
<a name="device-advisor-vpc-endpoint"></a>

Puede establecer una conexión privada entre la VPC y el punto final de AWS IoT Core Device Advisor prueba (plano de datos) mediante la creación de un punto final de la *VPC* de interfaz. Puede usar este punto final para validar los AWS IoT dispositivos y lograr una conectividad  fiable y segura AWS IoT Core antes de implementarlos en la producción. Las pruebas prediseñadas de Device Advisor le ayudarán a validar el software de su dispositivo según las prácticas recomendadas de uso de [TLS](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html), [MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html), [Device Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) y [AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html). 

[AWS PrivateLink](https://aws.amazon.com/privatelink)potencia los puntos finales de la interfaz que se utilizan con sus dispositivos de IoT. Este servicio le ayuda a acceder al punto de conexión de prueba de AWS IoT Core Device Advisor de forma privada sin una puerta de enlace de internet, un dispositivo NAT, una conexión VPN o una conexión Direct Connect . Las instancias de su VPC que envían paquetes TCP y MQTT no necesitan direcciones IP públicas para comunicarse con AWS IoT Core Device Advisor los puntos finales de prueba. El tráfico entre tu VPC y AWS IoT Core Device Advisor  no sale. Nube de AWS Cualquier comunicación TLS y MQTT entre los dispositivos IoT y los casos de prueba de Device Advisor se mantiene dentro de los recursos que tiene a su disposición en su Cuenta de AWS. 

Cada punto de conexión de la interfaz está representado por una o más [interfaces de redes elásticas](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) en las subredes.

Para obtener más información sobre el uso de los puntos de conexión de VPC de interfaz, consulte [puntos de conexión de VPC de interfaz (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html) en la *Guía del usuario de Amazon VPC*. 

## Consideraciones sobre los puntos AWS IoT Core Device Advisor finales de VPC
<a name="vpc-considerations"></a>

Revise las [propiedades y limitaciones de los puntos de conexión de interfaz](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#vpce-interface-limitations) en la *Guía del usuario de Amazon VPC* antes de configurar los puntos de conexión de VPC de interfaz. Tenga en cuenta lo siguiente antes de continuar: 
+ AWS IoT Core Device Advisor actualmente admite realizar llamadas al punto final de prueba de Device Advisor (plano de datos) desde su VPC. Un agente de mensajes utiliza las comunicaciones del plano de datos para enviar y recibir datos. Lo hace con la ayuda de paquetes TLS y MQTT. Puntos de conexión de VPC para AWS IoT Core Device Advisor conectar su AWS IoT dispositivo a los puntos de conexión de prueba de Device Advisor. Este punto de conexión de VPC no utiliza [las acciones de la API del plano de control](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotdeviceadvisor/index.html). Para crear o ejecutar un conjunto de pruebas u otro plano de control APIs, utilice la consola, un AWS SDK o una interfaz de línea de AWS comandos a través de la Internet pública. 
+ Los siguientes puntos de conexión de VPC son Regiones de AWS compatibles con: AWS IoT Core Device Advisor
  + Este de EE. UU. (Norte de Virginia)
  + Oeste de EE. UU. (Oregón)
  + Asia-Pacífico (Tokio)
  + Europa (Irlanda)
+  Device Advisor admite MQTT con certificados de cliente X.509 y certificados de servidor RSA. 
+ En este momento, no se admiten [políticas de puntos de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html). 
+ Consulte los [requisitos previos](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#prerequisites-interface-endpoints) de los puntos de conexión de VPC para obtener instrucciones sobre cómo [crear recursos](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) que conecten los puntos de conexión de VPC. Debe crear una VPC y subredes privadas para usar los puntos de enlace de la AWS IoT Core Device Advisor VPC. 
+ Hay cuotas en sus recursos. AWS PrivateLink Para obtener más información, consulte [Cuotas de AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html). 
+ Los puntos de conexión de VPC solo admiten tráfico. IPv4 

## Cree un punto final de VPC de interfaz para AWS IoT Core Device Advisor
<a name="vpc-interface"></a>

Para empezar con los puntos de conexión de VPC, [cree un punto de conexión de VPC de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html). A continuación, seleccione AWS IoT Core Device Advisor como. Servicio de AWS Si está utilizando el AWS CLI, llame [describe-vpc-endpoint-services](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoint-services.html)para confirmar que AWS IoT Core Device Advisor está presente en una zona de disponibilidad de su Región de AWS. Confirme que el grupo de seguridad asociado al punto de conexión permita la comunicación mediante el protocolo [TCP](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html) para el tráfico MQTT y TLS. Por ejemplo, en la región Este de EE. UU. (Norte de Virginia), utilice el siguiente comando: 

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.deviceadvisor.iot
```

Puede crear un punto final de VPC para AWS IoT Core usar el siguiente nombre de servicio: 
+ com.amazonaws.*region*.deviceadvisor.iot

De forma predeterminada, el DNS privado está activado para el punto de conexión. Esto garantiza que el uso del punto de conexión de prueba predeterminado permanezca dentro de sus subredes privadas. Para obtener tu punto de conexión a nivel de cuenta o dispositivo, usa la consola AWS CLI o un AWS SDK. Por ejemplo, si ejecuta [get-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotdeviceadvisor/get-endpoint.html) en una subred pública o en una conexión pública a internet, puede obtener su punto de conexión y usarlo para conectarse a Device Advisor. Para obtener más información, consulte [Acceso a un servicio a través de un punto de conexión de interfaz](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#access-service-though-endpoint) en la *Guía del usuario de Amazon VPC*. 

Para conectar los clientes MQTT a las interfaces de punto final de la VPC, AWS PrivateLink el servicio crea registros DNS en una zona alojada privada conectada a la VPC. Estos registros de DNS dirigen las solicitudes del dispositivo AWS IoT al punto de conexión de VPC. 

## Control del acceso a AWS IoT Core Device Advisor más de puntos finales de VPC
<a name="vpc-controlling-access"></a>

[Puede restringir el acceso de los dispositivos AWS IoT Core Device Advisor y permitir el acceso únicamente a través de los puntos finales de la VPC mediante claves de contexto de condición de la VPC.](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) AWS IoT Core admite las siguientes claves de contexto relacionadas con la VPC: 
+  [SourceVpc](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpc) 
+  [SourceVpce](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpce) 
+  [VPCSourcelp](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-vpcsourceip) 

**nota**  
 AWS IoT Core Device Advisor no admite las [políticas de puntos finales de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-policies) en este momento. 

La siguiente política otorga permiso para conectarse AWS IoT Core Device Advisor mediante un ID de cliente que coincida con el nombre de la cosa. También publica en cualquier tema con el prefijo del nombre del objeto. La política está condicionada a que el dispositivo se conecte a un punto de conexión de VPC con un ID de punto de conexión de VPC concreto. Esta política deniega los intentos de conexión a su punto de conexión de prueba de AWS IoT Core Device Advisor público. 

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
"Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
            ],
            "Condition": {
"StringEquals": {
"aws:SourceVpce": "vpce-1a2b3c4d"
            }
        }
            
        },
        {
"Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}/*"
            ]
        }
    ]
}
```

# Casos de prueba de Device Advisor
<a name="device-advisor-tests"></a>

Device Advisor ofrece pruebas prediseñadas en seis categorías.
+ [TLS](device-advisor-tests-tls.md)
+ [MQTT](device-advisor-tests-mqtt.md)
+ [Sombra](device-advisor-tests-shadow.md)
+ [Ejecución de trabajo](device-advisor-tests-job-execution.md)
+ [Permisos y políticas](device-advisor-tests-permissions-policies.md)
+ [Pruebas de larga duración](device-advisor-tests-long-duration.md)

## Casos de prueba de Device Advisor para poder optar al programa de calificación de AWS dispositivos.
<a name="qualifiying-test-cases"></a>

Su dispositivo debe superar las siguientes pruebas para cumplir los requisitos del [programa de cualificación de dispositivos AWS](https://aws.amazon.com/partners/programs/dqp/).

**nota**  
Esta es una lista revisada de las pruebas de cualificación.
+ [Conexión TLS](device-advisor-tests-tls.md#TLS_Connect) («Conexión TLS»)​
+ [Certificado de servidor TLS con nombre de asunto incorrecto](device-advisor-tests-tls.md#TLS_Incorrect_Subject_Name) («Nombre común del asunto (CN)/nombre alternativo del asunto (SAN) incorrecto»)
+ [Certificado de servidor TLS no seguro](device-advisor-tests-tls.md#TLS_Unsecure_Server_Cert) («No firmado por una entidad de certificación reconocida»)
+ [Soporte de dispositivos TLS para AWS IoT conjuntos de cifrado](device-advisor-tests-tls.md#TLS_DeviceSupport_For_IOT) («Soporte de dispositivos TLS para conjuntos de cifrado AWS IoT recomendados»)
+ [Fragmentos de tamaño máximo de recepción TLS](device-advisor-tests-tls.md#TLS_MaximumSize) («Fragmentos de tamaño máximo de recepción TLS»)
+ [Certificado de servidor TLS caducado](device-advisor-tests-tls.md#TLS_Expired_Server_Cert) («Certificado de servidor caducado»)
+ [Certificado de servidor TLS de gran tamaño](device-advisor-tests-tls.md#TLS_LargeServerCert) («Certificado de servidor TLS de gran tamaño»)
+ [MQTT Connect](device-advisor-tests-mqtt.md#MQTT_Connect) («El dispositivo envía CONNECT a AWS IoT Core (Happy case)»)
+ [Suscripción MQTT](device-advisor-tests-mqtt.md#MQTT_Subscribe) («Puede suscribirse (caso deseable)»)
+ [Publicación MQTT](device-advisor-tests-mqtt.md#MQTT_Publish) («QoS0 (caso deseable)»)
+ [Reintentos fluctuantes de conexión MQTT](device-advisor-tests-mqtt.md#MQTT_ConnectJitterBackoff) («Reintentos de conexión del dispositivo con retroceso fluctuante - Sin respuesta CONNACK»)

# TLS
<a name="device-advisor-tests-tls"></a>

Utilice estas pruebas para determinar si el protocolo de seguridad de la capa de transporte (TLS) entre sus dispositivos AWS IoT es seguro.

**nota**  
Device Advisor ahora admite TLS 1.3.

## Recorrido correcto
<a name="happy-path"></a>

**Conexión TLS**  <a name="TLS_Connect"></a>
Valida si el dispositivo que se está probando puede completar el protocolo de enlace TLS con. AWS IoT Esta prueba no valida la implementación de MQTT del dispositivo cliente.  

**Example Definición de caso de prueba de API:**  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Para obtener los mejores resultados, se recomienda un valor de tiempo de espera de 2 minutos. 

```
"tests":[
   {
      "name":"my_tls_connect_test",
      "configuration": {
         // optional:
         "EXECUTION_TIMEOUT":"300",  //in seconds
      },
      "test":{
         "id":"TLS_Connect",
         "version":"0.0.0"
      }
   }
]
```

**Example Resultados de los casos de prueba:**  
+ **Aprobar**: el dispositivo sometido a prueba completó el apretón de manos TLS con. AWS IoT
+ **Aprobar con advertencias**: el dispositivo objeto de la prueba completó el protocolo de enlace TLS AWS IoT, pero el dispositivo emitió mensajes de advertencia de TLS. AWS IoT
+ Fallo: el dispositivo sometido a prueba no pudo completar el protocolo de enlace TLS debido a un **error** de protocolo de enlace. AWS IoT 

**Fragmentos de tamaño máximo de recepción TLS**  <a name="TLS_MaximumSize"></a>
Este caso de prueba valida que su dispositivo puede recibir y procesar fragmentos de tamaño máximo de TLS. El dispositivo de prueba debe suscribirse a un tema preconfigurado con QoS 1 para recibir una gran carga. Puede personalizar la carga con la `${payload}` de configuración.  

**Example Definición de caso de prueba de API:**  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Para obtener los mejores resultados, se recomienda un valor de tiempo de espera de 2 minutos. 

```
"tests":[
   {
      "name":"TLS Receive Maximum Size Fragments",
      "configuration": {
         // optional:
         "EXECUTION_TIMEOUT":"300",  //in seconds
         "PAYLOAD_FORMAT":"{"message":"${payload}"}", // A string with a placeholder ${payload}, or leave it empty to receive a plain string.
         "TRIGGER_TOPIC": "test_1" // A topic to which a device will subscribe, and to which a test case will publish a large payload.
      },
      "test":{
         "id":"TLS_Receive_Maximum_Size_Fragments",
         "version":"0.0.0"
      }
   }
]
```

## Conjuntos de cifrado
<a name="cipher-suites"></a>

**Soporte de dispositivos TLS para los conjuntos de cifrado AWS IoT recomendados**  <a name="TLS_DeviceSupport_For_IOT"></a>
Valida que las suites de cifrado en el mensaje de saludo del cliente de TLS del dispositivo bajo prueba contenga los [conjuntos de cifrado de AWS IoT](transport-security.md) recomendados. Proporciona información adicional sobre los conjuntos de cifrado compatibles con el dispositivo.  

**Example Definición de caso de prueba de API:**  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos.

```
"tests":[
   {
      "name":"my_tls_support_aws_iot_cipher_suites_test",
      "configuration": {
         // optional:
         "EXECUTION_TIMEOUT":"300",  // in seconds
      },
      "test":{
         "id":"TLS_Support_AWS_IoT_Cipher_Suites",
         "version":"0.0.0"
      }
   }
]
```

**Example Resultados de los casos de prueba:**  
+ **Aprobación**: los conjuntos de cifrado del dispositivo que se están probando contienen al menos uno de los conjuntos de AWS IoT cifrado recomendados y no contienen ningún conjunto de cifrado no compatible.
+ **Superada con advertencias**: los conjuntos de cifrado del dispositivo contienen al menos un conjunto de cifrado de AWS IoT , pero:

  1. No contiene ninguno de los conjuntos de cifrado recomendados

  1. Contiene conjuntos de cifrado que no son compatibles con. AWS IoT

  Le sugerimos que compruebe que todos los conjuntos de cifrado no compatibles son seguros. 
+ **Error**: el dispositivo que se está probando con los conjuntos de cifrado no contiene ninguno de los conjuntos de cifrado AWS IoT compatibles.

## Certificado de servidor de mayor tamaño
<a name="larger-size"></a>

**Certificado de servidor de mayor tamaño de TLS**  <a name="TLS_LargeServerCert"></a>
Valida en su dispositivo que se pueda completar el protocolo de enlace TLS con AWS IoT cuando recibe y procesa un certificado de servidor de mayor tamaño. El tamaño del certificado de servidor (en bytes) utilizado en esta prueba es 20 veces mayor que el que se utiliza actualmente en el caso de prueba de **TLS Connect** e IoT Core. Durante este caso de prueba, AWS IoT comprueba el espacio de búfer del dispositivo para TLS. Si el espacio de búfer es lo suficientemente grande, el protocolo de enlace TLS se completa sin errores. Esta prueba no valida la implementación de MQTT del dispositivo. El caso de prueba se produce una vez finalizado el proceso de protocolo de enlace TLS.  

**Example Definición de caso de prueba de API:**  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Para obtener los mejores resultados, se recomienda un valor de tiempo de espera de 2 minutos. Si este caso de prueba falla pero el caso de prueba de **TLS Connect** pasa, le recomendamos que aumente el límite de espacio de búfer del dispositivo para TLS. Si aumenta el límite de espacio de búfer, su dispositivo podrá procesar un certificado de servidor de mayor tamaño en caso de que el tamaño aumente.

```
"tests":[
   {
      "name":"my_tls_large_size_server_cert_test",
      "configuration": {
         // optional:
         "EXECUTION_TIMEOUT":"300",  // in seconds
      },
      "test":{
         "id":"TLS_Large_Size_Server_Cert",
         "version":"0.0.0"
      }
   }
]
```

**Example Resultados de los casos de prueba:**  
+ **Superada**: el dispositivo sometido a prueba completó el protocolo de enlace TLS con AWS IoT.
+ **Aprobar con advertencias**: el dispositivo que se está probando completó el protocolo de enlace TLS AWS IoT, pero hay mensajes de advertencia de TLS provenientes del dispositivo o AWS IoT.
+ **Fallo: el dispositivo sometido a prueba no pudo completar el protocolo de enlace TLS AWS IoT debido a un error durante el proceso de protocolo de enlace.**

## Certificado de servidor no seguro de TLS
<a name="unsecure-server"></a>

**No firmado por entidad de certificación reconocida**  <a name="TLS_Unsecure_Server_Cert"></a>
Valida que el dispositivo que se está probando cierra la conexión si se le presenta un certificado de servidor sin una firma válida de la entidad de certificación de ATS. Un dispositivo solo debe conectarse a un punto de conexión que presente un certificado válido.  

**Example Definición de caso de prueba de API:**  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos. 

```
"tests":[
   {
      "name":"my_tls_unsecure_server_cert_test",
      "configuration": {
         // optional:
         "EXECUTION_TIMEOUT":"300",  //in seconds
      },
      "test":{
         "id":"TLS_Unsecure_Server_Cert",
         "version":"0.0.0"
      }
   }
]
```

**Example Resultados de los casos de prueba:**  
+ **Superada**: el dispositivo sometido a prueba cerró la conexión.
+ **Fallo**: el dispositivo objeto de la prueba completó el protocolo de enlace TLS con. AWS IoT

**Certificado de servidor TLS con nombre de asunto incorrecto/Nombre común del asunto (CN)/Nombre alternativo del asunto (SAN) incorrecto**  <a name="TLS_Incorrect_Subject_Name"></a>
Valida que el dispositivo que se está probando cierra la conexión si se le presenta un certificado de servidor para un nombre de dominio diferente al solicitado.  

**Example Definición de caso de prueba de API:**  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos. 

```
"tests":[
   {
      "name":"my_tls_incorrect_subject_name_cert_test",
      "configuration": {
         // optional:
         "EXECUTION_TIMEOUT":"300",   // in seconds
      },
      "test":{
         "id":"TLS_Incorrect_Subject_Name_Server_Cert",
         "version":"0.0.0"
      }
   }
]
```

**Example Resultados de los casos de prueba:**  
+ **Superada**: el dispositivo sometido a prueba cerró la conexión.
+ **Fallo**: el dispositivo objeto de la prueba completó el protocolo de enlace TLS con. AWS IoT

## Certificado de servidor TLS caducado
<a name="expired-server"></a>

**Certificado de servidor caducado**  <a name="TLS_Expired_Server_Cert"></a>
Valida que el dispositivo sometido a prueba cierre la conexión si se le presenta un certificado de servidor caducado.  

**Example Definición de caso de prueba de API:**  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos. 

```
"tests":[
   {
      "name":"my_tls_expired_cert_test",
      "configuration": {
         // optional:
         "EXECUTION_TIMEOUT":"300",  //in seconds
      },
      "test":{
         "id":"TLS_Expired_Server_Cert",
         "version":"0.0.0"
      }
   }
]
```

**Example Resultados de los casos de prueba:**  
+ **Aprobar**: el dispositivo que se está probando se niega a completar el protocolo de enlace TLS con él. AWS IoT El dispositivo envía un mensaje de alerta de TLS antes de cerrar la conexión.
+ **Superada con advertencias**: el dispositivo sometido a prueba rechaza completar el protocolo de enlace TLS con AWS IoT. Sin embargo, no envía un mensaje de alerta de TLS antes de cerrar la conexión.
+ **Fallo**: el dispositivo que se está probando completa el protocolo de enlace TLS con. AWS IoT

# MQTT
<a name="device-advisor-tests-mqtt"></a>

## CONNECT, DISCONNECT y RECONNECT
<a name="connect"></a>

**«El dispositivo envía CONNECT a AWS IoT Core (Happy case)»**  <a name="MQTT_Connect"></a>
Valida que el dispositivo sometido a prueba envía una solicitud CONNECT.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos. 

```
"tests":[
   {
      "name":"my_mqtt_connect_test",
      "configuration": {
         // optional:
         "EXECUTION_TIMEOUT":"300",   // in seconds
      },
      "test":{
         "id":"MQTT_Connect",
         "version":"0.0.0"
      }
   }
]
```

**«El dispositivo puede devolver PUBACK a un tema arbitrario para QoS1»**  
Este caso de prueba comprobará si el dispositivo (cliente) puede devolver un mensaje de PUBACK si ha recibido un mensaje de publicación del agente tras suscribirse a un tema con QoS1.  
El contenido y el tamaño de la carga son configurables para este caso de prueba. Si el tamaño de la carga está configurado, Device Advisor sobrescribirá el valor del contenido de la carga útil y enviará una carga útil predefinida al dispositivo con el tamaño deseado. El tamaño de la carga útil es un valor entre 0 y 128 y no puede superar los 128 KB. AWS IoT Core rechaza las solicitudes de publicación y conexión de más de 128 KB, tal y como se muestra en la página del [agente de mensajes de AWS IoT Core y los límites y cuotas del protocolo](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits).   
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos. `PAYLOAD_SIZE` se puede configurar con un valor entre 0 y 128 kilobytes. Al definir un tamaño de carga, se anula el contenido de la carga, ya que Device Advisor enviará una carga predefinida con el tamaño indicado al dispositivo.

```
"tests":[                            
{
        "name":"my_mqtt_client_puback_qos1",
        "configuration": {
            // optional:"TRIGGER_TOPIC": "myTopic",
            "EXECUTION_TIMEOUT":"300", // in seconds
            "PAYLOAD_FOR_PUBLISH_VALIDATION":"custom payload",
            "PAYLOAD_SIZE":"100" // in kilobytes
        },
        "test": {
            "id": "MQTT_Client_Puback_QoS1",
            "version": "0.0.0"
        }
    }
]
```

**«Reintentos de conexión del dispositivo con retroceso fluctuante - Sin respuesta CONNACK»**  <a name="MQTT_ConnectJitterBackoff"></a>
Valida que el dispositivo que se está probando utiliza el retroceso fluctuante adecuado al volver a conectarse con el agente al menos cinco veces. El agente registra la marca de tiempo de la solicitud CONNECT del dispositivo sometido a prueba, valida los paquetes, hace una pausa sin enviar CONNACK al dispositivo sometido a prueba y espera a que el dispositivo vuelva a enviar la solicitud. Se deja pasar el sexto intento de conexión y se permite que CONNACK regrese al dispositivo objeto de la prueba.  
Se vuelve a realizar el proceso anterior. En total, este caso de prueba requiere que el dispositivo se conecte al menos 12 veces. Las marcas de tiempo recopiladas se utilizan para validar que el dispositivo que se está probando utiliza retroceso fluctuante. Si el dispositivo que se está probando tiene un retroceso fluctuante estrictamente exponencial, este caso de prueba superará con advertencias.   
Recomendamos implementar el mecanismo de [retroceso fluctuante y exponencial](https://aws.amazon.com/blogs//architecture/exponential-backoff-and-jitter/) en el dispositivo sometido a prueba para superar este caso de prueba.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 4 minutos. 

```
"tests":[
   {
      "name":"my_mqtt_jitter_backoff_retries_test",
      "configuration": {
         // optional:
         "EXECUTION_TIMEOUT":"300",    // in seconds
      },
      "test":{
         "id":"MQTT_Connect_Jitter_Backoff_Retries",
         "version":"0.0.0"
      }
   }
]
```

**«Reintentos de conexión del dispositivo con retroceso exponencial - Sin respuesta CONNACK»**  
Valida que el dispositivo que se está probando utiliza el retroceso exponencial adecuado al volver a conectarse con el agente al menos cinco veces. El agente registra la marca de tiempo de la solicitud CONNECT del dispositivo sometido a prueba, valida los paquetes, hace una pausa sin enviar un CONNACK al dispositivo cliente y espera a que el dispositivo vuelva a enviar la solicitud. Las marcas de tiempo recopiladas se utilizan para validar que el dispositivo que se está probando utiliza retroceso exponencial.   
Recomendamos implementar el mecanismo de [retroceso fluctuante y exponencial](https://aws.amazon.com/blogs//architecture/exponential-backoff-and-jitter/) en el dispositivo sometido a prueba para superar este caso de prueba.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 4 minutos. 

```
"tests":[
   {
      "name":"my_mqtt_exponential_backoff_retries_test",
      "configuration": {
         // optional:
         "EXECUTION_TIMEOUT":"600",  // in seconds
      },
      "test":{
         "id":"MQTT_Connect_Exponential_Backoff_Retries",
         "version":"0.0.0"
      }
   }
]
```

**«Reconexión del dispositivo con retroceso fluctuante - Tras la desconexión del servidor»**  
Valida si un dispositivo sometido a prueba utiliza la fluctuación y el retroceso necesarios al volver a conectarse después de haber sido desconectado del servidor. Device Advisor desconecta el dispositivo del servidor al menos cinco veces y observa el comportamiento del dispositivo al volver a conectarse mediante MQTT. Device Advisor registra la marca de tiempo de la solicitud CONNECT para el dispositivo sometido a prueba, realiza la validación del paquete, hace una pausa sin enviar un CONNACK al dispositivo cliente y espera a que el dispositivo objeto de prueba vuelva a enviar la solicitud. Las marcas de tiempo recopiladas se utilizan para validar que el dispositivo sometido a prueba utiliza fluctuación y retroceso durante la reconexión. Si el dispositivo sometido a prueba tiene un retroceso estrictamente exponencial o no implementa un mecanismo de retroceso fluctuante adecuado, este caso de prueba superará con advertencias. Si el dispositivo que se está probando ha implementado un mecanismo de retroceso lineal o un mecanismo de retroceso constante, la prueba fallará.  
Para superar este caso de prueba, le recomendamos que implemente el mecanismo de [retroceso y fluctuación exponencial](https://aws.amazon.com/blogs//architecture/exponential-backoff-and-jitter/) en el dispositivo sometido a prueba.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 4 minutos.  
El número de intentos de reconexión para validar el retroceso se puede cambiar especificando el parámetro `RECONNECTION_ATTEMPTS`. El número debe estar comprendido entre 5 y 10. El valor predeterminado es 5.

```
"tests":[
   {
      "name":"my_mqtt_reconnect_backoff_retries_on_server_disconnect",
      "configuration":{
         // optional:
         "EXECUTION_TIMEOUT":"300",  // in seconds
         "RECONNECTION_ATTEMPTS": 5
      },
      "test":{
         "id":"MQTT_Reconnect_Backoff_Retries_On_Server_Disconnect",
         "version":"0.0.0"
      }
   }
]
```

**«Reconexión del dispositivo con un retroceso fluctuante - En caso de una conexión inestable»**  
Valida si un dispositivo sometido a prueba utiliza la fluctuación y el retroceso necesarios al volver a conectarse en una conexión inestable. Device Advisor desconecta el dispositivo del servidor después de cinco conexiones correctas y observa el comportamiento del dispositivo para la reconexión MQTT. Device Advisor registra la marca de tiempo de la solicitud CONNECT para el dispositivo sometido a prueba, realiza la validación del paquete, envía de vuelta CONNACK, se desconecta, registra la marca de tiempo de la desconexión y espera a que el dispositivo objeto de prueba vuelva a enviar la solicitud. Las marcas de tiempo recopiladas se utilizan para validar que el dispositivo sometido a prueba utiliza fluctuación y retroceso durante la reconexión tras conexiones correctas pero inestables. Si el dispositivo sometido a prueba tiene un retroceso estrictamente exponencial o no implementa un mecanismo de retroceso fluctuante adecuado, este caso de prueba superará con advertencias. Si el dispositivo que se está probando ha implementado un mecanismo de retroceso lineal o un mecanismo de retroceso constante, la prueba fallará.  
Para superar este caso de prueba, le recomendamos que implemente el mecanismo de [retroceso y fluctuación exponencial](https://aws.amazon.com/blogs//architecture/exponential-backoff-and-jitter/) en el dispositivo sometido a prueba.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 4 minutos.  
El número de intentos de reconexión para validar el retroceso se puede cambiar especificando el parámetro `RECONNECTION_ATTEMPTS`. El número debe estar comprendido entre 5 y 10. El valor predeterminado es 5.

```
"tests":[
   {
      "name":"my_mqtt_reconnect_backoff_retries_on_unstable_connection",
      "configuration":{
         // optional:
         "EXECUTION_TIMEOUT":"300",  // in seconds
         "RECONNECTION_ATTEMPTS": 5
      },
      "test":{
         "id":"MQTT_Reconnect_Backoff_Retries_On_Unstable_Connection",
         "version":"0.0.0"
      }
   }
]
```

## Publish
<a name="publish"></a>

**«QoS0 (caso deseable)»**  <a name="MQTT_Publish"></a>
Valida que el dispositivo que se está probando publique un mensaje con QoS0 o QoS1. También puede validar el tema del mensaje y la carga especificando el valor del tema y la carga en la configuración de la prueba.  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos.

```
"tests":[
   {
      "name":"my_mqtt_publish_test",
      "configuration":{
         // optional:
         "EXECUTION_TIMEOUT":"300",  // in seconds
         "TOPIC_FOR_PUBLISH_VALIDATION": "my_TOPIC_FOR_PUBLISH_VALIDATION",
         "PAYLOAD_FOR_PUBLISH_VALIDATION": "my_PAYLOAD_FOR_PUBLISH_VALIDATION",
      },
      "test":{
         "id":"MQTT_Publish",
         "version":"0.0.0"
      }
   }
]
```

**«Reintento de publicación de QoS1 - Sin PUBACK»**  
Valida que el dispositivo sometido a prueba vuelva a publicar un mensaje enviado con QoS1, si el agente no envía PUBACK. También puede validar el tema del mensaje especificando este tema en la configuración de la prueba. El dispositivo cliente no debe desconectarse antes de volver a publicar el mensaje. Esta prueba también valida que el mensaje republicado tenga el mismo identificador de paquete que el original. Durante la ejecución de la prueba, si el dispositivo pierde la conexión y se vuelve a conectar, el caso de prueba se restablecerá sin fallar y el dispositivo tendrá que volver a realizar los pasos del caso de prueba.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda que dure al menos 4 minutos.

```
"tests":[
   {
      "name":"my_mqtt_publish_retry_test",
      "configuration":{
         // optional:
         "EXECUTION_TIMEOUT":"300",  // in seconds
         "TOPIC_FOR_PUBLISH_VALIDATION": "my_TOPIC_FOR_PUBLISH_VALIDATION",
         "PAYLOAD_FOR_PUBLISH_VALIDATION": "my_PAYLOAD_FOR_PUBLISH_VALIDATION",
      },
      "test":{
         "id":"MQTT_Publish_Retry_No_Puback",
         "version":"0.0.0"
      }
   }
]
```

**«Publicación de mensajes retenidos»**  
Valida que el dispositivo sometido a prueba publique un mensaje con `retainFlag` establecido en verdadero. Puede validar el tema y la carga del mensaje estableciendo el valor del tema y la carga en la configuración de la prueba. Si el valor `retainFlag` enviado en el paquete PUBLISH no está establecido en verdadero, el caso de prueba fallará.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos. Para ejecutar este caso de prueba, agregue la acción `iot:RetainPublish` a su [rol de dispositivo](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html#da-iam-role).

```
"tests":[
   {
      "name":"my_mqtt_publish_retained_messages_test",
      "configuration":{
         // optional:
         "EXECUTION_TIMEOUT":"300",  // in seconds
         "TOPIC_FOR_PUBLISH_RETAINED_VALIDATION": "my_TOPIC_FOR_PUBLISH_RETAINED_VALIDATION",
         "PAYLOAD_FOR_PUBLISH_RETAINED_VALIDATION": "my_PAYLOAD_FOR_PUBLISH_RETAINED_VALIDATION",
      },
      "test":{
         "id":"MQTT_Publish_Retained_Messages",
         "version":"0.0.0"
      }
   }
]
```

**«Publicación con propiedad de usuario»**  
Valida que el dispositivo sometido a prueba publique un mensaje con la propiedad de usuario correcta. Puede validar la propiedad del usuario configurando el par nombre-valor en la configuración de la prueba. Si la propiedad del usuario no se proporciona o no coincide, el caso de prueba falla.  
*Definición de caso de prueba de API:*  
Este es MQTT5 solo un caso de prueba.  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos. 

```
"tests":[
   {
      "name":"my_mqtt_user_property_test",
      "test":{
        "USER_PROPERTIES": [
            {"name": "name1", "value":"value1"},
            {"name": "name2", "value":"value2"}
        ],
        "EXECUTION_TIMEOUT":"300",  // in seconds
      },
      "test":{
         "id":"MQTT_Publish_User_Property",
         "version":"0.0.0"
      }
   }
]
```

## Suscribirse
<a name="subscribe"></a>

**«Puede suscribirse (caso deseable)»**  <a name="MQTT_Subscribe"></a>
Valida que el dispositivo sometido a prueba esté suscrito a los temas de MQTT. También puede validar el tema al que está suscrito el dispositivo sometido a prueba especificando este tema en la configuración de la prueba.   
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos. 

```
"tests":[
   {
      "name":"my_mqtt_subscribe_test",
      "configuration":{
         // optional:
         "EXECUTION_TIMEOUT":"300",  // in seconds
         "TOPIC_LIST_FOR_SUBSCRIPTION_VALIDATION":["my_TOPIC_FOR_PUBLISH_VALIDATION_a","my_TOPIC_FOR_PUBLISH_VALIDATION_b"]
      },
      "test":{
         "id":"MQTT_Subscribe",
         "version":"0.0.0"
      }
   }
]
```

**«Reintento de suscripción - Sin SUBACK»**  
Valida que el dispositivo sometido a prueba reintenta una suscripción fallida a temas de MQTT. A continuación, el servidor espera y no envía un SUBACK. Si el dispositivo cliente no vuelve a intentar la suscripción, la prueba no se realizará correctamente. El dispositivo cliente debe volver a intentar la suscripción fallida con el mismo identificador de paquete. También puede validar el tema al que está suscrito el dispositivo sometido a prueba especificando este tema en la configuración de la prueba. Durante la ejecución de la prueba, si el dispositivo pierde la conexión y se vuelve a conectar, el caso de prueba se restablecerá sin fallar y el dispositivo tendrá que volver a realizar los pasos del caso de prueba.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 4 minutos. 

```
"tests":[
   {
      "name":"my_mqtt_subscribe_retry_test",
      "configuration":{
         "EXECUTION_TIMEOUT":"300",  // in seconds
         // optional:
         "TOPIC_LIST_FOR_SUBSCRIPTION_VALIDATION":["myTOPIC_FOR_PUBLISH_VALIDATION_a","my_TOPIC_FOR_PUBLISH_VALIDATION_b"]
      },
      "test":{
         "id":"MQTT_Subscribe_Retry_No_Suback",
         "version":"0.0.0"
      }
   }
]
```

## Keep-Alive
<a name="keep-alive"></a>

**«Matt No Ack PingResp»**  
Este caso de prueba valida si el dispositivo sometido a prueba se desconecta cuando no recibe una respuesta de ping. Como parte de este caso de prueba, Device Advisor bloquea las respuestas enviadas desde AWS IoT Core las solicitudes de publicación, suscripción y ping. También valida si el dispositivo sometido a prueba desconecta la conexión MQTT.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Recomendamos un tiempo de espera superior a 1,5 veces el valor `keepAliveTime`.  
 El `keepAliveTime` máximo no debe ser superior a 230 segundos para esta prueba. 

```
"tests":[
    {
       "name":"Mqtt No Ack PingResp",
       "configuration": 
          //optional:
          "EXECUTION_TIMEOUT":"306",   // in seconds
       },
       "test":{
          "id":"MQTT_No_Ack_PingResp",
          "version":"0.0.0"
       }
    }
]
```

## Sesión persistente
<a name="persistent-session"></a>

**«Sesión persistente (caso deseable)»**  
Este caso de prueba valida el comportamiento del dispositivo cuando se desconecta de una sesión persistente. El caso de prueba comprueba si el dispositivo puede volver a conectarse, reanudar las suscripciones a los temas que lo activaron sin tener que volver a suscribirse de forma explícita, recibir los mensajes almacenados en los temas y funcionar según lo previsto durante una sesión persistente. Cuando se supera este caso de prueba, indica que el dispositivo cliente es capaz de mantener una sesión persistente con el AWS IoT Core intermediario de la manera esperada. Para obtener más información sobre las sesiones AWS IoT persistentes, consulte [Uso de sesiones persistentes de MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html#mqtt-persistent-sessions).   
En este caso de prueba, se espera que el dispositivo cliente envíe un paquete CONNECT con el AWS IoT Core y un indicador de sesión limpia establecido en falso y, a continuación, se suscriba a un tema activador. Tras una suscripción correcta, Device Advisor desconectará el AWS IoT Core dispositivo. Mientras el dispositivo esté desconectado, se almacenará una carga de mensajes de QoS 1 en ese tema. Luego, Device Advisor permitirá que el dispositivo cliente se vuelva a conectar con el punto de conexión de prueba. En este punto, dado que hay una sesión persistente, se espera que el dispositivo cliente reanude sus suscripciones de temas sin enviar ningún paquete SUBSCRIBE adicional y reciba el mensaje de QoS 1 del agente. Tras volver a conectarse, si el dispositivo cliente vuelve a suscribirse al tema de activación mediante el envío de un paquete and/or SUBSCRIBE adicional y el cliente no recibe el mensaje almacenado del tema de activación, el caso de prueba fallará.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 4 minutos como mínimo. En la primera conexión, el dispositivo cliente debe suscribirse explícitamente a un `TRIGGER_TOPIC` al que no se haya suscrito anteriormente. Para superar el caso de prueba, el dispositivo cliente debe suscribirse correctamente a `TRIGGER_TOPIC` con un QoS 1. Tras volver a conectarse, se espera que el dispositivo cliente comprenda que hay una sesión persistente activa, por lo que debe aceptar el mensaje almacenado enviado por el tema activador y devolver PUBACK para ese mensaje específico. 

```
"tests":[
   {
      "name":"my_mqtt_persistent_session_happy_case",
      "configuration":{
         //required:
         "TRIGGER_TOPIC": "myTrigger/topic",
         // optional:
         // if Payload not provided, a string will be stored in the trigger topic to be sent back to the client device
         "PAYLOAD": "The message which should be received from AWS IoT Broker after re-connecting to a persistent session from the specified trigger topic.",            
         "EXECUTION_TIMEOUT":"300" // in seconds
      },
      "test":{
         "id":"MQTT_Persistent_Session_Happy_Case",
         "version":"0.0.0"
      }
   }
]
```

**«Sesión persistente - Caducidad de la sesión»**  
Este caso de prueba ayuda a validar el comportamiento del dispositivo cuando un dispositivo desconectado se vuelve a conectar a una sesión persistente caducada. Cuando finalice la sesión, esperamos que el dispositivo vuelva a suscribirse a los temas a los que estaba suscrito anteriormente mediante el envío explícito de un nuevo paquete SUBSCRIBE.  
Durante la primera conexión, esperamos que el dispositivo de prueba se CONECTE con el intermediario de AWS IoT, ya que su `CleanSession` indicador está establecido en falso para iniciar una sesión persistente. A continuación, el dispositivo debería suscribirse a un tema activador. A continuación, AWS IoT Core Device Advisor desconecta el dispositivo tras suscribirse correctamente e iniciar una sesión persistente. Tras la desconexión, AWS IoT Core Device Advisor permite que el dispositivo de prueba se vuelva a conectar con el terminal de prueba. En este punto, cuando el dispositivo de prueba envía otro paquete CONNECT, AWS IoT Core Device Advisor devuelve un paquete CONNACK que indica que la sesión persistente ha caducado. El dispositivo de prueba debe interpretar este paquete correctamente y se espera que vuelva a suscribirse al mismo tema activador cuando finalice la sesión persistente. Si el dispositivo de prueba no vuelve a suscribirse al tema activador, el caso de prueba falla. Para superar la prueba, el dispositivo debe comprender que la sesión persistente ha finalizado y enviar un nuevo paquete SUBSCRIBE para el mismo tema activador en la segunda conexión.  
Si este caso de prueba es válido para un dispositivo de prueba, indica que el dispositivo es capaz de gestionar la reconexión al caducar la sesión persistente de la forma esperada.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 4 minutos como mínimo. El dispositivo de prueba necesita suscribirse explícitamente a un `TRIGGER_TOPIC`, al que no estaba suscrito anteriormente. Para superar el caso de prueba, el dispositivo de prueba debe enviar un paquete CONNECT con el indicador `CleanSession` establecido en false y suscribirse correctamente a un tema activador con un QoS 1. Tras una conexión correcta, AWS IoT Core Device Advisor desconecta el dispositivo. Tras la desconexión, AWS IoT Core Device Advisor permite que el dispositivo se vuelva a conectar y se espera que el dispositivo vuelva a suscribirse a la misma conexión, `TRIGGER_TOPIC` ya que AWS IoT Core Device Advisor habría terminado la sesión persistente.

```
"tests":[
   {
      "name":"my_expired_persistent_session_test",
      "configuration":{
         //required:
         "TRIGGER_TOPIC": "myTrigger/topic",
         // optional:       
         "EXECUTION_TIMEOUT":"300" // in seconds
      },
      "test":{
         "id":"MQTT_Expired_Persistent_Session",
         "version":"0.0.0"
      }
   }
]
```

# Sombra
<a name="device-advisor-tests-shadow"></a>

Utilice estas pruebas para comprobar que los dispositivos que se están probando utilizan correctamente el servicio AWS IoT Device Shadow. Para obtener más información, consulte [AWS IoT Servicio Device Shadow](iot-device-shadows.md). Si estos casos de prueba están configurados en su conjunto de pruebas, es necesario proporcionar un objeto al iniciar la ejecución del conjunto.

Por el momento, no WebSocket se admite **MQTT over**.

## Publish
<a name="publish"></a>

***«El dispositivo publica su estado después de conectarse (caso deseable)»***  
Valida si un dispositivo puede publicar su estado después de conectarse a AWS IoT Core  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos. 

```
"tests":[
   {
      "name":"my_shadow_publish_reported_state",
      "configuration": {
         // optional:
         "EXECUTION_TIMEOUT":"300", // in seconds
         "SHADOW_NAME": "SHADOW_NAME",
         "REPORTED_STATE": {
            "STATE_ATTRIBUTE": "STATE_VALUE"
         }
      },
      "test":{
         "id":"Shadow_Publish_Reported_State",
         "version":"0.0.0"
      }
   }
]
```
`REPORTED_STATE` puede proporcionar para una validación adicional del estado de sombra exacto del dispositivo, una vez que se haya conectado. De forma predeterminada, este caso de prueba valida el estado de publicación del dispositivo.  
Si no se proporciona `SHADOW_NAME`, el caso de prueba busca los mensajes publicados con prefijos de tema del tipo de sombra sin nombre (clásico) de forma predeterminada. Proporcione un nombre de sombra si su dispositivo utiliza el tipo de sombra con nombre. Consulte [Uso de sombras en dispositivos](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-comms-device.html) para obtener más información.

## Actualización
<a name="update"></a>

***«El dispositivo actualiza el estado notificado al estado deseado (caso deseable)»***  
Valida si el dispositivo lee todos los mensajes de actualización recibidos y sincroniza el estado del dispositivo para que coincida con las propiedades de estado deseadas. El dispositivo debería publicar el último estado registrado tras la sincronización. Si su dispositivo ya tiene una sombra existente antes de ejecutar la prueba, asegúrese de que el estado deseado configurado para el caso de prueba y el estado registrado existente no coincidan aún. Para identificar los mensajes de actualización de Shadow enviados por Device Advisor, consulte el **ClientToken**campo del documento oculto tal y como aparece. `DeviceAdvisorShadowTestCaseSetup`   
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 2 minutos. 

```
"tests":[
   {
      "name":"my_shadow_update_reported_state",
      "configuration": {
         "DESIRED_STATE": {
            "STATE_ATTRIBUTE": "STATE_VALUE"
         },
         // optional:
         "EXECUTION_TIMEOUT":"300", // in seconds
         "SHADOW_NAME": "SHADOW_NAME"
      },
      "test":{
         "id":"Shadow_Update_Reported_State",
         "version":"0.0.0"
      }
   }
]
```
`DESIRED_STATE` debe tener al menos un atributo y un valor asociado.  
Si no se proporciona `SHADOW_NAME`, el caso de prueba busca los mensajes publicados con prefijos de tema del tipo de sombra sin nombre (clásico) de forma predeterminada. Proporcione un nombre de sombra si su dispositivo utiliza el tipo de sombra con nombre. Consulte [Uso de sombras en dispositivos](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-comms-device.html) para obtener más información.

# Ejecución de trabajo
<a name="device-advisor-tests-job-execution"></a>

**«El dispositivo puede completar la ejecución de un trabajo»**  
 Este caso de prueba le ayuda a validar si su dispositivo puede recibir actualizaciones mediante AWS IoT Jobs y a publicar el estado de las actualizaciones correctas. Para obtener más información sobre los AWS IoT trabajos, consulte [Trabajos](https://docs.aws.amazon.com//iot/latest/developerguide/iot-jobs.html).   
 Para ejecutar correctamente este caso de prueba, hay dos temas de AWS reservados a los que debe asignar el [rol de dispositivo](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html#da-iam-role). Para suscribirse a los mensajes relacionados con la actividad de trabajos, utilice los temas **notify** y **notify-next**. Su función de dispositivo debe permitir la acción PUBLISH en los siguientes temas:   
+ \$1aws/things/**thingName**/jobs/**jobId**/get
+ \$1aws/things/**thingName**/jobs/**jobId**/update
Se recomienda conceder las acciones SUBSCRIBE y RECEIVE para los siguientes temas:  
+ **\$1aws/things/ ThingName/**jobs/get/accepted
+ \$1aws/things/**thingName**/jobs/**jobId**/get/rejected
+ \$1aws/things/**thingName**/jobs/**jobId**/update/accepted
+ \$1aws/things/**thingName**/jobs/**jobId**/update/rejected
Se recomienda conceder la acción SUBSCRIBE para el siguiente tema:  
+ \$1aws/things/**thingName**/jobs/notify-next
Para obtener más información sobre estos temas reservados, consulte los temas reservados de [AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-job).  
Por el momento, no se **admite MQTT over. WebSocket**  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 5 minutos. Se recomienda un valor de tiempo de espera de 3 minutos. Según el documento de AWS IoT trabajo o la fuente proporcionados, ajuste el valor de tiempo de espera (por ejemplo, si un trabajo tardará mucho en ejecutarse, defina un valor de tiempo de espera más largo para el caso de prueba). Para ejecutar la prueba, se necesita un documento de AWS IoT trabajo válido o un identificador de trabajo ya existente. Un documento de AWS IoT trabajo se puede proporcionar como un documento JSON o un enlace S3. Si se proporciona un documento de trabajo, proporcionar un identificador de trabajo es opcional. Si se proporciona un ID de trabajo, Device Advisor utilizará ese ID al crear el AWS IoT trabajo en su nombre. Si no se proporciona el documento de trabajo, puede proporcionar un ID existente que se encuentre en la misma región en la que está ejecutando el caso de prueba. En este caso, Device Advisor utilizará ese AWS IoT Job mientras ejecuta el caso de prueba.

```
"tests": [
   {
      "name":"my_job_execution",
      "configuration": {
         // optional:
         // Test case will create a job task by using either JOB_DOCUMENT or JOB_DOCUMENT_SOURCE.
         // If you manage the job task on your own, leave it empty and provide the JOB_JOBID (self-managed job task).
         // JOB_DOCUMENT is a JSON formatted string
         "JOB_DOCUMENT": "{
            \"operation\":\"reboot\",
            \"files\" : {
               \"fileName\" : \"install.py\",
               \"url\" : \"${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket-name/key}\"
            }
         }",
         // JOB_DOCUMENT_SOURCE is an S3 link to the job document. It will be used only if JOB_DOCUMENT is not provided.
         "JOB_DOCUMENT_SOURCE": "https://s3.amazonaws.com/bucket-name/key",
         // JOB_JOBID is mandatory, only if neither document nor document source is provided. (Test case needs to know the self-managed job task id).
         "JOB_JOBID": "String",
         // JOB_PRESIGN_ROLE_ARN is used for the presign Url, which will replace the placeholder in the JOB_DOCUMENT field
         "JOB_PRESIGN_ROLE_ARN": "String",
         // Presigned Url expiration time. It must be between 60 and 3600 seconds, with the default value being 3600.
         "JOB_PRESIGN_EXPIRES_IN_SEC": "Long"   
         "EXECUTION_TIMEOUT": "300", // in seconds         
      },
      "test": {
         "id": "Job_Execution",
         "version": "0.0.0"
      }
   }
]
```
Para obtener más información sobre la creación y el uso de documentos de trabajo, consulte [Documento de trabajo](https://docs.aws.amazon.com//iot/latest/developerguide/iot-jobs.html). 

# Permisos y políticas
<a name="device-advisor-tests-permissions-policies"></a>

Puede utilizar las siguientes pruebas con el fin de determinar si las políticas asociadas a los certificados de sus dispositivos siguen las prácticas estándar recomendadas.

Por el momento, no WebSocket se admite **MQTT over**.

**«Las políticas asociadas a los certificados de dispositivo no contienen caracteres comodín»**  
 Valida si las políticas de permisos asociadas a un dispositivo siguen las prácticas recomendadas y no conceden al dispositivo más permisos de los necesarios.  
*Definición de caso de prueba de API:*  
`EXECUTION_TIMEOUT` tiene un valor predeterminado de 1 minuto. Recomendamos establecer un tiempo de espera de al menos 30 segundos.

```
"tests":[
   {
        "name":"my_security_device_policies",
        "configuration": {
            // optional:
            "EXECUTION_TIMEOUT":"60"    // in seconds
        },
        "test": {
            "id": "Security_Device_Policies",
            "version": "0.0.0"
        }
    }
]
```

# Pruebas de larga duración
<a name="device-advisor-tests-long-duration"></a>

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
<a name="long-duration-test-case"></a>

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
<a name="long-duration-test-case-execution-flow"></a>

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

![\[Ejecución de pruebas de larga duración en MQTT que muestra Ejecución de pruebas básicas, Ejecución de pruebas avanzadas y Tiempo de ejecución adicional.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/mqtt-execution-flow.png)


### Ejecución de pruebas básicas
<a name="basic-tests-execution"></a>

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
<a name="basic-tests-execution-connect"></a>

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 el agente responde con un mensaje CONNACK con un código de retorno correcto.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/basic-connect.png)


#### PUBLISH
<a name="basic-tests-execution-publish"></a>

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

##### QoS 0
<a name="publish-qos0"></a>

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 PUBLISH QoS 0 que incluye un dispositivo que envía un mensaje PUBLISH con un nivel de QoS 0.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/Qos0.png)


##### QoS 1
<a name="publish-qos1"></a>

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 PUBLISH QoS 1 que incluye un dispositivo que envía un mensaje PUBLISH con un nivel de QoS 1 y múltiples interacciones con el agente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/Qos1.png)


#### SUBSCRIBE
<a name="basic-tests-execution-subscribe"></a>

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

##### QoS 0
<a name="subscribe-qos0"></a>

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 SUBSCRIBE QoS 0 que incluye un dispositivo que envía un mensaje SUBSCRIBE con un nivel de QoS 0 y un agente que responde con un mensaje SUBACK y un código de QoS 0 de Success Maximum.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/subscribe-Qos0.png)


##### QoS 1
<a name="subscribe-qos1"></a>

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 SUBSCRIBE QoS 1 que incluye un dispositivo que envía un mensaje SUBSCRIBE con un nivel de QoS 1 y múltiples interacciones con el agente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/subscribe-Qos1.png)


#### RECONNECT
<a name="basic-tests-execution-reconnect"></a>

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 RECONNECT entre DUT y el agente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/reconnect.png)


### Ejecución de pruebas avanzadas
<a name="advanced-tests-execution"></a>

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. 

#### RETURN PUBACK ON QoS 1 SUBSCRIPTION
<a name="advanced-tests-execution-return-puback"></a>

**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 de RETURN PUBACK ON QoS 1 SUBSCTIPTION entre DUT y el agente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/return-puback.png)


#### RECEIVE LARGE PAYLOAD
<a name="advanced-tests-execution-receive-large-payload"></a>

**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 RECEIVE LARGE PAYLOAD entre DUT y el agente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/large-payload.png)


#### PERSISTENT SESSION
<a name="advanced-tests-execution-persistent-session"></a>

**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](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html#mqtt-persistent-sessions).

![\[El flujo de PERSISTENT SESSION entre DUT y el agente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/persistent-session.png)


#### KEEP-ALIVE
<a name="advanced-tests-execution-keep-alive"></a>

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 de KEEP ALIVE entre DUT y el agente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/keep-alive.png)


#### INTERMITTENT CONNECTIVITY
<a name="advanced-tests-execution-intermittent-connectivity"></a>

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 INTERMITTENT CONNECTIVITY entre DUT y el agente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/intermittent.png)


#### RECONNECT BACKOFF
<a name="advanced-tests-execution-reconnect-backoff"></a>

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](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/) en el dispositivo sometido a prueba.

![\[El flujo de RECONNECT BACKOFF entre DUT y el agente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/reconnect-backoff.png)


#### LONG SERVER DISCONNECT
<a name="advanced-tests-execution-longserver-disconnect"></a>

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 LONG SERVER DISCONNECT entre DUT y el agente.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/longserver-disconnect.png)


### Tiempo de ejecución adicional
<a name="additional-execution-time"></a>

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
<a name="long-duration-test-case-config-options"></a>

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 requiere ninguna entrada adicional 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\$1TESTS\$1EXECUTION\$1TIME\$1OUT:**  
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\$1SERVER\$1DISCONNECT\$1TIME:**  
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\$1EXECUTION\$1TIME:**  
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\$1CONNECTION\$1ATTEMPTS:**  
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\$1PAYLOAD\$1FORMAT:**  
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
<a name="long-duration-test-case-summary-log"></a>

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