

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Device Advisor
<a name="device-advisor"></a>

[Device Advisor](https://aws.amazon.com/iot-core/features/) è una funzionalità di test completamente gestita e basata sul cloud per la convalida dei dispositivi IoT durante lo sviluppo del software dei dispositivi. Device Advisor fornisce test predefiniti che è possibile utilizzare per convalidare i dispositivi IoT per una connettività affidabile e sicura prima di distribuirli in produzione. AWS IoT Core I test predefiniti di Device Advisor consentono di convalidare il software del dispositivo in base alle best practice per l'utilizzo di [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 [Processi IoT](https://docs.aws.amazon.com//iot/latest/developerguide/iot-jobs.html). È inoltre possibile scaricare i rapporti di qualificazione firmati da inviare al Partner Network AWS per ottenere il tuo dispositivo qualificato per il [Catalogo dei dispositivi dei partner dei servizi AWS](https://devices.amazonaws.com/) senza la necessità di inviare il dispositivo e attendere che venga testato.

**Nota**  
Device Advisor è supportato nelle regioni us-east-1, us-west-2, ap-northeast-1 e eu-west-1.  
Device Advisor supporta dispositivi e client che utilizzano i protocolli MQTT e MQTT over WebSocket Secure (WSS) per pubblicare e sottoscrivere messaggi. Tutti i protocolli supportano e. IPv4 IPv6  
Device Advisor supporta i certificati server RSA.

Qualsiasi dispositivo progettato per connettersi AWS IoT Core può sfruttare Device Advisor. Puoi accedere a Device Advisor dalla [AWS IoT console](https://us-east-1.console.aws.amazon.com/iot/home?region=us-east-1#/deviceadvisor/intro) o utilizzando l'SDK AWS CLI o. Quando sei pronto per testare il tuo dispositivo, registralo AWS IoT Core e configura il software del dispositivo con l'endpoint Device Advisor. Quindi scegli i test precompilati, configurali, esegui i test sul tuo dispositivo e ottieni i risultati del test insieme a registri dettagliati o a un rapporto di qualificazione.

Device Advisor è un endpoint di test nel AWS cloud. È possibile testare i dispositivi configurandoli per connettersi all'endpoint di test fornito da Device Advisor. Dopo aver configurato un dispositivo per la connessione all'endpoint di test, puoi visitare la console di Device Advisor o utilizzare l' AWS SDK per scegliere i test da eseguire sui tuoi dispositivi. Device Advisor gestisce quindi l'intero ciclo di vita di un test, incluso il provisioning delle risorse, la programmazione del processo di test, la gestione della macchina a stato, la registrazione del comportamento del dispositivo, la registrazione dei risultati e la fornitura dei risultati finali sotto forma di report di test.

**Protocolli TLS**

Il protocollo Transport Layer Security (TLS) viene utilizzato per crittografare i dati riservati su reti non sicure, ad esempio Internet. Il protocollo TLS è il successore del protocollo Secure Sockets Layer (SSL).

Device Advisor supporta i seguenti protocolli TLS:
+ TLS 1.3 (consigliato)
+ TLS 1.2

**Protocolli, mappature delle porte e autenticazione**

Il protocollo di comunicazione del dispositivo viene utilizzato da un dispositivo o da un client per connettersi al broker di messaggi utilizzando un endpoint del dispositivo. Nella tabella seguente vengono elencati i protocolli supportati dagli endpoint Device Advisor, nonché i metodi di autenticazione e le porte utilizzati.


**Mappature tra protocolli, autenticazione e porte**  

| Protocollo | Operazioni supportate | Autenticazione | Porta | Nome del protocollo ALPN | 
| --- | --- | --- | --- | --- | 
| MQTT su WebSocket | Pubblicazione, sottoscrizione | Signature Version 4 | 443 | N/D | 
| MQTT | Pubblicazione, sottoscrizione | Certificato client X.509 | 8883 | `x-amzn-mqtt-ca` | 
| MQTT | Pubblicazione, sottoscrizione | Certificato client X.509 | 443 | N/D | 

**Topics**
+ [Configurazione](device-advisor-setting-up.md)
+ [Nozioni di base su Device Advisor nella console](da-console-guide.md)
+ [Flusso di lavoro di Device Advisor](device-advisor-workflow.md)
+ [Flusso di lavoro della console dettagliato di Device Advisor](device-advisor-console-tutorial.md)
+ [Flusso di lavoro della console per test di lunga durata](device-advisor-long-duration-console-tutorial.md)
+ [Endpoint VPC di Device Advisor (AWS PrivateLink)](device-advisor-vpc-endpoint.md)
+ [Case test di Device Advisor](device-advisor-tests.md)

# Configurazione
<a name="device-advisor-setting-up"></a>

Prima di utilizzare Device Advisor per la prima volta, completa le seguenti attività:

## Creare un oggetto IoT
<a name="da-create-thing-certificate"></a>

Innanzitutto, crea un oggetto IoT e collega un certificato a tale oggetto. Per un tutorial su come creare oggetti, consultare [Creazione di un oggetto](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing).

## Creazione di un ruolo IAM da utilizzare come ruolo del dispositivo
<a name="da-iam-role"></a>

**Nota**  
È possibile creare rapidamente il ruolo del dispositivo utilizzando la console Device Advisor. Per ulteriori informazioni su come configurare il ruolo del dispositivo con la console Device Advisor, consultare [ Nozioni di base su Device Advisor nella console](https://docs.aws.amazon.com/iot/latest/developerguide/da-console-guide.html).

1. Vai alla [AWS Identity and Access Management console](https://console.aws.amazon.com/iam/home?region=us-west-2#/home) e accedi al file Account AWS che usi per i test di Device Advisor.

1. Nel pannello di navigazione a sinistra scegli **Policies (Policy)**.

1. Scegli **Crea policy**.

1. Sotto **Create Policy (Crea policy)**, effettua le operazioni seguenti:

   1. Per **Service (Servizio)**, scegli **IoT**.

   1. In **Azioni**, esegui una delle seguenti operazioni:
      + (Consigliato) Seleziona le azioni in base alla policy collegata all'oggetto IoT o al certificato creati nella sezione precedente.
      + Cerca le seguenti azioni nella casella **Filtra le azioni** e selezionale:
        + `Connect`
        + `Publish`
        + `Subscribe`
        + `Receive`
        + `RetainPublish`

   1. In **Risorse**, limita il client, l'argomento e le risorse argomento. La limitazione di queste risorse è una best practice di sicurezza. Per limitare le risorse, esegui le seguenti operazioni:

      1. Scegli **Specifica ARN della risorsa client per l'operazione Connect**.

      1. Scegli **Aggiungi ARN**, quindi esegui una delle seguenti operazioni:
**Nota**  
Il *clientId* è l'ID client MQTT utilizzato dal dispositivo per interagire con Device Advisor.
         + Specifica **Regione**, **accountID** e **clientID** nell'editor ARN visivo.
         + Inserisci manualmente gli Amazon Resource Names (ARNs) degli argomenti IoT con cui desideri eseguire i casi di test.

      1. Scegliere **Aggiungi**.

      1. Scegli **Specifica l'ARN della risorsa dell'argomento per la ricezione e un'altra operazione**.

      1. Scegli **Aggiungi ARN**, quindi esegui una delle seguenti operazioni:
**Nota**  
Il *nome argomento* è l'argomento MQTT in cui il dispositivo pubblica i messaggi.
         + Specifica **Regione**, **accountID** e **Nome argomento** nell'editor ARN visivo.
         + Inserisci manualmente gli ARNs argomenti IoT con cui desideri eseguire i tuoi casi di test.

      1. Scegliere **Aggiungi**.

      1. Scegli **Specifica ARN della risorsa topicFilter per l'azione Sottoscrivere**.

      1. Scegli **Aggiungi ARN**, quindi esegui una delle seguenti operazioni:
**Nota**  
Il *nome argomento* è l'argomento MQTT a cui il dispositivo effettua la sottoscrizione.
         + Specifica **Regione**, **accountID** e **Nome argomento** nell'editor ARN visivo.
         + Inserisci manualmente gli ARNs argomenti IoT con cui desideri eseguire i tuoi casi di test.

      1. Scegliere **Aggiungi**.

1. Scegliere **Next: Tags (Successivo: Tag)**.

1. Scegliere **Next:Review (Successivo: Rivedi)**.

1. In **Verifica policy**, immetti un **Nome** per la policy.

1. Scegli **Crea policy**.

1. Nel pannello di navigazione a sinistra seleziona **Roles (Ruoli)**.

1. Selezionare **Crea ruolo**.

1. In **Seleziona un'entità attendibile**, scegli **Policy di attendibilità personalizzata**.

1. Immetti la seguente policy di attendibilità nella casella **Policy di attendibilità personalizzata**. Per prevenire il problema "confused deputy", aggiungi le chiavi di contesto di condizione globali `[aws:SourceArn](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)` e `[aws:SourceAccount](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)` alla policy.
**Importante**  
È necessaria la conformità di `aws:SourceArn` con `format: arn:aws:iotdeviceadvisor:region:account-id:*.`. Assicurati che `region` corrisponda alla regione AWS IoT e che `account-id` corrisponda all'ID dell'account cliente. Per ulteriori informazioni consulta la pagina relativa alla [prevenzione del problema "confused deputy" tra servizi](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. Scegli **Next (Successivo)**.

1. Seleziona la policy creata nella Fase 4.

1. (Opzionale) In **Imposta il limite delle autorizzazioni**, scegli **Utilizza un limite delle autorizzazioni** per controllare il numero massimo di autorizzazioni del ruolo, quindi seleziona la policy creata.

1. Scegli **Next (Successivo)**.

1. Immetti **Role name (Nome del ruolo)** e **Role description (Descrizione del ruolo)**.

1. Scegli **Crea ruolo**.

## Crea una policy gestita su misura per un utente IAM per l'uso di Device Advisor
<a name="da-managed-policy"></a>

1. Accedi alla console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). Se viene richiesto di effettuare l'accesso, immetti le tue credenziali AWS per accedere.

1. Nel riquadro di navigazione sinistro, scegli **Policy**.

1. Seleziona **Create policy (Crea policy)**, quindi scegli la scheda **JSON**. 

1. Aggiungi le autorizzazioni necessarie per utilizzare Device Advisor. Il documento della policy è disponibile nell'argomento relativo alle [best practice per la sicurezza](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html#device-advisor-perms). 

1. Scegli **Esamina la policy**.

1. Immetti il **Name (Nome)** e la **Description (Descrizione)**.

1. Scegli **Crea policy**.

## Crea un utente IAM per utilizzare Device Advisor
<a name="da-iam-user"></a>

**Nota**  
È consigliabile creare un utente IAM da utilizzare durante l'esecuzione di test di Device Advisor. L'esecuzione dei test Device Advisor da un utente amministratore può comportare rischi per la sicurezza e non è consigliata.

1. Accedi alla console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)Se richiesto, inserisci AWS le tue credenziali per accedere.

1. Nel pannello di navigazione a sinistra, seleziona **Users (Utenti)**.

1. Scegli **Add User (Aggiungi utente)**.

1. Immetti un **User name (Nome utente)**.

1. Gli utenti necessitano di un accesso programmatico se desiderano interagire con utenti AWS esterni a. Console di gestione AWS Il modo per concedere l'accesso programmatico dipende dal tipo di utente che accede. AWS

   Per fornire agli utenti l’accesso programmatico, scegli una delle seguenti opzioni.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/device-advisor-setting-up.html)

1. Scegli **Successivo: autorizzazioni**.

1. Per fornire l’accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:
   + Utenti e gruppi in: AWS IAM Identity Center

     Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) (Creazione di un set di autorizzazioni) nella *Guida per l’utente di AWS IAM Identity Center *.
   + Utenti gestiti in IAM tramite un provider di identità:

     Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) della *Guida per l’utente IAM*.
   + Utenti IAM:
     + Crea un ruolo che l’utente possa assumere. Segui le istruzioni riportate nella pagina [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) della *Guida per l’utente IAM*.
     + (Non consigliato) Collega una policy direttamente a un utente o aggiungi un utente a un gruppo di utenti. Segui le istruzioni riportate nella pagina [Aggiunta di autorizzazioni a un utente (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) nella *Guida per l’utente IAM*.

1. Nella casella di ricerca, immetti il nome della policy gestita dal cliente creata. Quindi, seleziona la casella di controllo per **Nome della policy**.

1. Scegliere **Next: Tags (Successivo: Tag)**.

1. Scegliere **Next:Review (Successivo:Rivedi)**.

1. Seleziona **Create user (Crea utente)**.

1. Scegli **Close (Chiudi)**.

Device Advisor richiede l'accesso alle tue AWS risorse (oggetti, certificati ed endpoint) per tuo conto. L'utente IAM deve disporre delle autorizzazioni necessarie. Device Advisor pubblicherà anche i log su Amazon CloudWatch se alleghi la politica di autorizzazioni necessaria al tuo utente IAM.

## Configurazione del dispositivo
<a name="da-configure-device"></a>

Device Advisor utilizza l'estensione TLS (SNI) per applicare le configurazioni di TLS. I dispositivi devono utilizzare questa estensione quando si collegano e passare un nome server identico all'endpoint di test di Device Advisor.

Device Advisor consente la connessione TLS quando un test è nello stato `Running`, ma nega la connessione TLS prima e dopo ogni esecuzione di un test. Per questo motivo, è consigliabile utilizzare il meccanismo di riconnessione del dispositivo per un'esperienza di test completamente automatizzata con Device Advisor. È possibile eseguire gruppi di test che includono più casi di test, ad esempio connessione TLS, connessione MQTT e pubblicazione MQTT. Se si eseguono più casi di test, è opportuno che il dispositivo tenti di connettersi all'endpoint di test ogni cinque secondi. È quindi possibile automatizzare l'esecuzione di più casi di test in sequenza.

**Nota**  
Per preparare il software del dispositivo per il test, è consigliabile utilizzare una SDK in grado di connettersi a AWS IoT Core. Occorre quindi aggiornare l'SDK con l'endpoint di test di Device Advisor fornito per Account AWS.

Device Advisor supporta due tipi di endpoint: endpoint a livello di account ed endpoint a livello di dispositivo. Scegli l'endpoint che meglio si adatta al tuo caso d'uso. Per eseguire contemporaneamente più gruppi di test per dispositivi differenti, utilizza un endpoint a livello di dispositivo. 

Eseguire il seguente comando per ottenere l'endpoint a livello di dispositivo:

Per i clienti MQTT che utilizzano certificati client X.509:

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

or

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

Per i WebSocket clienti che utilizzano la versione 4 di MQTT che utilizzano Signature:

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

Per eseguire una suite di test alla volta, scegli un endpoint a livello di account. Esegui il seguente comando per ottenere l'endpoint a livello di account:

```
aws iotdeviceadvisor get-endpoint
```

# Nozioni di base su Device Advisor nella console
<a name="da-console-guide"></a>

Questo tutorial ti aiuta a iniziare a usare AWS IoT Core Device Advisor la console. Device Advisor offre funzionalità quali i test obbligatori e i report di qualifica firmati. È possibile utilizzare questi test e report per qualificare ed elencare i dispositivi nel [Catalogo dei dispositivi dei Partner AWS](https://devices.amazonaws.com/), come illustrato in [AWS IoT Core qualification program](https://aws.amazon.com/partners/dqp/).

Per ulteriori informazioni sull'utilizzo di Device Advisor, consulta [Flusso di lavoro di Device Advisor](device-advisor-workflow.md) e [Flusso di lavoro della console dettagliato di Device Advisor](device-advisor-console-tutorial.md).

Per completare questo tutorial, attieniti alla procedura illustrata in [Configurazione](device-advisor-setting-up.md).

**Nota**  
Device Advisor è supportato nelle seguenti versioni Regioni AWS:  
Stati Uniti orientali (Virginia settentrionale)
Stati Uniti occidentali (Oregon)
Asia Pacifico (Tokyo)
Europa (Irlanda)

**Nozioni di base**

1. Nel pannello di navigazione della [console AWS IoT](https://console.aws.amazon.com//iot) in **Test**, scegli **Device Advisor**. Quindi, scegli il pulsante **Avvia la spiegazione passo per passo** sulla console.  
![\[Device Advisor è una funzionalità di test completamente gestita per i dispositivi IoT con cui convalidare interazioni sicure AWS IoT Core, identificare problemi software e ottenere risultati dei test.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-gs.png)

1. Nella pagina **Nozioni di base su Device Advisor** viene fornita una panoramica dei passaggi richiesti per creare una suite di test ed eseguire test sul dispositivo. Qui è anche possibile trovare l'endpoint di test di Device Advisor per il proprio account. Per eseguire la connessione a questo endpoint di test, è necessario configurare il firmware o il software sul dispositivo utilizzato per il test.

   Per completare questo tutorial, devi prima [creare un oggetto e un certificato](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html#da-create-thing-certificate). Dopo aver esaminato le informazioni nella sezione **Come funziona**, scegli **Avanti**.  
![\[Passaggi per testare la connettività dei dispositivi IoT: selezione del protocollo, creazione di suite di test, configurazione delle impostazioni del dispositivo.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-gs1.png)

1.  Nella **Fase 1: Selezione di un protocollo**, seleziona un protocollo dalle opzioni elencate. Quindi, seleziona **Successivo**.  
![\[Interfaccia Device Advisor che mostra le opzioni per selezionare un protocollo di comunicazione (MQTT 3.1.1, MQTT 3.1.1 over WebSocket, MQTT 5 over) WebSocket per testare un dispositivo IoT.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-protocol.png)

1. In **Step 2 (Fase 2)**, è possibile creare e configurare una suite di test personalizzata. Una suite di test personalizzata deve avere almeno un gruppo di test e ogni gruppo di test deve avere almeno un test case. Abbiamo aggiunto il test case **MQTT Connect (Collegamento MQTT)** per iniziare.

   Scegli **Test suite properties (Proprietà della suite di test)**.   
![\[La schermata «Crea suite di test» in Device Advisors, in cui gli utenti possono creare e configurare gruppi di test e casi per testare i dispositivi IoT con il protocollo MQTT.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-test-suite-create.png)

   Fornisci le proprietà della suite di test quando crei la tua suite di test. È possibile configurare le seguenti proprietà a livello di suite:
   + **Test suite name (Nome della suite di test)**: Inserisci un nome per la suite di test.
   + **Timeout** (facoltativo): il timeout (in secondi) per ogni caso di test nella suite di test corrente. Se non specifichi un valore di timeout, viene utilizzato il valore predefinito.
   + **Tags (Tag)** (facoltativo): Aggiungi tag alla suite di test.

   Al termine, scegli **Update properties** (Aggiorna proprietà).  
![\[Modulo per aggiornare le proprietà di una suite di test, inclusi nome, timeout e possibilità di aggiungere tag. Contiene un pulsante «Aggiorna proprietà».\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-test-suite-properties.png)

1. (Facoltativo) Per aggiornare la configurazione del gruppo di suite di test, scegli il pulsante **Modifica** accanto al nome del gruppo di test.
   + **Name (Nome)**: inserisci un nome personalizzato per il gruppo della suite di test.
   + **Timeout** (facoltativo): il timeout (in secondi) per ogni caso di test nella suite di test corrente. Se non specifichi un valore di timeout, viene utilizzato il valore predefinito.

   Al termine, scegli **Fine** per continuare.  
![\[Viene visualizzato un gruppo di test denominato «Gruppo di test 1" con opzioni per configurare il timeout e aggiungere altri gruppi di test.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-test-suite-config.png)

1. (Facoltativo) Per aggiornare la configurazione del caso di test per un caso di test, scegli il pulsante **Modifica** accanto al nome del caso di test.
   + **Name (Nome)**: inserisci un nome personalizzato per il gruppo della suite di test.
   + **Timeout** (facoltativo): il timeout (in secondi) per il caso di test selezionato. Se non specifichi un valore di timeout, viene utilizzato il valore predefinito.

   Al termine, scegli **Fine** per continuare.  
![\[L'interfaccia «Create test suite» che mostra le opzioni per configurare una suite di test, gruppi di test e singoli casi di test per testare i dispositivi IoT.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-test-case-config.png)

1. (Facoltativo) Per aggiungere altri gruppi di test alla suite di test, scegli **Aggiungi un gruppo di test** e segui le istruzioni nella Fase 5.

1. (Facoltativo) Per aggiungere altri casi di test, trascina i casi di test nella sezione **Casi di test** in uno qualsiasi dei gruppi di test.  
![\[L'interfaccia «Create test suite» in cui gli utenti possono configurare gruppi di test e casi di test per il test del protocollo MQTT dei dispositivi IoT.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-drag.png)

1. Puoi modificare l'ordine dei gruppi di test e dei casi di test. Per apportare modifiche, trascina i casi di test elencati verso l'alto o verso il basso nell'elenco. Device Advisor esegue i test nell'ordine in cui sono stati elencati.

   Dopo aver configurato la suite di test, scegli **Next (Successivo)**.

1. Nel **passaggio 3**, seleziona un AWS IoT elemento o un certificato da testare utilizzando Device Advisor. Se non sono presenti elementi o certificati esistenti, consulta [Configurazione](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html).   
![\[Le opzioni di configurazione che includono la selezione di un protocollo, la creazione di una suite di test, la configurazione delle impostazioni del dispositivo e la revisione delle esecuzioni e dei risultati dei test.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-device-settings.png)

1. È possibile configurare un ruolo del dispositivo utilizzato da Device Advisor per eseguire azioni AWS IoT MQTT per conto del dispositivo di test. Solo per il caso di test **Connessione MQTT**, l'operazione **Connettersi** viene selezionata automaticamente. Questo perché il ruolo del dispositivo richiede questa autorizzazione per eseguire la suite di test. Per altri casi di test, vengono selezionate le operazioni corrispondenti. 

   Fornisci i valori delle risorse per ciascuna operazione selezionata. Ad esempio, per l'azione **Connettersi**, fornisci l'ID client utilizzato dal dispositivo per connettersi all'endpoint Device Advisor. Puoi fornire più valori con valori separati da virgole e valori prefisso con un carattere jolly (\$1). Ad esempio, per fornire l'autorizzazione per pubblicare su qualsiasi argomento che inizia con `MyTopic`, immetti **MyTopic\$1** come valore della risorsa.  
![\[L'interfaccia Device Advisor in cui è possibile selezionare un ruolo del dispositivo e definire le autorizzazioni per la connessione, la pubblicazione, la sottoscrizione e la gestione di argomenti e client MQTT. IDs\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-device-role.png)

   Per utilizzare un ruolo del dispositivo creato in precedenza da [Impostazione](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html), scegli **Seleziona ruolo esistente**. Quindi scegli il ruolo del dispositivo in **Seleziona ruolo**.  
![\[Un'interfaccia web per la selezione di un ruolo del dispositivo, con opzioni per creare un nuovo ruolo o selezionare un ruolo esistente denominato "». DeviceAdvisorServiceRole\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-select-device-role.png)

   Configura il ruolo del dispositivo utilizzando una delle due opzioni fornite, quindi scegli **Avanti**.

1. Nella sezione **Endpoint di test**, seleziona l'endpoint più adatto al caso d'uso. Per eseguire più suite di test contemporaneamente con la stessa suite Account AWS, seleziona Endpoint a **livello di dispositivo**. Per eseguire una suite di test alla volta, seleziona **Endpoint a livello di account**.  
![\[Opzioni per selezionare un endpoint a livello di account o dispositivo per il test, con un URL dell'endpoint fornito e il pulsante Avanti.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-endpoint.png)

1. Nella **Fase 4** viene illustrata una panoramica del dispositivo di test, dell'endpoint di test, della suite di test e del ruolo del dispositivo di test selezionati e configurati. Per apportare modifiche a una sezione, scegli il pulsante **Modifica** relativo alla sezione che desideri modificare. Dopo aver confermato la configurazione del test, scegli **Esegui** per creare la suite di test ed eseguire i test.
**Nota**  
Per risultati ottimali, puoi collegare il dispositivo di test selezionato all'endpoint di test di Device Advisor prima di avviare l'esecuzione della suite di test. Si consiglia di disporre di un meccanismo creato per il dispositivo per provare a connettersi all'endpoint di test ogni cinque secondi per uno o due minuti.  
![\[Una console di configurazione del dispositivo che mostra i dettagli del ruolo del dispositivo, l'endpoint di test e le opzioni per annullare, ripristinare o eseguire.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-device-review.png)  
![\[Una console di configurazione del dispositivo che mostra i dettagli del ruolo del dispositivo, l'endpoint di test e le opzioni per annullare, ripristinare o eseguire.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-device-review-contd.png)

1. Nel pannello di navigazione, in **Test**, scegli **Device Advisor**, quindi seleziona **Esecuzioni di test e risultati**. Seleziona l'esecuzione di una suite di test per visualizzare i dettagli e i log.  
![\[L'interfaccia della suite di test che indica un test MQTT 3.1.1 è in corso per il dispositivo "». MyThing\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-console-runs-results.png)

1. Per accedere ai CloudWatch log di Amazon per la suite, esegui:
   + Scegli **Test suite log** per visualizzare CloudWatch i log relativi all'esecuzione della suite di test.
   + Scegli **Test case log** per qualsiasi test case per visualizzare i log specifici del test case CloudWatch .

1. In base ai risultati del test, [risolvi i problemi](https://docs.aws.amazon.com/iot/latest/developerguide/iot_troubleshooting.html#device-advisor-troubleshooting) del tuo dispositivo fino a quando tutti i test vengono superati.

# Flusso di lavoro di Device Advisor
<a name="device-advisor-workflow"></a>

In questo tutorial viene descritto come creare una suite di test personalizzata ed eseguire test sul dispositivo che si desidera testare nella console. Dopo aver completato i test, è possibile visualizzare i risultati del test e i registri dettagliati.

## Prerequisiti
<a name="device-advisor-workflow-prereqs"></a>

Prima di iniziare questo tutorial, completa la procedura illustrata in [Configurazione](device-advisor-setting-up.md).

## Crea una definizione di suite di test
<a name="device-advisor-workflow-create-suite-definition"></a>

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

### `rootGroup` sintassi
<a name="rootGroup"></a>

Un gruppo root è una stringa JSON che specifica quali casi di test includere nella suite di test. Inoltre, consente di specificare le eventuali configurazioni necessarie per tali casi di test. Utilizza il gruppo root per strutturare e ordinare la suite di test in base alle tue esigenze. La gerarchia di una suite di test è: 

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

Una suite di test deve avere almeno un gruppo di test e ogni gruppo di test deve avere almeno un test case. Device Advisor esegue i test nell'ordine in cui vengono definiti i gruppi di test e i test case.

Ogni gruppo radice segue questa struttura di base:

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



Nel gruppo root, definisci la suite di test con un `name`, `configuration` e i `tests` contenuti nel gruppo. Il gruppo `tests` contiene le definizioni di singoli test. Definisci ogni test con un `name`, `configuration` e un blocco `test` che definisce i casi di test per tale test. Infine, ogni caso di test è definito con un `id` e una `version`.

Per informazioni su come utilizzate i campi `"id"` e `"version"` per ogni caso di test (blocco `test`), consultare [Case test di Device Advisor](device-advisor-tests.md). Questa sezione contiene anche informazioni sulle impostazioni `configuration` disponibili.

Il blocco seguente è un esempio di configurazione del gruppo root. Queste configurazioni specificano i casi di test *MQTT Connect Happy Case* e *MQTT Connect Exponential Backoff Retries*, insieme alle descrizioni dei campi di configurazione.

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

È necessario fornire la configurazione del gruppo radice quando si crea la definizione della suite di test. Salva il `suiteDefinitionId` restituito nell'oggetto di risposta. Puoi utilizzare questo ID per recuperare le informazioni sulla definizione della suite di test ed eseguire la suite di test.

Ecco un esempio di Java SDK:

```
response = iotDeviceAdvisorClient.createSuiteDefinition(
        CreateSuiteDefinitionRequest.builder()
            .suiteDefinitionConfiguration(SuiteDefinitionConfiguration.builder()
                .suiteDefinitionName("your-suite-definition-name")
                .devices(
                    DeviceUnderTest.builder()
                        .thingArn("your-test-device-thing-arn")
                        .certificateArn("your-test-device-certificate-arn")
                        .deviceRoleArn("your-device-role-arn") //if using SigV4 for MQTT over WebSocket
                        .build()
                )
                .rootGroup("your-root-group-configuration")
                .devicePermissionRoleArn("your-device-permission-role-arn")
                .protocol("MqttV3_1_1 || MqttV5 || MqttV3_1_1_OverWebSocket || MqttV5_OverWebSocket")
                .build()
            )
            .build()
)
```

## Ottieni una definizione di suite di test
<a name="device-advisor-workflow-describe-suite-run"></a>

Dopo aver creato la definizione della suite di test, riceverai `suiteDefinitionId` nell'oggetto risposta dell'operazione API `CreateSuiteDefinition`.

Quando l'operazione restituisce il `suiteDefinitionId`, è possibile che vengano visualizzati nuovi campi `id` all'interno di ciascun gruppo e definizione del caso di test all'interno del gruppo root. Puoi usarli IDs per eseguire un sottoinsieme della definizione della tua suite di test.

Esempio di Java SDK: 

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

## Ottieni un endpoint di test
<a name="device-advisor-workflow-get-test-endpoint"></a>

Utilizza l'operazione API `GetEndpoint` per ottenere l'endpoint di test utilizzato dal dispositivo. Seleziona l'endpoint più adatto al tuo test. Per eseguire contemporaneamente più suite di test, utilizza l'endpoint a livello di dispositivo fornendo un `thing ARN`, `certificate ARN` o `device role ARN`. Per eseguire una singola suite di test, non fornire argomenti all' GetEndpoint operazione di scelta dell'endpoint a livello di account. 

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

## Avvia una suite di test
<a name="device-advisor-workflow-start-suite-run"></a>

Dopo che hai creato una definizione della suite di test e configurato il dispositivo di test per la connessione all'endpoint di test Device Advisor, esegui la suite di test con l'API `StartSuiteRun`. 

Per i clienti MQTT, utilizza `certificateArn` o `thingArn` per eseguire la suite di test. Se entrambi sono configurati, il certificato viene utilizzato se appartiene all'oggetto.

Per MQTT over WebSocket customer, utilizzare `deviceRoleArn` per eseguire la suite di test. Se il ruolo specificato è diverso da quello descritto nella definizione della suite di test, il ruolo specificato sostituisce il ruolo definito.

Per `.parallelRun()`, utilizza `true` se l'endpoint a livello di dispositivo viene utilizzato per eseguire più suite di test in parallelo utilizzando un Account AWS.

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

Salva la `suiteRunId` dalla risposta. Lo utilizzerai per recuperare i risultati dell'esecuzione di questa suite di test.

## Ottieni un'esecuzione della suite di test
<a name="device-advisor-workflow-describe-suite"></a>

Dopo aver avviato un'esecuzione di suite di test, è possibile verificarne lo stato di avanzamento e i risultati con l'API `GetSuiteRun`.

Esempi di SDK:

```
// Using the SDK, call the GetSuiteRun API.

response = iotDeviceAdvisorClient.GetSuiteRun(
GetSuiteRunRequest.builder()
    .suiteDefinitionId("your-suite-definition-id")
    .suiteRunId("your-suite-run-id")
.build())
```

## Interrompi l'esecuzione di una suite di test
<a name="device-advisor-workflow-stop-suite-run"></a>

Per interrompere l'esecuzione di una suite di test ancora in corso, puoi chiamare l'operazione API `StopSuiteRun`. Dopo aver chiamato l'operazione API `StopSuiteRun`, il servizio avvia il processo di pulizia. Mentre il servizio esegue il processo di pulizia, lo stato di esecuzione della suite di test viene aggiornato a `Stopping`. Il processo di pulizia può richiedere alcuni minuti. Una volta completato il processo, lo stato di esecuzione della suite di test viene aggiornato a `Stopped`. Dopo che un'esecuzione di test si è completamente interrotta, puoi avviare un'altra esecuzione di suite di test. Puoi controllare periodicamente lo stato di esecuzione della suite utilizzando l'operazione API `GetSuiteRun`, come illustrato nella sezione precedente. 

Esempi di SDK:

```
// Using the SDK, call the StopSuiteRun API.

response = iotDeviceAdvisorClient.StopSuiteRun(
StopSuiteRun.builder()
    .suiteDefinitionId("your-suite-definition-id")
    .suiteRunId("your-suite-run-id")
.build())
```

## Ottieni un rapporto di qualificazione per una suite di test di qualificazione riuscita
<a name="device-advisor-workflow-qualification-report"></a>

Se esegui una suite di test di qualifica completata correttamente, puoi recuperare un report di qualifica con l'operazione API `GetSuiteRunReport`. Utilizza questo report di qualifica per qualificare il dispositivo con il Programma di idoneità di AWS IoT Core . Per determinare se la suite di test è una suite di test di qualificazione, verifica se il parametro `intendedForQualification` è impostato su `true`. Dopo aver chiamato l'operazione API `GetSuiteRunReport`, puoi scaricare il report dall'URL restituito per un massimo di 90 secondi. Se trascorrono più di 90 secondi dalla precedente chiamata dell'operazione `GetSuiteRunReport`, chiama nuovamente l'operazione per recuperare un nuovo URL valido. 

Esempi di SDK:

```
// Using the SDK, call the getSuiteRunReport API. 

response = iotDeviceAdvisorClient.getSuiteRunReport( 
    GetSuiteRunReportRequest.builder() 
        .suiteDefinitionId("your-suite-definition-id")
        .suiteRunId("your-suite-run-id")
        .build()
)
```

# Flusso di lavoro della console dettagliato di Device Advisor
<a name="device-advisor-console-tutorial"></a>

In questo tutorial, creerai una suite di test personalizzata ed eseguirai test sul dispositivo che desideri testare nella console. Dopo aver completato i test, è possibile visualizzare i risultati del test e i registri dettagliati.

**Topics**
+ [Prerequisiti](#da-detailed-prereqs)
+ [Crea una definizione di suite di test](#device-advisor-console-create-suite)
+ [Avvia una suite di test](#device-advisor-console-run-test-suite)
+ [Interrompi l'esecuzione di una suite di test (facoltativo)](#device-advisor-stop-test-run)
+ [Visualizza i dettagli e i registri di esecuzione della suite](#device-advisor-console-view-logs)
+ [Scarica un rapporto di AWS IoT qualificazione](#device-advisor-console-qualification-report)

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

Per completare questo tutorial, è necessario [ creare un oggetto e un certificato](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html#da-create-thing-certificate).

## Crea una definizione di suite di test
<a name="device-advisor-console-create-suite"></a>

Crea una suite di test in modo da poterla eseguire sui tuoi dispositivi ed eseguire la verifica.

1. Nella [console AWS IoT](https://console.aws.amazon.com//iot), nel pannello di navigazione, espandi **Test**, **Device Advisor** e scegli **Test suites (Suite di test)**.  
![\[L'interfaccia Device Advisor con opzioni per creare suite di test per dispositivi idonei, eseguire test di lunga durata e suite di test personalizzate.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-testsuite.png)

   Scegli **Create test suite (Crea suite di test)**.

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

   Per il protocollo, scegli **MQTT 3.1.1** o **MQTT 5**.  
![\[«Crea suite di test» con opzioni per scegliere il tipo di suite di test (AWS IoT Core qualificazione, lunga durata o personalizzata) e il protocollo (MQTT 3.1.1 o MQTT 5).\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-create-test-suite.png)

   Seleziona questa opzione `Use the AWS Qualification test suite` e inserisci il tuo dispositivo nel Partner Device Catalog. AWS Scegliendo questa opzione, preselezioni i test case necessari per la qualificazione del dispositivo al programma di qualificazione AWS IoT Core . I gruppi di test e i test case non possono essere aggiunti o rimossi. Dovrai comunque configurare le proprietà della suite di test.

   Scegli `Create a new test suite` per creare e configurare una suite di test personalizzata. Si consiglia di iniziare con questa opzione per il test iniziale e la risoluzione dei problemi. Una suite di test personalizzata deve avere almeno un gruppo di test e ogni gruppo di test deve avere almeno un test case. Ai fini di questo tutorial, selezioneremo questa opzione e sceglieremo **Next (Successivo)**.  
![\[Pagina di configurazione della suite di test che mostra i passaggi per creare una suite di test con gruppi di test e casi per testare i dispositivi IoT.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-configure-test-suite.png)

1. Scegli **Test suite properties (Proprietà della suite di test)**. È necessario creare le proprietà della suite di test quando crei la suite di test.  
![\[L'interfaccia «Configure test suite» che mostra le opzioni per creare gruppi di test e aggiungere casi di test per testare la funzionalità dei dispositivi IoT.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-test-suite-properties.png)

   Sotto **Test suite properties (Proprietà della suite di test)**, compila quanto segue:
   + **Test suite name (Nome della suite di test)**: è possibile creare la suite con un nome personalizzato.
   + **Timeout** (facoltativo): il timeout in secondi per ogni test case nella suite di test corrente. Se non specifichi un valore di timeout, viene utilizzato il valore predefinito.
   + **Tags (Tag)** (facoltativo): Aggiungi tag alla suite di test.  
![\[Finestra intitolata «Proprietà della suite di test» che mostra i campi per specificare il nome della suite di test, il timeout e i tag personalizzati per una suite demo di Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-test-suite-properties-1.png)

   Al termine, scegli **Update properties (Aggiorna proprietà)**.

1. Per modificare la configurazione a livello di gruppo, in `Test group 1`, scegli **Edit (Modificare)**. Immetti poi un **Name (Nome)** per assegnare al gruppo un nome personalizzato. 

   Facoltativamente, è anche possibile inserire un valore di **Timeout** in secondi sotto il gruppo di test selezionato. Se non specifichi un valore di timeout, viene utilizzato il valore predefinito.  
![\[L'interfaccia «Configure test suite» per la creazione di gruppi di test e casi per convalidare la funzionalità dei dispositivi IoT.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-edit-test-group.png)

   Seleziona **Fatto**.

1. Trascina uno dei test case disponibili da **Test cases (Test case)** nel gruppo di test.  
![\[L'interfaccia di configurazione per la creazione di una suite di test in Device Advisor, con opzioni per aggiungere gruppi di test e casi di test per testare i dispositivi IoT.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-configure-test-suite-step5.png)

1. Per modificare la configurazione a livello di test case per il test case aggiunto nel gruppo di test, scegli **Edit (Modifica)**. Immetti poi un **Name (Nome)** per assegnare al gruppo un nome personalizzato. 

   Facoltativamente, è anche possibile inserire un valore di **Timeout** in secondi sotto il gruppo di test selezionato. Se non specifichi un valore di timeout, viene utilizzato il valore predefinito.  
![\[Interfaccia di configurazione della suite di test con opzioni per configurare gruppi di test, casi di test, impostazioni di timeout e punti di partenza per l'esecuzione della suite di test.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-edit-test-case.png)

   Seleziona **Fatto**.
**Nota**  
Per aggiungere altri gruppi di test alla suite di test, scegli **Add test group (Aggiungi gruppo di test)**. Segui i passaggi precedenti per creare e configurare più gruppi di test o aggiungere più test case a uno o più gruppi di test. I gruppi di test e i test case possono essere riordinati scegliendo e trascinando un test case nella posizione desiderata. Device Advisor esegue i test nell'ordine in cui vengono definiti i gruppi di test e i test case.

1. Scegli **Next (Successivo)**.

1. Nella **fase 3**, configura un ruolo del dispositivo che Device Advisor utilizzerà per eseguire azioni AWS IoT MQTT per conto del dispositivo di test.

   Se hai selezionato il test case **MQTT Connect** solo in **Step 2 (Fase 2)**, l'operazione **Connect (Collegarsi)** verrà controllata automaticamente poiché è richiesta l'autorizzazione sul ruolo del dispositivo per eseguire questa suite di test. Se hai selezionato altri test case, verranno controllate le operazioni richieste corrispondenti. Assicurarsi che siano forniti i valori delle risorse per ciascuna operazione. Ad esempio, per l'operazione **Connect (Collegarsi)**, fornisci l'ID client con cui il dispositivo si connetterà all'endpoint Device Advisor. È possibile fornire più valori utilizzando virgole per separare i valori e fornire valori di prefisso utilizzando anche un carattere jolly (\$1). Ad esempio, per fornire l'autorizzazione per la pubblicazione su qualsiasi argomento che inizia con `MyTopic`, è possibile fornire "`MyTopic*`" come valore della risorsa.  
![\[Il passaggio «Seleziona un ruolo del dispositivo» in Device Advisor per creare una suite di test, con opzioni per creare un nuovo ruolo o selezionare un ruolo esistente e campi per specificare il nome del ruolo, le autorizzazioni e i dettagli delle risorse.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-connect-role.png)

   Se hai già creato un ruolo del dispositivo in precedenza e desideri utilizzare tale ruolo, seleziona **Select an existing role (Seleziona un ruolo esistente)** e scegli il ruolo del tuo dispositivo in **Select role (Seleziona ruolo)**.  
![\[La pagina per la selezione di un ruolo del dispositivo per il test di Device Advisor, con opzioni per creare un nuovo ruolo o selezionarne uno esistente.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-existing-role.png)

   Configura il ruolo del dispositivo utilizzando una delle due opzioni fornite e scegli **Next (Successivo)**.

1. In **Step 4 (Fase 4)**, assicurati che la configurazione fornita in ciascuno dei passaggi sia accurata. Per modificare la configurazione fornita per un particolare passaggio, scegli **Edit (Modifica)** per il passaggio corrispondente.

   Dopo aver verificato la configurazione, scegli **Create test suite (Crea suite di test)**.

   La suite di test dovrebbe essere creata con successo e verrai reindirizzato alle **Test suites (Suite di test)** dove è possibile visualizzare tutte le suite di test che sono state create.

   Se la creazione della suite di test non è riuscita, assicurati che la suite di test, i gruppi di test, i test case e ruolo del dispositivo siano stati configurati in base alle istruzioni.

## Avvia una suite di test
<a name="device-advisor-console-run-test-suite"></a>

1. Nell’[AWS IoT console](https://console.aws.amazon.com//iot), nel pannello di navigazione, espandi **Test**, **Device Advisor**, quindi scegli **Test suites (Suite di test)**.

1. Scegli la suite di test per la quale desideri visualizzare i dettagli.  
![\[La console che mostra una singola suite di test denominata «Device advisor demo suite» creata l'11 maggio 2021.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-test-suites.png)

   La pagina dei dettagli della suite di test mostra tutte le informazioni relative alla suite di test.

1. Scegli **Actions (Operazioni)**, quindi **Run test suite (Esegui suite di test)**.  
![\[La pagina della suite demo con un pulsante «Run test suite» e un registro delle attività vuoto che mostra l'assenza di esecuzioni precedenti della suite di test.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-run-test-suites.png)

1. In **Run configuration**, dovrai selezionare un AWS IoT elemento o un certificato da testare utilizzando Device Advisor. Se non disponi di elementi o certificati esistenti, [crea innanzitutto AWS IoT Core delle risorse](device-advisor-setting-up.md). 

   Nella sezione **Test endpoint (Endpoint di test)** seleziona l'endpoint più adatto al tuo caso. Se prevedi di eseguire più suite di test contemporaneamente utilizzando lo stesso AWS account in futuro, seleziona Endpoint a **livello di dispositivo**. In caso contrario, se prevedi di eseguire una sola suite di test alla volta, seleziona **Account-level endpoint (Endpoint a livello di account)**.

   Configurare il dispositivo di test con l'endpoint di test del Device Advisor selezionato.

   Dopo aver selezionato un oggetto o un certificato e aver scelto un endpoint Device Advisor, scegli **Run test (Esegui test)**.  
![\[La configurazione per l'esecuzione di una suite di test AWS IoT Core, che consente di selezionare dispositivi di test (oggetti o certificati), scegliere un endpoint di test (a livello di account o dispositivo) e, facoltativamente, aggiungere tag.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-choose-thing-certificate.png)

1. Scegli **Go to results (Accedi ai risultati)** nel banner superiore per visualizzare i dettagli dell'esecuzione del test.  
![\[Dettagli di una suite di test personalizzata denominata «Device Advisor demo suite» in corso con lo stato «In sospeso».\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-test-run-results.png)

## Interrompi l'esecuzione di una suite di test (facoltativo)
<a name="device-advisor-stop-test-run"></a>

1. Nell’[AWS IoT console](https://console.aws.amazon.com//iot), nel pannello di navigazione, espandi **Test**, **Device Advisor**, quindi scegli **Test runs and results (Esecuzioni di test e risultati)**.

1. Scegli la suite di test in corso che desideri arrestare.  
![\[I risultati del test vengono eseguiti sulla console Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-test-suite-to-stop.PNG)

1. Scegli **Actions (Operazioni)**, quindi **Stop test suite (Arresto delle suite di test)**.  
![\[I risultati del test vengono eseguiti sulla console Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-stop-test-suite.PNG)

1. Il processo di pulizia può richiedere alcuni minuti per il completamento. Mentre il processo di pulizia è in corso, lo stato di esecuzione del test sarà `STOPPING`. Attendi che il processo di pulizia sia completo e che lo stato della suite di test passi a `STOPPED` prima di iniziare una nuova esecuzione della suite.  
![\[I risultati interrotti del test vengono eseguiti sulla console Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-stopped-test-suite.PNG)

## Visualizza i dettagli e i registri di esecuzione della suite
<a name="device-advisor-console-view-logs"></a>

1. Nell’[AWS IoT console](https://console.aws.amazon.com//iot), nel pannello di navigazione, espandi **Test**, **Device Advisor** quindi scegli **Test runs and results (Esecuzioni di test e risultati)**.

   Questa pagina mostra:
   + Numero di oggetti IoT
   + Numero di certificati IoT
   + Numero di suite di test attualmente in esecuzione
   + Tutte le esecuzioni della suite di test che sono state create

1. Scegli la suite di test per la quale desideri visualizzare i dettagli e registri di esecuzione.  
![\[Una sezione Esecuzioni e risultati dei test che mostra i dettagli di una suite di test denominata «Device Advisor demo suite» attualmente in corso.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-test-suite-run.png)

   La pagina di riepilogo dell’esecuzione visualizza lo stato dell'esecuzione corrente della suite di test. Questa pagina viene aggiornata automaticamente ogni 10 secondi. Si consiglia di disporre di un meccanismo creato per il dispositivo per provare a connettersi al nostro endpoint di test ogni cinque secondi per uno o due minuti. Dopodiché puoi eseguire più casi di test in sequenza in modo automatico.  
![\[Il registro del test case che mostra un test MQTT Connect riuscito senza che venga visualizzato alcun messaggio di sistema.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-run-summary.png)

1. Per accedere ai CloudWatch log relativi all'esecuzione della suite di test, scegliete **Test suite** log.

   Per accedere ai CloudWatch log di qualsiasi test case, scegli **Test case** log.

1. In base ai risultati del test, [risolvi i problemi](https://docs.aws.amazon.com/iot/latest/developerguide/iot_troubleshooting.html#device-advisor-troubleshooting) del tuo dispositivo fino a quando tutti i test vengono superati.

## Scarica un rapporto di AWS IoT qualificazione
<a name="device-advisor-console-qualification-report"></a>

Se hai scelto l'opzione **Usa la suite di test di AWS IoT qualificazione** durante la creazione di una suite di test e sei riuscito a eseguire una suite di test di qualificazione, puoi scaricare un rapporto di qualificazione selezionando Scarica rapporto di qualificazione nella pagina di **riepilogo dell'**esecuzione del test.

![\[Risultati dei test del Qualification Program che mostrano i test superati per MQTT, TLS e altri componenti.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/da-qualification-report.png)


# Flusso di lavoro della console per test di lunga durata
<a name="device-advisor-long-duration-console-tutorial"></a>

Questo tutorial consente di iniziare a utilizzare test di lunga durata su Device Advisor utilizzando la console. Per completare il tutorial, attenersi alle fasi descritte in [Configurazione](device-advisor-setting-up.md).

1.  Nel pannello di navigazione [Console AWS IoT](https://console.aws.amazon.com/iot), espandi **Test**, **Device Advisor**, quindi **Test suites** (Suite di test). Nella pagina, seleziona **Create long duration test suite** (Crea suite di test di lunga durata).   
![\[La sezione Crea suite di test di lunga durata della console Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/create-ld-ts.png)

1.  Nella pagina **Create test suite** (Crea suite di test), seleziona **Long duration test suite** (Suite di test di lunga durata) e scegli **Next** (Avanti). 

   Per il protocollo, scegli **MQTT 3.1.1** o **MQTT 5**.  
![\[La fase Create test suite della console Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/choose-ld-ts.png)

1. Nella pagina **Configure test suite** (Configura la suite di test), esegui le seguenti operazioni:

   1. Aggiorna il campo **Test suite name** (Nome suite di test).

   1. Aggiorna il campo **Test group name** (Nome del gruppo di test).

   1. Scegli le **Device operations** (Operazioni del dispositivo) che il dispositivo può eseguire. Verranno selezionati i test da eseguire.

   1. Seleziona l'opzione **Settings** (Impostazioni).  
![\[La fase Create test suite della console Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/configure-ld-ts.png)

1. (Facoltativo) Inserisci il periodo di tempo massimo per cui Device Advisor deve attendere il completamento dei test di base. Seleziona **Salva**.  
![\[La casella «Timeout opzionale» per i «Test di base» della console Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/timeout-ld-ts.png)

1.  Esegui le seguenti operazioni nelle sezioni **Advanced tests** (Test avanzati) e **Additional settings** (Impostazioni aggiuntive). 

   1. Seleziona o deseleziona **Advanced tests** (Test avanzati) che desideri eseguire come parte di questo test.

   1. **Modifica** le configurazioni per i test, se necessario.

   1. Configura l'opzione **Additional execution time** (Tempo di esecuzione aggiuntivo) nella sezione **Additional settings** (Impostazioni aggiuntive).

   1. Scegli **Next** (Avanti) per eseguire il passaggio successivo.  
![\[L'interfaccia Device Advisor che consente di configurare ed eseguire test su dispositivi IoT.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/additional-ld-ts.png)

1.  In questo passaggio, seleziona **Create a new role** (Crea un nuovo ruolo) o **Select an existing role** (Seleziona un ruolo esistente). Per informazioni dettagliate, vedi [Creazione di un ruolo IAM da utilizzare come ruolo del dispositivo](device-advisor-setting-up.md#da-iam-role).   
![\[La fase del ruolo del dispositivo in cui è possibile creare un nuovo ruolo o selezionare un ruolo esistente per il dispositivo da testare. Il ruolo concede a Device Advisor le autorizzazioni per eseguire azioni MQTT come Connect, Publish e Subscribe per conto del dispositivo di test.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/devicerole-ld-ts.png)

1.  Esamina tutte le configurazioni create fino a questo passaggio e seleziona **Create test suite** (Crea suite di test).   
![\[La pagina «Revisione» in cui è possibile esaminare tutti i dettagli della configurazione di Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/finalconfigure1-ld-ts.png)  
![\[La pagina di configurazione in cui è possibile visualizzare tutti i dettagli di Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/finalconfigure2-ld-ts.png)

1.  La suite di test creata si trova nella sezione **Test suites** (Suite di test). Seleziona la suite per visualizzare i dettagli.   
![\[Una nuova suite di test denominata «Long Duration Demo» è stata creata con successo in Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/finalts-ld-ts.png)

1.  Per eseguire la suite di test creata, seleziona **Actions** (Operazioni), quindi **Run test suite** (Esegui suite di test).   
![\[Il menu a discesa Azioni della nuova suite di test denominata «Long Duration Demo» nell'interfaccia di Device Advisor.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/runts-ld-ts.png)

1.  Scegli le opzioni di configurazione nella pagina **Run configuration** (Esegui configurazione). 

   1. Seleziona **Things** (Oggetti) o **Certificate** (Certificato) su cui eseguire il test.

   1. Seleziona **Account-level endpoint** (Endpoint a livello di account) o **Device-level endpoint** (Endpoint a livello di dispositivo).

   1. Scegli **Run test** (Esegui test) per eseguire il test.  
![\[La pagina di configurazione Esegui nell'interfaccia di Device Advisor. La pagina mostra Select test devices, Things, Test endpoint e Tags.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/runconfiguration-ld-ts.png)

1.  Per visualizzare i risultati dell'esecuzione della suite di test, seleziona **Test runs and results** (Esecuzioni di test e risultati) nel pannello di navigazione a sinistra. Scegli la suite di test che è stata eseguita per visualizzare i dettagli dei risultati.   
![\[Il test case «Long Duration Demo» nella pagina Esecuzioni e risultati dei test.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/results-ld-ts.png)

1.  Il passaggio precedente visualizza la pagina di riepilogo del test. Tutti i dettagli dell'esecuzione del test vengono visualizzati in questa pagina. Quando la console richiede di avviare la connessione del dispositivo, connetti il dispositivo all'endpoint fornito. Lo stato di avanzamento dei test è visibile in questa pagina.   
![\[La pagina di riepilogo del test «Long Duration Demo» che hai creato.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/summary-ld-ts.png)

1.  Il test di lunga durata fornisce un campo **Test log summary** (Riepilogo del registro di prova) aggiuntivo sul pannello laterale contenente tutti gli eventi importanti che si verificano tra il dispositivo e il broker in tempo quasi reale. Per visualizzare log più dettagliati, fai clic su **Test case log** (Log del caso di test).   
![\[La sezione di riepilogo del registro di test nella pagina del test «Long Duration Demo».\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/log-ld-ts.png)

# Endpoint VPC di Device Advisor (AWS PrivateLink)
<a name="device-advisor-vpc-endpoint"></a>

Puoi stabilire una connessione privata tra il tuo VPC e l'endpoint di AWS IoT Core Device Advisor test (piano dati) creando un endpoint *VPC* di interfaccia. È possibile utilizzare questo endpoint per convalidare AWS IoT i dispositivi per una connettività  affidabile e sicura prima di distribuirli in produzione. AWS IoT Core I test predefiniti di Device Advisor consentono di convalidare il software del dispositivo in base alle best practice per l'utilizzo di [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 [Processi AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html). 

[AWS PrivateLink](https://aws.amazon.com/privatelink)alimenta gli endpoint di interfaccia utilizzati con i tuoi dispositivi IoT. Questo servizio consente di accedere privatamente all'endpoint di test AWS IoT Core Device Advisor senza un gateway Internet, un dispositivo NAT, una connessione VPN o una connessione Direct Connect . Le istanze nel tuo VPC che inviano pacchetti TCP e MQTT non necessitano di indirizzi IP pubblici per comunicare con gli endpoint di test. AWS IoT Core Device Advisor Il traffico tra il tuo VPC e il tuo VPC AWS IoT Core Device Advisor  non parte. Cloud AWS Qualsiasi comunicazione TLS e MQTT tra dispositivi IoT e casi di test di Device Advisor rimane all'interno delle risorse in Account AWS. 

Ogni endpoint di interfaccia è rappresentato da una o più [interfacce di rete elastiche](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) nelle sottoreti.

Per ulteriori informazioni sull'uso degli endpoint VPC dell'interfaccia, consulta [Endpoint VPC dell'interfaccia (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html) nella *Guida per l'utente di Amazon VPC*. 

## Considerazioni sugli endpoint AWS IoT Core Device Advisor VPC
<a name="vpc-considerations"></a>

Prima di impostare endpoint VPC dell'interfaccia, rivedi le [proprietà e le limitazioni dell'endpoint dell'interfaccia](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#vpce-interface-limitations) nella *Guida per l'utente di Amazon VPC*. Prima di continuare, valuta quanto segue: 
+ AWS IoT Core Device Advisor attualmente supporta l'effettuazione di chiamate all'endpoint di test Device Advisor (piano dati) dal tuo VPC. Un broker di messaggi utilizza le comunicazioni presenti nel piano dati per inviare e ricevere dati, mediante l'uso di pacchetti TLS e MQTT. Endpoint VPC per AWS IoT Core Device Advisor connettere il dispositivo agli endpoint di AWS IoT test Device Advisor. [Le azioni API del piano di controllo (control-plane)](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotdeviceadvisor/index.html) non vengono utilizzate da questo endpoint VPC. Per creare o eseguire una suite di test o un altro piano di controllo APIs, utilizza la console, un AWS SDK o un'interfaccia a riga di AWS comando sulla rete Internet pubblica. 
+ I seguenti endpoint VPC Regioni AWS supportano: AWS IoT Core Device Advisor
  + Stati Uniti orientali (Virginia settentrionale)
  + Stati Uniti occidentali (Oregon)
  + Asia Pacifico (Tokyo)
  + Europa (Irlanda)
+  Device Advisor supporta MQTT con certificati client X.509 e i certificati server RSA. 
+ [Le policy degli endpoint VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) non sono supportate in questo momento. 
+ Controlla i [prerequisiti](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#prerequisites-interface-endpoints) degli endpoint VPC per istruzioni su come [creare risorse](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) che collegano endpoint VPC. È necessario creare un VPC e sottoreti private per utilizzare gli endpoint VPC. AWS IoT Core Device Advisor 
+ Le tue risorse sono soggette a quote. AWS PrivateLink Per ulteriori informazioni, consulta la pagina relativa alle [quote di AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html). 
+ Gli endpoint VPC supportano solo il traffico. IPv4 

## Crea un endpoint VPC di interfaccia per AWS IoT Core Device Advisor
<a name="vpc-interface"></a>

Per iniziare a usare gli endpoint VPC, [crea un endpoint VPC dell'interfaccia](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html). Quindi, seleziona AWS IoT Core Device Advisor come. Servizio AWS Se utilizzi il AWS CLI, chiama [describe-vpc-endpoint-services](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoint-services.html)per confermare che AWS IoT Core Device Advisor è presente in una zona di disponibilità del tuo Regione AWS. Verifica che il gruppo di sicurezza collegato all'endpoint consenta la [comunicazione tramite protocollo TCP](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html) per il traffico MQTT e TLS. Ad esempio, nella regione Stati Uniti orientali (Virginia settentrionale), utilizza il seguente comando: 

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

Puoi creare un endpoint VPC per AWS IoT Core utilizzare il seguente nome di servizio: 
+ com.amazonaws.*region*.deviceadvisor.iot

Per impostazione predefinita, il DNS privato è attivato per l'endpoint. Ciò garantisce che l'uso dell'endpoint di test predefinito rimanga all'interno delle sottoreti private. Per creare un endpoint a livello di account o dispositivo, utilizza la console AWS CLI o un SDK. AWS Ad esempio, se esegui [get-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotdeviceadvisor/get-endpoint.html) all'interno di una sottorete pubblica o sulla rete Internet pubblica, puoi ottenere l'endpoint e utilizzarlo per connetterti a Device Advisor. Per ulteriori informazioni, consultare [Accesso a un servizio tramite un endpoint di interfaccia](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#access-service-though-endpoint) in *Guida per l'utente di Amazon VPC*. 

Per connettere i client MQTT alle interfacce degli endpoint VPC, AWS PrivateLink il servizio crea record DNS in una zona ospitata privata collegata al VPC. Questi record DNS indirizzano le richieste del dispositivo AWS IoT all'endpoint VPC. 

## Controllo dell'accesso agli AWS IoT Core Device Advisor endpoint tramite VPC
<a name="vpc-controlling-access"></a>

[Puoi limitare l'accesso ai dispositivi AWS IoT Core Device Advisor e consentire l'accesso solo tramite gli endpoint VPC utilizzando le chiavi contestuali delle condizioni VPC.](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) AWS IoT Core supporta le seguenti chiavi di contesto relative al 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 al momento non supporta le [policy degli endpoint VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-policies). 

La seguente politica concede l'autorizzazione alla connessione AWS IoT Core Device Advisor utilizzando un ID client che corrisponde al nome dell'oggetto. Inoltre, pubblica in qualsiasi argomento che abbia come prefisso il nome dell'oggetto. La policy è subordinata al dispositivo che si connette a un endpoint VPC con un particolare ID endpoint VPC. Questa policy nega i tentativi di connessione all'endpoint di test AWS IoT Core Device Advisor pubblico. 

****  

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

# Case test di Device Advisor
<a name="device-advisor-tests"></a>

Device Advisor fornisce test predefiniti in sei categorie.
+ [TLS](device-advisor-tests-tls.md)
+ [MQTT](device-advisor-tests-mqtt.md)
+ [Shadow](device-advisor-tests-shadow.md)
+ [Esecuzione del processo](device-advisor-tests-job-execution.md)
+ [Autorizzazioni e policy](device-advisor-tests-permissions-policies.md)
+ [Test di lunga durata](device-advisor-tests-long-duration.md)

## Casi di test di Device Advisor per qualificarsi per il AWS Device Qualification Program.
<a name="qualifiying-test-cases"></a>

Il dispositivo deve superare i seguenti test per essere qualificato in base al [Programma AWS per la qualifica dei dispositivi](https://aws.amazon.com/partners/programs/dqp/).

**Nota**  
Questo è un elenco rivisto dei test di qualifica.
+ [Collegamento TLS](device-advisor-tests-tls.md#TLS_Connect) ("TLS Connect") 
+ [Certificato server nome oggetto TLS non corretto](device-advisor-tests-tls.md#TLS_Incorrect_Subject_Name) ("Nome comune soggetto non corretto (CN)/Nome alternativo soggetto (SAN)")
+ [Certificato server TLS non sicuro](device-advisor-tests-tls.md#TLS_Unsecure_Server_Cert) ("Non firmato da CA riconosciuta") 
+ [Supporto per dispositivi TLS per suite di AWS IoT crittografia («Supporto dispositivi TLS AWS IoT per suite](device-advisor-tests-tls.md#TLS_DeviceSupport_For_IOT) di crittografia consigliate»)
+ [Frammenti di dimensioni massime ricezione TLS](device-advisor-tests-tls.md#TLS_MaximumSize)("Frammenti di dimensioni massime ricezione TLS")
+ [Certificato server scaduto TLS](device-advisor-tests-tls.md#TLS_Expired_Server_Cert)("Certificato server scaduto")
+ [Certificato server di grandi dimensioni TLS](device-advisor-tests-tls.md#TLS_LargeServerCert)("Certificato server di grandi dimensioni TLS")
+ [MQTT Connect](device-advisor-tests-mqtt.md#MQTT_Connect) («Dispositivo invia CONNECT a AWS IoT Core (Happy case)»)
+ [Iscriviti MQTT](device-advisor-tests-mqtt.md#MQTT_Subscribe) ("Puoi iscriverti (Happy Case)") 
+ [Pubblica MQTT](device-advisor-tests-mqtt.md#MQTT_Publish) ("QoS0 (Happy Case)") 
+ [Tentativi jitter di connessione MQTT](device-advisor-tests-mqtt.md#MQTT_ConnectJitterBackoff)("Tentativi di connessione dispositivo con backoff jitter - Nessuna risposta CONNACK")​

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

Utilizza questi test per determinare se il protocollo TLS (Transport Layer Security Protocol) tra i tuoi dispositivi AWS IoT è sicuro.

**Nota**  
Device Advisor ora supporta TLS 1.3.

## Happy Path
<a name="happy-path"></a>

**Connessione TLS**  <a name="TLS_Connect"></a>
Verifica se il dispositivo sottoposto a test è in grado di completare l'handshake TLS verso. AWS IoT Questo test non convalida l'implementazione MQTT del dispositivo client.  

**Example Definizione del test case API:**  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Per ottenere risultati ottimali, si consiglia un valore di timeout di 2 minuti. 

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

**Example Output del test case:**  
+ **Pass**: il dispositivo in test ha completato l'handshake TLS con. AWS IoT
+ **Passato con avvisi**: il dispositivo in test ha completato l'handshake TLS con AWS IoT, ma sono stati ricevuti messaggi di avviso TLS dal dispositivo o. AWS IoT
+ **Errore: il dispositivo sottoposto a test non è riuscito a completare l'handshake TLS con a causa di un errore di handshake.** AWS IoT 

**TLS riceve frammenti di dimensioni massime**  <a name="TLS_MaximumSize"></a>
Questo caso di test verifica se il dispositivo è in grado di ricevere ed elaborare frammenti di dimensioni massime TLS. Il dispositivo di test deve effettuare la sottoscrizione a un argomento preconfigurato con QoS 1 per ricevere un payload di grandi dimensioni. Il payload può essere personalizzato con la configurazione `${payload}`.  

**Example Definizione del test case API:**  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Per ottenere risultati ottimali, si consiglia un valore di timeout di 2 minuti. 

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

## Suite di cifratura
<a name="cipher-suites"></a>

**Supporto per dispositivi TLS per le suite di AWS IoT crittografia consigliate**  <a name="TLS_DeviceSupport_For_IOT"></a>
Verifica che i pacchetti di crittografia nel messaggio TLS Client Hello dal dispositivo sottoposto a test contengano i [pacchetti di crittografia AWS IoT consigliati](transport-security.md). Fornisce ulteriori informazioni sulle suite di crittografia supportate dal dispositivo.  

**Example Definizione del test case API:**  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti.

```
"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 Output dei test case:**  
+ **Pass**: il dispositivo sottoposto a test contiene almeno una delle suite di crittografia AWS IoT consigliate e non contiene suite di crittografia non supportate.
+ **Superato con avvisi**: i pacchetti di crittografia del dispositivo contengono almeno un pacchetto di crittografia AWS IoT ma:

  1. Non contengono alcun pacchetto di crittografia consigliato

  1. Contiene suite di crittografia che non sono supportate da. AWS IoT

  Si consiglia di verificare che gli eventuali pacchetti di crittografia non supportati siano sicuri. 
+ **Errore**: il dispositivo sottoposto a test sulle suite di crittografia non contiene nessuna delle suite di crittografia supportate AWS IoT .

## Certificato del server di grandi dimensioni
<a name="larger-size"></a>

**Certificato del server di grandi dimensioni TLS**  <a name="TLS_LargeServerCert"></a>
Verifica se il dispositivo è in grado di completare l'handshake TLS con AWS IoT quando riceve ed elabora un certificato del server di grandi dimensioni. La dimensione del certificato del server (in byte) utilizzato da questo test è maggiore di 20 rispetto a quella attualmente utilizzata nel test case **TLS Connect** e IoT Core. Durante questo test case, AWS IoT verifica lo spazio di buffer del dispositivo per TLS. Se lo spazio nel buffer è sufficientemente grande, l'handshake TLS viene completato senza errori. Questo test non convalida l'implementazione MQTT del dispositivo. Il caso di test termina dopo il completamento del processo di handshake TLS.  

**Example Definizione del test case API:**  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Per ottenere risultati ottimali, si consiglia un valore di timeout di 2 minuti. Se questo caso di test non va a buon fine, ma il caso di test **Connessione TLS** viene superato, si consiglia di incrementare il limite di spazio del buffer del dispositivo per TLS. L'aumento del limite di spazio del buffer garantisce che il dispositivo sia in grado di elaborare un certificato del server di dimensioni maggiori nel caso in cui le dimensioni aumentino.

```
"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 Output del test case:**  
+ **Pass** (Superato) - Il dispositivo testato ha completato l'handshake TLS con AWS IoT.
+ **Passa con avvisi**: il dispositivo in test ha completato l'handshake TLS con AWS IoT, ma sono presenti messaggi di avviso TLS dal dispositivo o AWS IoT.
+ **Errore: il dispositivo sottoposto a test non è riuscito a completare l'handshake TLS a AWS IoT causa di un errore durante il processo di handshake.**

## Certificato del server non sicuro TLS
<a name="unsecure-server"></a>

**Non firmato da CA riconosciuta**  <a name="TLS_Unsecure_Server_Cert"></a>
Verifica che il dispositivo sottoposto a test chiuda la connessione se viene presentato con un certificato del server che non dispone di una firma valida dalla CA ATS. Un dispositivo deve connettersi solo a un endpoint che presenta un certificato valido.  

**Example Definizione del test case API:**  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti. 

```
"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 Output dei test case:**  
+ **Pass (Superato)** — Il dispositivo sottoposto a test ha chiuso la connessione.
+ **Fallito**: il dispositivo in test ha completato l'handshake TLS con. AWS IoT

**Certificato del server nome soggetto TLS non corretto/Nome comune soggetto non corretto (CN)/Nome alternativo soggetto (SAN)**  <a name="TLS_Incorrect_Subject_Name"></a>
Convalida che il dispositivo in fase di test chiude la connessione se viene presentato con un certificato server per un nome di dominio diverso da quello richiesto.  

**Example Definizione del test case API:**  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti. 

```
"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 Output dei test case:**  
+ **Pass (Superato)** — Il dispositivo sottoposto a test ha chiuso la connessione.
+ **Fallito**: il dispositivo in test ha completato l'handshake TLS con. AWS IoT

## Certificato server scaduto TLS
<a name="expired-server"></a>

**Certificato del server scaduto**  <a name="TLS_Expired_Server_Cert"></a>
Convalida che il dispositivo in fase di test chiude la connessione se viene presentato con un certificato server scaduto.  

**Example Definizione del test case API:**  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti. 

```
"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 Output dei test case:**  
+ **Superato**: il dispositivo sottoposto al test si rifiuta di completare l'handshake TLS con. AWS IoT Il dispositivo invia un messaggio di avviso TLS prima di chiudere la connessione.
+ **Superato con avvisi**: il dispositivo sottoposto a test rifiuta di completare l'handshake TLS con AWS IoT. Tuttavia, non invia un messaggio di avviso TLS prima di chiudere la connessione.
+ **Fallito**: il dispositivo in test completa l'handshake TLS con. AWS IoT

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

## CONNETTI, SCONNETTI e RICONNETTI
<a name="connect"></a>

**«Il dispositivo invia CONNECT a AWS IoT Core (Happy case)»**  <a name="MQTT_Connect"></a>
Convalida che il dispositivo sottoposto a test invia una richiesta CONNECT.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti. 

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

**"Il dispositivo può restituire PUBACK a un argomento arbitrario per QoS1"**  
Questo test case verificherà se il dispositivo (client) può restituire un messaggio PUBACK se ha ricevuto un messaggio di pubblicazione dal broker dopo essersi iscritto a un argomento con QoS1.  
Il contenuto e la dimensione del payload sono configurabili per questo test case. Se la dimensione del payload è configurata, Device Advisor sovrascriverà il valore del contenuto del payload e invierà un payload predefinito al dispositivo con le dimensioni desiderate. La dimensione del payload è un valore compreso tra 0 e 128 KB e non può superare i 128 KB. AWS IoT Core rifiuta le richieste di pubblicazione e di connessione superiori a 128 KB, come illustrato nella pagine [Limiti e quote del protocollo e del broker di messaggi AWS IoT Core](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits).   
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti. `PAYLOAD_SIZE` può essere configurato su un valore compreso tra 0 e 128 kilobyte. La definizione della dimensione di un payload sostituisce il contenuto del payload poiché Device Advisor invierà al dispositivo un payload predefinito con le dimensioni specificate.

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

**"Riconnessione del dispositivo con backoff del jitter - Nessuna risposta CONNACK"**  <a name="MQTT_ConnectJitterBackoff"></a>
Convalida che il dispositivo in fase di test utilizza il backoff jitter corretto quando si ricollega con il broker per almeno cinque volte. Il broker registra il timestamp del dispositivo sotto la richiesta CONNECT del test, esegue la convalida dei pacchetti, si interrompe senza inviare un CONNACK al dispositivo in fase di test e attende che il dispositivo sottoposto a test invii nuovamente la richiesta. Il sesto tentativo di connessione è consentito per passare attraverso e CONNACK è autorizzato a fluire di nuovo al dispositivo in prova.  
Il processo precedente viene eseguito di nuovo. In totale, questo test case richiede che il dispositivo si connetta almeno 12 volte in totale. I timestamp raccolti vengono utilizzati per convalidare che il jitter backoff venga utilizzato dal dispositivo in prova. Se il dispositivo sottoposto a test ha un ritardo di backoff strettamente esponenziale, questo test case sarà superato con avvertimenti.   
Raccomandiamo l'implementazione del meccanismo [Exponential Backoff And Jitter (Backoff esponenziale e jitter)](https://aws.amazon.com/blogs//architecture/exponential-backoff-and-jitter/) sul dispositivo sottoposto a test per superare questo test case.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 4 minuti. 

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

**"Riconnessione del dispositivo con backoff esponenziale - Nessuna risposta CONNACK"**  
Verifica che il dispositivo sottoposto a test utilizzi il backoff esponenziale appropriato durante la riconnessione con il broker per almeno cinque volte. Il broker registra il timestamp del dispositivo sotto la richiesta CONNECT del test, esegue la convalida dei pacchetti, si interrompe senza inviare un CONNACK al dispositivo client e attende che il dispositivo in fase di test invii nuovamente la richiesta. I timestamp raccolti vengono utilizzati per convalidare che il backoff esponenziale venga utilizzato dal dispositivo in prova.   
Raccomandiamo l'implementazione del meccanismo [Exponential Backoff And Jitter (Backoff esponenziale e jitter)](https://aws.amazon.com/blogs//architecture/exponential-backoff-and-jitter/) sul dispositivo sottoposto a test per superare questo test case.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 4 minuti. 

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

**"Riconnessione del dispositivo con jitter backoff - Dopo la disconnessione del server"**  
Convalida se un dispositivo sottoposto a test utilizza il jitter e il backoff necessari durante la riconnessione dopo che è stato disconnesso dal server. Device Advisor disconnette il dispositivo dal server per almeno cinque volte e osserva il comportamento del dispositivo per la riconnessione MQTT. Device Advisor registra il timestamp della richiesta CONNECT per il dispositivo in fase di test, esegue la convalida dei pacchetti, si interrompe senza inviare un CONNACK al dispositivo client e attende che il dispositivo in fase di test invii nuovamente la richiesta. I timestamp raccolti vengono utilizzati per convalidare che il dispositivo sotttoposto a test utilizzi jitter e backoff durante la riconnessione. Se il dispositivo sottoposto a test ha un backoff strettamente esponenziale o non implementa un meccanismo jitter backoff appropriato, questo test case passerà con avvertimenti. Se il dispositivo sottoposto a test ha implementato un meccanismo di backoff lineare o un meccanismo di backoff costante, il test non andrà a buon fine.  
Per superare questo test case, si consiglia di implementare il meccanismo [Exponential Backoff And Jitter (Backoff esponenziale e jitter)](https://aws.amazon.com/blogs//architecture/exponential-backoff-and-jitter/) sul dispositivo sottoposto a test.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 4 minuti.  
Il numero di tentativi di riconnessione da convalidare per il backoff può essere modificato specificando il `RECONNECTION_ATTEMPTS`. Il numero deve essere compreso tra 5 e 10. Il valore predefinito è 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"
      }
   }
]
```

**"Device re-connect with jitter backoff - On unstable connection" (Riconnessione del dispositivo con jitter backoff - Connessione instabile)**  
Convalida se un dispositivo sottoposto a test utilizza il jitter e il backoff necessari durante la riconnessione su una connessione instabile. Device Advisor disconnette il dispositivo dal server dopo cinque connessioni valide e osserva il comportamento del dispositivo per la riconnessione MQTT. Device Advisor registra il timestamp della richiesta CONNECT per il dispositivo in fase di test, esegue la convalida dei pacchetti, invia un CONNACK, si disconnette, registra il timestamp della disconnessione e attende che il dispositivo in fase di test invii nuovamente la richiesta. I timestamp raccolti vengono utilizzati per convalidare che il dispositivo sottoposto a test utilizzi jitter e backoff durante connessioni corrette ma instabili. Se il dispositivo sottoposto a test ha un backoff strettamente esponenziale o non implementa un meccanismo jitter backoff appropriato, questo test case passerà con avvertimenti. Se il dispositivo sottoposto a test ha implementato un meccanismo di backoff lineare o un meccanismo di backoff costante, il test non andrà a buon fine.  
Per superare questo test case, si consiglia di implementare il meccanismo [Exponential Backoff And Jitter (Backoff esponenziale e jitter)](https://aws.amazon.com/blogs//architecture/exponential-backoff-and-jitter/) sul dispositivo sottoposto a test.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 4 minuti.  
Il numero di tentativi di riconnessione da convalidare per il backoff può essere modificato specificando il `RECONNECTION_ATTEMPTS`. Il numero deve essere compreso tra 5 e 10. Il valore predefinito è 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"
      }
   }
]
```

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

**"QoS0 (Happy Case)"**  <a name="MQTT_Publish"></a>
Verifica che il dispositivo in test pubblichi un messaggio con QoS0 o QoS1. È inoltre possibile convalidare l'argomento del messaggio e il payload specificando il valore dell'argomento e il payload nelle impostazioni di test.  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti.

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

**"QoS1 riprova pubblicazione - Nessun PUBACK"**  
Convalida che il dispositivo in fase di test ripubblica un messaggio inviato con QOS1, se il broker non invia PUBACK. È inoltre possibile convalidare l'argomento del messaggio specificando questo argomento nelle impostazioni di test. Il dispositivo client non deve disconnettersi prima di ripubblicare il messaggio. Questo test conferma inoltre che il messaggio ripubblicato abbia lo stesso identificatore di pacchetto dell'originale. Durante l'esecuzione del test, se il dispositivo perde la connessione e si riconnette, il test case si ripristina senza errori e il dispositivo deve eseguire nuovamente i passaggi del test case.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. È consigliato per almeno 4 minuti.

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

**"Pubblica messaggi mantenuti"**  
Convalida che il dispositivo in fase di test pubblica un messaggio `retainFlag` impostato su true. È inoltre possibile convalidare l'argomento e il payload del messaggio impostando il valore dell'argomento e il payload nelle impostazioni di test. Se il `retainFlag` inviato all'interno del pacchetto PUBLISH non è impostato su true, il test case avrà esito negativo.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti. Per eseguire questo test case, aggiungere l'azione `iot:RetainPublish` nel [ruolo del 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"
      }
   }
]
```

**"Pubblica con proprietà utente"**  
Convalida che il dispositivo in fase di test pubblica un messaggio con la proprietà utente corretta. È possibile convalidare la proprietà utente impostando la coppia nome-valore nelle impostazioni del test. Se la proprietà utente non viene fornita o non corrisponde, il test case ha esito negativo.  
*Definizione del test case API:*  
Questo è un unico test case. MQTT5   
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti. 

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

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

**"Puoi iscriverti (Happy Case)"**  <a name="MQTT_Subscribe"></a>
Convalida che il dispositivo sottoposto a test si sottoscriva gli argomenti MQTT. È inoltre possibile convalidare l'argomento a cui il dispositivo sottoposto a test sottoscriva specificando questo argomento nelle impostazioni di test.   
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti. 

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

**"Riprova sottoscrizione - Nessun SUBACK"**  
Convalida che il dispositivo in fase di test tenta una sottoscrizione non riuscita agli argomenti MQTT. Il server attende e non invia un SUBACK. Se il dispositivo client non riprova la sottoscrizione, il test ha esito negativo. Il dispositivo client deve riprovare la sottoscrizione non riuscita con lo stesso pacchetto Id. È inoltre possibile convalidare l'argomento a cui il dispositivo sottoposto a test sottoscriva specificando questo argomento nelle impostazioni di test. Durante l'esecuzione del test, se il dispositivo perde la connessione e si riconnette, il test case si ripristina senza errori e il dispositivo deve eseguire nuovamente i passaggi del test case.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 4 minuti. 

```
"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 Acc» PingResp**  
Questo test case convalida se il dispositivo sottoposto a test si disconnette quando non riceve una risposta ping. Nell'ambito di questo test case, Device Advisor blocca le risposte inviate AWS IoT Core per le richieste di pubblicazione, sottoscrizione e ping. Convalida anche se il dispositivo sottoposto a test disconnette la connessione MQTT.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un timeout superiore a 1,5 volte il valore `keepAliveTime`.  
 Il massimo non `keepAliveTime` deve essere superiore a 230 secondi per questo test. 

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

## Sessione persistente
<a name="persistent-session"></a>

**"Sessione persistente (happy case)"**  
Questo test case convalida il comportamento del dispositivo quando viene disconnesso da una sessione persistente. Il test case verifica se il dispositivo è in grado di riconnettersi, riprendere le sottoscrizioni agli argomenti di attivazione senza sottoscriversi nuovamente in modo esplicito, ricevere i messaggi archiviati negli argomenti e funzionare come previsto durante una sessione persistente. Quando questo test case viene superato, indica che il dispositivo client è in grado di mantenere una sessione persistente con il AWS IoT Core broker nel modo previsto. Per ulteriori informazioni sulle sessioni AWS IoT persistenti, vedere [Utilizzo delle sessioni persistenti MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html#mqtt-persistent-sessions).   
In questo test case, è previsto che il dispositivo client esegua una richiesta CONNECT a AWS IoT Core con un flag di sessione pulita impostato su false, quindi effettui la sottoscrizione a un argomento di attivazione. Dopo un abbonamento riuscito, il dispositivo verrà disconnesso da AWS IoT Core Device Advisor. Mentre il dispositivo si trova nello stato disconnesso, in tale argomento verrà memorizzato un payload del messaggio QoS 1. Device Advisor consentirà quindi al dispositivo client di connettersi nuovamente con l'endpoint di test. A questo punto, poiché esiste una sessione persistente, il dispositivo client riprende le sottoscrizioni degli argomenti senza inviare pacchetti SUBSCRIBE aggiuntivi e ricevere il messaggio QoS 1 dal broker. Dopo la riconnessione, se il dispositivo client si iscrive nuovamente al relativo argomento di attivazione inviando un pacchetto SUBSCRIBE aggiuntivo, and/or se il client non riesce a ricevere il messaggio memorizzato dall'argomento di attivazione, il test case avrà esito negativo.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di almeno 4 minuti. Alla prima connessione, il dispositivo client deve sottoscrivere esplicitamente un `TRIGGER_TOPIC` non sottoscritto in precedenza. Per superare il test case, il dispositivo client deve sottoscrivere correttamente `TRIGGER_TOPIC` con un QoS 1. Dopo la riconnessione, il dispositivo client comprende che esiste una sessione persistente attiva e pertanto accetta il messaggio memorizzato inviato dall'argomento di attivazione e restituisce PUBACK per il messaggio specifico. 

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

**"Sessione persistente - Scadenza della sessione"**  
Questo test case aiuta a convalidare il comportamento del dispositivo quando un dispositivo disconnesso si riconnette a una sessione persistente scaduta. Dopo la scadenza della sessione, è previsto che il dispositivo sottoscriva nuovamente gli argomenti precedentemente sottoscritti inviando esplicitamente un nuovo pacchetto SUBSCRIBE.  
Durante la prima connessione, ci aspettiamo che il dispositivo di test si CONNETTA al broker AWS IoT, poiché il suo `CleanSession` flag è impostato su false per avviare una sessione persistente. Il dispositivo deve quindi sottoscrivere un argomento di attivazione. Quindi il dispositivo viene disconnesso da AWS IoT Core Device Advisor, dopo una sottoscrizione riuscita e l'avvio di una sessione persistente. Dopo la disconnessione, AWS IoT Core Device Advisor consente al dispositivo di test di riconnettersi all'endpoint di test. A questo punto, quando il dispositivo di test invia un altro pacchetto CONNECT, AWS IoT Core Device Advisor restituisce un pacchetto CONNACK che indica che la sessione persistente è scaduta. Il dispositivo di test deve interpretare correttamente questo pacchetto e si prevede che sottoscriva nuovamente lo stesso argomento di attivazione quando la sessione persistente viene terminata. Se il dispositivo di test non sottoscrive di nuovo l'argomento, il test case non riesce. Per superare il test, il dispositivo deve comprendere che la sessione persistente è terminata e inviare un nuovo pacchetto SUBSCRIBE per lo stesso argomento di attivazione nella seconda connessione.  
Se il test case di un dispositivo di test riesce, significa che il dispositivo è in grado di gestire la riconnessione alla scadenza della sessione persistente nel modo previsto.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di almeno 4 minuti. Il dispositivo client deve sottoscrivere esplicitamente un `TRIGGER_TOPIC` non sottoscritto in precedenza. Per superare il test case, il dispositivo di test deve inviare un pacchetto CONNECT con il flag `CleanSession` impostato su false e sottoscrivere correttamente un argomento di attivazione con un QoS 1. Dopo una connessione riuscita, AWS IoT Core Device Advisor disconnette il dispositivo. Dopo la disconnessione, AWS IoT Core Device Advisor consente al dispositivo di riconnettersi e si prevede che il dispositivo si iscriva nuovamente alla stessa, `TRIGGER_TOPIC` poiché AWS IoT Core Device Advisor avrebbe interrotto la sessione 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"
      }
   }
]
```

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

Utilizza questi test per verificare che i dispositivi in prova utilizzino correttamente il servizio AWS IoT Device Shadow. Per ulteriori informazioni, consulta [AWS IoT Servizio Device Shadow](iot-device-shadows.md). Se questi test case sono configurati nella suite di test, è necessario fornire una cosa all'avvio dell'esecuzione della suite.

Al momento l'**over MQTT** non WebSocket è supportato.

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

***"Il dispositivo pubblica lo stato dopo la connessione (Happy case)"***  
Verifica se un dispositivo può pubblicare il suo stato dopo la connessione a AWS IoT Core  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti. 

```
"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"
      }
   }
]
```
Il `REPORTED_STATE` può essere fornito per una convalida aggiuntiva sullo stato di shadow esatto del dispositivo dopo la connessione. Per impostazione predefinita, questo test case convalida lo stato di pubblicazione del dispositivo.  
Se `SHADOW_NAME` non viene fornito, il test case cerca i messaggi pubblicati nei prefissi dell'argomento del tipo di shadow senza nome (classica) per impostazione predefinita. Fornisci un nome shadow se il dispositivo utilizza il tipo di shadow denominato. Per ulteriori informazioni., consulta [Utilizzo delle copie shadow nei dispositivi](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-comms-device.html).

## Aggiorna
<a name="update"></a>

***"Il dispositivo aggiorna lo stato segnalato sullo stato desiderato (Happy case)"***  
Convalida se il dispositivo legge tutti i messaggi di aggiornamento ricevuti e sincronizza lo stato del dispositivo in modo che corrisponda alle proprietà dello stato desiderate. Il dispositivo dovrebbe pubblicare l'ultimo stato segnalato dopo la sincronizzazione. Se il dispositivo ha già una shadow esistente prima di eseguire il test, assicurati che lo stato desiderato configurato per il test case e lo stato segnalato esistente non corrispondano già. È possibile identificare i messaggi di aggiornamento Shadow inviati da Device Advisor esaminando il **ClientToken**campo nel documento Shadow così come sarà`DeviceAdvisorShadowTestCaseSetup`.   
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 2 minuti. 

```
"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` deve avere almeno un attributo e un valore associato.  
Se `SHADOW_NAME` non viene fornito, il test case cerca i messaggi pubblicati nei prefissi dell'argomento del tipo di shadow senza nome (classico) per impostazione predefinita. Fornisci un nome shadow se il dispositivo utilizza il tipo di shadow denominato. Per ulteriori informazioni, consulta [Utilizzo delle copie shadow nei dispositivi](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-comms-device.html).

# Esecuzione del processo
<a name="device-advisor-tests-job-execution"></a>

**"Il dispositivo può completare l'esecuzione di un processo"**  
 Questo test case consente di verificare se il dispositivo è in grado di ricevere aggiornamenti tramite AWS IoT Jobs e di pubblicare lo stato degli aggiornamenti eseguiti con successo. Per ulteriori informazioni su AWS IoT Jobs, consulta [Jobs](https://docs.aws.amazon.com//iot/latest/developerguide/iot-jobs.html).   
 Per eseguire correttamente questo test case, ci sono due AWS argomenti riservati a cui devi assegnare il [ruolo del dispositivo](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html#da-iam-role). Per effettuare la sottoscrizione ai messaggi relativi all'attività del processo, utilizza gli argomenti **notify** e **notify-next**. Il ruolo del dispositivo deve consentire l'azione PUBLISH per i seguenti argomenti:   
+ \$1aws/things/**thingName**/jobs/**jobId**/get
+ \$1aws/things/**thingName**/jobs/**jobId**/update
Si consiglia di concedere le azioni SUBSCRIBE e RECEIVE per i seguenti argomenti:  
+ **\$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
Si consiglia di concedere l'azione SUBSCRIBE per il seguente argomento:  
+ \$1aws/things/**thingName**/jobs/notify-next
Per ulteriori informazioni su questi argomenti riservati, consulta gli argomenti riservati per [Jobs AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-job).  
Al momento l'**over WebSocket MQTT** non è supportato.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 5 minuti. Consigliamo un valore di timeout di 3 minuti. A seconda del documento AWS IoT Job o della fonte forniti, modifica il valore di timeout (ad esempio, se l'esecuzione di un lavoro richiederà molto tempo, definisci un valore di timeout più lungo per il test case). Per eseguire il test, è necessario un documento AWS IoT Job valido o un ID lavoro già esistente. Un documento AWS IoT Job può essere fornito come documento JSON o collegamento S3. Se viene fornito un documento di lavoro, fornire un ID di lavoro è facoltativo. Se viene fornito un Job ID, Device Advisor utilizzerà tale ID durante la creazione del AWS IoT Job per conto dell'utente. Se il documento di lavoro non viene fornito, puoi fornire un ID esistente che si trova nella stessa regione in cui stai eseguendo il test case. In questo caso, Device Advisor utilizzerà quel AWS IoT Job durante l'esecuzione del test case.

```
"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"
      }
   }
]
```
Per ulteriori informazioni sulla creazione e sull'utilizzo di documenti del processo, consulta [documento del processo](https://docs.aws.amazon.com//iot/latest/developerguide/iot-jobs.html). 

# Autorizzazioni e policy
<a name="device-advisor-tests-permissions-policies"></a>

Utilizza questi test per determinare se le policy associate ai certificati dei dispositivi seguono le best practice standard.

Al momento l'**over MQTT** non WebSocket è supportato.

**"Le policy allegate al certificato del dispositivo non contengono caratteri jolly"**  
 Verifica se le policy di autorizzazione associate a un dispositivo seguono le procedure consigliate e non concedono al dispositivo più autorizzazioni del necessario.  
*Definizione del test case API:*  
`EXECUTION_TIMEOUT` dispone di un valore predefinito di 1 minuto. Si consiglia di impostare un timeout di almeno 30 secondi.

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

# Test di lunga durata
<a name="device-advisor-tests-long-duration"></a>

I test di lunga durata sono una nuova suite di test che monitorano il comportamento di un dispositivo quando funziona per periodi di tempo più lunghi. Rispetto all'esecuzione di singoli test che si concentrano sui comportamenti specifici di un dispositivo, il test di lunga durata esamina il comportamento del dispositivo in una varietà di scenari del mondo reale nel corso del ciclo di vita del dispositivo. Device Advisor orchestra i test nell'ordine più efficiente possibile. Il test genera risultati e log, incluso un log di riepilogo con metriche utili sulle prestazioni del dispositivo durante il test. 

## Caso di test di lunga durata MQTT
<a name="long-duration-test-case"></a>

Nel test case di lunga durata MQTT, il comportamento del dispositivo viene inizialmente osservato in scenari di casi di successo come MQTT Connect, Subscribe, Publish e Reconnect. Quindi, il dispositivo viene osservato in diversi scenari di errore complessi come MQTT Reconnect Backoff, Long Server Disconnect e Intermittent Connectivity.

## Flusso di esecuzione del test case di lunga durata MQTT
<a name="long-duration-test-case-execution-flow"></a>

L'esecuzione di un test case di lunga durata MQTT comprendere tre fasi:

![\[La «Esecuzione del test MQTT a lunga durata» che mostra l'esecuzione dei test di base, l'esecuzione dei test avanzati e il tempo di esecuzione aggiuntivo.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/mqtt-execution-flow.png)


### Esecuzione di test di base
<a name="basic-tests-execution"></a>

In questa fase, il test case esegue semplici test in parallelo. Il test verifica se il dispositivo dispone delle operazioni selezionate nella configurazione.

Il set di test di base può includere quanto specificato di seguito, in base alle operazioni selezionate.

#### CONNECT
<a name="basic-tests-execution-connect"></a>

Questo scenario convalida se il dispositivo è in grado di stabilire una connessione con il broker.

![\[Il flusso di connessione di base che include un dispositivo che invia un messaggio CONNECT e Broker risponde con un messaggio CONNACK con un codice di ritorno corretto.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/basic-connect.png)


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

Questo scenario convalida se il dispositivo pubblica tramite il broker.

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

Questo test case convalida se il dispositivo invia un messaggio `PUBLISH` al broker durante una pubblicazione con QoS 0. Il test non attende che il messaggio `PUBACK` venga ricevuto dal dispositivo.

![\[Il flusso PUBLISH QoS 0 che include un dispositivo che invia un messaggio PUBLISH con livello QoS 0.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/Qos0.png)


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

In questo test case, si prevede che il dispositivo invii due messaggi `PUBLISH` al broker con QoS 1. Dopo il primo messaggio `PUBLISH`, il broker attende per un massimo di 15 secondi prima di rispondere. Il dispositivo deve riprovare a inviare il messaggio `PUBLISH` originale con lo stesso identificatore di pacchetto entro 15 secondi. In tal caso, il broker risponde con un messaggio `PUBACK` e il test viene convalidato. Se il dispositivo non riprova a inviare `PUBLISH`, il `PUBACK` originale viene inviato al dispositivo e il test viene contrassegnato come **Pass with warnings** (Superato con avvertenze), insieme a un messaggio di sistema. Durante l'esecuzione del test, se il dispositivo perde la connessione e si riconnette, lo scenario di test viene ripristinato senza errori e il dispositivo deve eseguire nuovamente i passaggi dello scenario di test. 

![\[Il flusso PUBLISH QoS 1 che include un dispositivo che invia un messaggio PUBLISH con livello QoS 1 e interazioni multiple con il broker.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/Qos1.png)


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

Questo scenario convalida se il dispositivo esegue la sottoscrizione tramite il broker.

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

Questo test case convalida se il dispositivo invia un messaggio `SUBSCRIBE` al broker durante una sottoscrizione con QoS 0. Il test non attende che il dispositivo riceva un messaggio SUBACK.

![\[Il flusso SUBSCRIBE QoS 0 che include un dispositivo che invia un messaggio SUBSCRIBE con livello QoS 0 e un broker che risponde con un messaggio SUBACK e il codice Success Maximum QoS 0.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/subscribe-Qos0.png)


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

In questo test case, si prevede che il dispositivo invii due messaggi `SUBSCRIBE` al broker con QoS 1. Dopo il primo messaggio `SUBSCRIBE`, il broker attende per un massimo di 15 secondi prima di rispondere. Il dispositivo deve riprovare a inviare il messaggio `SUBSCRIBE` originale con lo stesso identificatore di pacchetto entro 15 secondi. In tal caso, il broker risponde con un messaggio `SUBACK` e il test viene convalidato. Se il dispositivo non riprova a inviare `SUBSCRIBE`, il `SUBACK` originale viene inviato al dispositivo e il test viene contrassegnato come **Pass with warnings** (Superato con avvertenze), insieme a un messaggio di sistema. Durante l'esecuzione del test, se il dispositivo perde la connessione e si riconnette, lo scenario di test viene ripristinato senza errori e il dispositivo deve eseguire nuovamente i passaggi dello scenario di test. 

![\[Il flusso SUBSCRIBE QoS 1 che include un dispositivo che invia un messaggio SUBSCRIBE con livello QoS 1 e interazioni multiple con il broker.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/subscribe-Qos1.png)


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

Questo scenario convalida se il dispositivo si riconnette al broker dopo che il dispositivo è stato disconnesso da una connessione. Device Advisor non disconnette il dispositivo se in precedenza si è connesso più di una volta durante la suite di test. Invece, contrassegnerà il test come **Pass** (Superato).

![\[Il flusso RECONNECT tra DUT e il broker.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/reconnect.png)


### Esecuzione di test avanzati
<a name="advanced-tests-execution"></a>

In questa fase, il test case esegue test più complessi in serie per verificare se il dispositivo segue le best practice. Questi test avanzati sono disponibili per la selezione e possono essere disattivati se non necessari. Ogni test avanzato dispone del proprio valore di timeout in base a ciò che lo scenario richiede. 

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

**Nota**  
Selezionare questo scenario solo se il dispositivo è in grado di eseguire sottoscrizioni QoS 1.

Questo scenario convalida se il dispositivo restituisce un messaggio `PUBACK` dopo che esegue la sottoscrizione a un argomento e riceve un messaggio `PUBLISH` dal broker.

![\[Il flusso RETURN PUBLACK ON QoS 1 SUBSCRIPTION tra DUT e il broker.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/return-puback.png)


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

**Nota**  
Selezionare questo scenario se il dispositivo è in grado di eseguire sottoscrizioni QoS 1.

Questo scenario convalida se il dispositivo risponde con un messaggio `PUBACK` dopo aver ricevuto un messaggio `PUBLISH` dal broker per un argomento QoS 1 con un payload di grandi dimensioni. Il formato di payload previsto può essere configurato utilizzando l'opzione `LONG_PAYLOAD_FORMAT`.

![\[Il flusso RECEIVE LARGE PAYLOAD tra DUT e il broker.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/large-payload.png)


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

**Nota**  
Selezionare questo scenario se il dispositivo è in grado di eseguire sottoscrizioni QoS 1 e mantenere una sessione persistente.

Questo scenario convalida il comportamento del dispositivo nel mantenimento di sessioni persistenti. Il test convalida quando vengono soddisfatte le seguenti condizioni:
+ Il dispositivo si connette al broker con una sottoscrizione QoS 1 attivo e sessioni persistenti abilitate.
+ Il dispositivo si disconnette dal broker durante la sessione.
+ Il dispositivo si riconnette al broker e riprende le sottoscrizioni agli argomenti trigger senza effettuare nuovamente la sottoscrizione a questi argomenti in maniera esplicita.
+ Il dispositivo riceve i messaggi archiviati dal broker per gli argomenti sottoscritti e funziona come previsto.

 Per ulteriori informazioni sulle sessioni AWS IoT persistenti, vedere [Utilizzo delle sessioni persistenti MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html#mqtt-persistent-sessions).

![\[Il flusso PERSISTENT SESSION tra DUT e il broker.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/persistent-session.png)


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

Questo scenario cpmvalida se il dispositivo si disconnette dopo che non riceve una risposta ping dal broker. È necessario che nella connessione sia configurato timer keep-alive valido. Come parte di questo test, il broker blocca tutte le risposte inviate per i messaggi `PUBLISH`, `SUBSCRIBE` e `PINGREQ`. Convalida anche se il dispositivo sottoposto a test disconnette la connessione MQTT.

![\[Il flusso KEEP ALIVE tra DUT e il broker.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/keep-alive.png)


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

Questo scenario convalida se il dispositivo può riconnettersi al broker dopo che scollega il dispositivo a intervalli casuali per un periodo di tempo casuale.

![\[Il flusso di CONNETTIVITÀ INTERMITTENTE tra DUT e il broker.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/intermittent.png)


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

Questo scenario convalida se il dispositivo dispone di un meccanismo di backoff implementato quando il broker si disconnette più volte. Device Advisor segnala il tipo di backoff come esponenziale, jitter, lineare o costante. Il numero di tentativi di backoff è configurabile utilizzando l'opzione `BACKOFF_CONNECTION_ATTEMPTS`. Il valore predefinito è 5. Il valore è configurabile tra 5 e 10.

Per superare questo test, si consiglia di implementare il meccanismo [Exponential Backoff And Jitter](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/) (Backoff esponenziale e jitter) sul dispositivo in fase di test.

![\[Il flusso RECONNECT BACKOFF tra DUT e il broker.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/reconnect-backoff.png)


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

Questo scenario convalida se il dispositivo può riconnettersi dopo che il broker scollega il dispositivo per un lungo periodo di tempo (fino a 120 minuti). L'ora di disconnessione del server può essere configurata utilizzando l'opzione `LONG_SERVER_DISCONNECT_TIME`. Il valore predefinito è di 120 minuti. Questo valore è configurabile da 30 a 120 minuti.

![\[Il flusso LONG SERVER DISCONNECT tra DUT e il broker.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/longserver-disconnect.png)


### Tempo di esecuzione aggiuntivo
<a name="additional-execution-time"></a>

Il tempo di esecuzione aggiuntivo è il tempo che il test attende dopo il completamento di tutti i test precedenti e prima di terminare il test case. I clienti utilizzano questo periodo di tempo aggiuntivo per monitorare e registrare tutte le comunicazioni tra il dispositivo e il broker. Il tempo di esecuzione aggiuntivo può essere configurato utilizzando l'opzione `ADDITIONAL_EXECUTION_TIME`. Per impostazione predefinita, questa opzione è impostata su 0 minuti e può essere compresa tra 0 e 120 minuti. 

## Opzioni di configurazione del test di lunga durata MQTT
<a name="long-duration-test-case-config-options"></a>

Tutte le opzioni di configurazione fornite per il test di lunga durata MQTT sono opzionali. Sono disponibili le seguenti opzioni:

**OPERAZIONI**  
L'elenco delle operazioni eseguite dal dispositivo, ad esempio `CONNECT`, `PUBLISH` e `SUBSCRIBE`. Il test case esegue scenari in base alle operazioni specificate. Le operazioni non specificate sono considerate valide.  

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

**SCENARI**  
In base alle operazioni selezionate, il test case esegue scenari per convalidare il comportamento del dispositivo. Esistono due tipi di scenari:  
+ Gli **scenari di base** sono semplici test che verificano se il dispositivo è in grado di eseguire le operazioni selezionate in precedenza come parte della configurazione. Questi sono preselezionati in base alle operazioni specificate nella configurazione. Non è richiesto alcun ulteriore input nella configurazione.
+ Gli **scenari avanzati** sono scenari più complessi che vengono eseguiti rispetto al dispositivo per convalidare se il dispositivo segue le best practice quando soddisfa le condizioni del mondo reale. Questi sono opzionali e possono essere superati come una serie di scenari per l'input di configurazione della suite di test.

```
{                                
    "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:**  
Il periodo di tempo massimo che il test case attende per il completamento di tutti i test di base. Il valore predefinito è di 60 minuti. Questo valore è configurabile da 30 a 120 minuti.

**LONG\$1SERVER\$1DISCONNECT\$1TIME:**  
Il tempo richiesto dal test case per scollegare e ricollegare il dispositivo durante il test Disconnessione server di lunga durata. Il valore predefinito è di 60 minuti. Questo valore è configurabile da 30 a 120 minuti.

**ADDITIONAL\$1EXECUTION\$1TIME:**  
La configurazione di questa opzione fornisce una finestra temporale dopo il completamento di tutti i test, per monitorare gli eventi tra il dispositivo e il broker. Il valore predefinito è di 0 minuti. Questo valore è configurabile da 0 a 120 minuti.

**BACKOFF\$1CONNECTION\$1ATTEMPTS:**  
Questa opzione configura il numero di volte in cui il dispositivo viene disconnesso dal test case. Viene utilizzato dal test Riconnessione backoff. Il valore predefinito è 5. Questo valore è configurabile da 5 a 10.

**LONG\$1PAYLOAD\$1FORMAT:**  
Il formato del payload del messaggio atteso dal dispositivo quando il test case viene pubblicato in un argomento QoS 1 sottoscritto dal dispositivo.

**Definizione del test case 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"
      }
   }
 ]      
}
```

## Log di riepilogo del test case di lunga durata MQTT
<a name="long-duration-test-case-summary-log"></a>

Il test case di lunga durata MQTT viene eseguito più a lungo rispetto ai normali test case. Durante l'esecuzione, viene fornito un log di riepilogo separato, contenente eventi importanti come connessioni dispositivo, pubblicazione e sottoscrizione. I dettagli includono l'oggetto del test, gli elementi esclusi dal test e gli eventuali errori. Alla fine del log, il test include un riepilogo di tutti gli eventi che si sono verificati durante l'esecuzione del test case. Questo include:
+ *Timer Keep Alive configurato sul dispositivo.*
+ *Flag sessione persistente configurato sul dispositivo.*
+ *Il numero di connessioni del dispositivo durante l'esecuzione del test.*
+ *Il tipo di riconnessione backoff del dispositivo, se convalidato per il test di riconnessione backoff.*
+ *Gli argomenti su cui il dispositivo ha pubblicato durante l'esecuzione del test case.*
+ *Gli argomenti sottoscritti dal dispositivo, durante l'esecuzione del test case.*