

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

# Integrazione della strumentazione Android con Device Farm
<a name="test-types-android-instrumentation-integrate"></a>

**Nota**  
Usa le seguenti istruzioni per integrare i test di strumentazione Android con AWS Device Farm. Per ulteriori informazioni sull'utilizzo dei test di strumentazione in Device Farm, consulta. [Strumentazione per Android e AWS Device Farm](test-types-android-instrumentation.md) 

## Esegui i test di strumentazione Android (console)
<a name="test-types-android-instrumentation-upload"></a>

Usa la console Device Farm per caricare i tuoi test.

1. Accedi alla console Device Farm all'indirizzo [ https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm).

1. Nel pannello di navigazione, scegli ** Mobile Device Testing**, quindi scegli ** Progetti**.

1. Nell'elenco dei progetti, scegli il progetto su cui vuoi caricare i tuoi test.
**Suggerimento**  
Puoi usare la barra di ricerca per filtrare l'elenco dei progetti per nome.  
Per creare un progetto, segui le istruzioni indicate nella sezione [Creazione di un progetto in AWS Device Farm](how-to-create-project.md).

1. Seleziona ** Crea corsa**.

1. In ** Seleziona app e tipo di esecuzione**, nella ** sezione Tipo di ** esecuzione, seleziona l'app ** Android**.

1. In ** Seleziona app**, nella ** sezione Opzioni di selezione ** dell'app, scegli ** Seleziona un'app di esempio fornita da Device Farm ** se non hai un'app. Se stai portando la tua app, seleziona ** Carica la tua app**, quindi scegli il tuo APK (formato di file.apk).

1. In ** Configura test**, nella ** sezione ** Seleziona framework di test, scegli ** Strumentazione**, quindi scegli Scegli ** file. ** Cerca e scegli il file APK (formato file.apk) che contiene i tuoi test.

1. In ** Scegli il tuo ambiente di esecuzione**, seleziona ** Esegui il test in un ambiente personalizzato ** o ** Esegui il test nel nostro ambiente ** standard. Per ulteriori informazioni, consulta [Ambienti di test in AWS Device Farm](test-environments.md).

1. Se hai scelto l'ambiente personalizzato, puoi utilizzare le specifiche di test predefinite compilate per i test di strumentazione oppure scegliere ** Carica specifiche ** di test personalizzate per fornire le tue.

1. In ** Seleziona dispositivi**, scegli un metodo di selezione dei dispositivi. Seleziona ** Usa pool di dispositivi ** per scegliere tra una raccolta curata di dispositivi o un pool di dispositivi personalizzato che hai creato. Seleziona Seleziona ** manualmente i dispositivi ** per scegliere i singoli dispositivi su cui eseguire i test. La ** sezione Compatibilità dei ** dispositivi mostra quanti dispositivi del pool selezionato sono compatibili con la tua app. Per ulteriori informazioni, consulta [Supporto per i dispositivi in AWS Device Farm](devices.md).

1. Per configurare le proprietà a livello di esecuzione, aggiorna la sezione Impostazioni ** di ** esecuzione. Qui puoi fare quanto segue:

   1. (Facoltativo) Per fare in modo che Device Farm generi un rapporto di test al termine dell'esecuzione, seleziona ** Genera rapporto ** di test. Questa opzione è disponibile solo in un ambiente di test personalizzato. Device Farm genera il report in base ai risultati della strumentazione inclusi nell'output delle specifiche di test. Se carichi le tue specifiche di test, assicurati che trasmettano i risultati della strumentazione all'output delle specifiche di test.

1. Completa i passaggi rimanenti, quindi avvia l'esecuzione.

## Visualizza un rapporto di prova (console)
<a name="test-types-android-instrumentation-view-insights-console"></a>

1. Accedi alla console Device Farm all'indirizzo [ https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm).

1. Nel pannello di navigazione, scegli ** Mobile Device Testing**, quindi scegli ** Progetti**.

1. Scegli il progetto che contiene l'esecuzione che desideri ispezionare.

1. Scegli la corsa completata per aprirne i dettagli.

1. Scegli uno dei lavori completati per aprire i risultati per quel dispositivo.

### Con le informazioni sui test abilitate
<a name="test-types-android-instrumentation-view-insights-console-with"></a>

I risultati del lavoro includono una ** scheda Rapporto di ** test. Sceglila per visualizzare una suddivisione per test. Le schermate seguenti mostrano la ** scheda Rapporto di ** test con tutte le colonne visibili.

![La prima serie di colonne nella scheda Rapporto di test per un lavoro di strumentazione completato.](https://docs.aws.amazon.com/it_it/devicefarm/latest/developerguide/images/aws-device-farm-test-insights/console-instrumentation-insights-enabled-test-report-column-start.png)


![Le colonne rimanenti nella scheda Rapporto di test per un lavoro di strumentazione completato.](https://docs.aws.amazon.com/it_it/devicefarm/latest/developerguide/images/aws-device-farm-test-insights/console-instrumentation-insights-enabled-test-report-column-end.png)


La scheda mostra i seguenti campi per ogni test:

`testName`  
Il nome del metodo di test.

`testClass`  
Il nome della classe di test.

`result`  
Il risultato del test di Device Farm.

`frameworkResult`  
Il risultato riportato dal framework di strumentazione. Device Farm associa questo valore al campo normalizzato`result`.

`durationSeconds`  
La durata del test, in secondi.

`startTimestamp`  
L'ora di inizio del test.

`endTimestamp`  
L'ora in cui è terminato il test.

`current`  
La posizione del test durante la corsa.

`numTests`  
Il numero totale di test in esecuzione.

`statusCode`  
Il codice di stato della strumentazione riportato dal test.

`stream`  
Una versione leggibile dall'uomo dell'output della strumentazione per il test.

`stackTrace`  
Per un test fallito, la traccia dello stack dell'errore.

Per scaricare il rapporto completo del test come file JSON, scegli ** Scarica il riepilogo completo ** nella parte superiore dei dettagli del lavoro.

Per scegliere quali colonne visualizzare, scegli l'icona a forma di ingranaggio. Nelle impostazioni, puoi selezionare le colonne da visualizzare e attivare o disattivare ** Raggruppa per classe**. **L'opzione Raggruppa per classe ** è attiva per impostazione predefinita e raggruppa i test in base alla classe di test. Disattivalo per visualizzare un elenco completo di tutti i test, come mostrato nella schermata seguente.

![La scheda Rapporto di test con Raggruppa per classe è disattivata, mostrando un elenco semplice di test.](https://docs.aws.amazon.com/it_it/devicefarm/latest/developerguide/images/aws-device-farm-test-insights/console-instrumentation-insights-enabled-test-report-without-grouping.png)


### Senza che le informazioni sui test siano abilitate
<a name="test-types-android-instrumentation-view-insights-console-without"></a>

I risultati del lavoro mostrano l'output e gli artefatti del test standard, ma nessuna scheda Rapporto ** ** di test. Per generare un rapporto di test, pianifica una nuova esecuzione con le informazioni sui test abilitate.

![I risultati del lavoro per un lavoro di strumentazione completato senza avere abilitato le informazioni sui test.](https://docs.aws.amazon.com/it_it/devicefarm/latest/developerguide/images/aws-device-farm-test-insights/console-instrumentation-insights-disabled-test-report.png)


## Visualizza un rapporto di prova (AWS CLI)
<a name="test-types-android-instrumentation-view-insights-cli"></a>

Esegui **get-job** e specifica l'ARN del lavoro:

```
aws devicefarm get-job --arn {{arn:aws:devicefarm:us-west-2:123456789012:job:PROJECT_ID/RUN_ID/00000}}
```

### Senza che le informazioni sui test siano abilitate
<a name="test-types-android-instrumentation-view-insights-cli-without"></a>

Se non hai abilitato i test insights, la risposta contiene i campi standard del job, come lo stato del job, il risultato, i contatori e il dispositivo:

```
{
    "job": {
        "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000",
        "name": "Example Android Phone",
        "created": "2026-08-05T14:26:56.959000-07:00",
        "status": "COMPLETED",
        "result": "PASSED",
        "counters": {
            "total": 3,
            "passed": 3,
            "failed": 0,
            "warned": 0,
            "errored": 0,
            "stopped": 0,
            "skipped": 0
        },
        "message": "Successful test lifecycle of Setup Test",
        "device": {
            "arn": "arn:aws:devicefarm:us-west-2::device:EXAMPLEDEVICEID",
            "name": "Example Android Phone",
            "platform": "ANDROID",
            "os": "16",
            "formFactor": "PHONE",
            "fleetType": "PUBLIC"
        },
        "deviceMinutes": {
            "total": 1.38,
            "metered": 0.0,
            "unmetered": 1.13
        },
        "videoCapture": true
    }
}
```

### Con i test insights abilitati
<a name="test-types-android-instrumentation-view-insights-cli-with"></a>

Se hai abilitato i test insights, la risposta include anche un `insights` oggetto. Questo oggetto contiene lo stato del rapporto di test, metriche di alto livello e un URL prefirmato al rapporto dettagliato:

```
{
    "job": {
        "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000",
        "status": "COMPLETED",
        "result": "PASSED",
        "counters": { ... },
        "device": { ... },
        "deviceMinutes": { ... },
        "videoCapture": true,
        "insights": {
            "status": "COMPLETED",
            "testReport": {
                "message": "Results: 2 Executed | 2 passed, Median test duration: 28.926 seconds.",
                "metrics": {
                    "testsTotal": 2,
                    "testsPassed": 2,
                    "testsFailed": 0,
                    "testsSkipped": 0,
                    "testsErrored": 0,
                    "testsOther": 0,
                    "testsPassedPercentage": 100.0
                },
                "testDetailsUrl": "https://EXAMPLE-PRESIGNED-URL"
            }
        }
    }
}
```

Il `testDetailsUrl` campo è un URL prefirmato del JSON completo del rapporto di test. Scaricalo per ottenere la suddivisione per test:

```
curl -o test-report.json "{{PRESIGNED_URL}}"
```

Di seguito è riportato un esempio di rapporto di prova per un lavoro di strumentazione:

```
{
  "version": "1.0",
  "jobArn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000",
  "metrics": {
    "testsTotal": 3,
    "testsPassed": 2,
    "testsFailed": 1,
    "testsSkipped": 0,
    "testsErrored": 0,
    "testsOther": 0,
    "testsPassedPercentage": 66.67,
    "totalTestExecutionDurationSeconds": 26.004,
    "medianTestExecutionDurationSeconds": 1.598
  },
  "testDetails": [
    {
      "testName": "testConnect",
      "testClass": "com.example.myapp.GpsConnectInstrumentedTest",
      "frameworkResult": "PASSED",
      "result": "PASSED",
      "durationSeconds": 24.399,
      "startTimestamp": "2026-08-05T20:38:30.131514Z",
      "endTimestamp": "2026-08-05T20:38:54.530369Z",
      "statusCode": 0,
      "current": 1,
      "numTests": 3
    },
    {
      "testName": "testHistoryOff",
      "testClass": "com.example.myapp.NotificationHistoryInstrumentedTest",
      "frameworkResult": "PASSED",
      "result": "PASSED",
      "durationSeconds": 1.598,
      "startTimestamp": "2026-08-05T20:38:54.531765Z",
      "endTimestamp": "2026-08-05T20:38:56.130032Z",
      "statusCode": 0,
      "current": 2,
      "numTests": 3
    },
    {
      "testName": "testConnect",
      "testClass": "com.example.myapp.WifiConnectInstrumentedTest",
      "frameworkResult": "FAILED",
      "result": "FAILED",
      "durationSeconds": 0.002,
      "startTimestamp": "2026-08-05T20:38:56.131857Z",
      "endTimestamp": "2026-08-05T20:38:56.133770Z",
      "stackTrace": "java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\tat com.example.myapp.WifiConnectInstrumentedTest.testConnect(WifiConnectInstrumentedTest.java:93)\n\t...",
      "stream": "\nError in testConnect(com.example.myapp.WifiConnectInstrumentedTest):\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...",
      "statusCode": -2,
      "current": 3,
      "numTests": 3
    }
  ],
  "errorMessage": "There was 1 failure:\n1) testConnect(com.example.myapp.WifiConnectInstrumentedTest)\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...\nFAILURES!!!\nTests run: 3,  Failures: 1",
  "instrumentationCode": -1
}
```

Il rapporto contiene i seguenti campi di primo livello:

`version`  
La versione dello schema del report.

`jobArn`  
ARN del processo.

`metrics`  
Risultati aggregati per il lavoro. L'oggetto `metrics` include i seguenti campi:    
`testsTotal`  
Il numero totale di test del job.  
`testsPassed`  
Il numero di test superati.  
`testsFailed`  
Il numero di test che hanno avuto esito negativo.  
`testsSkipped`  
Il numero di test che sono stati saltati.  
`testsErrored`  
Il numero di test con errori.  
`testsOther`  
Il numero di test con un altro risultato.  
`testsPassedPercentage`  
La percentuale di test superati.  
`totalTestExecutionDurationSeconds`  
La durata totale di tutti i test, in secondi.  
`medianTestExecutionDurationSeconds`  
La durata mediana di un test, in secondi.

`errorMessage`  
Se l'esecuzione ha avuto errori, un messaggio di errore che li riepiloga.

`instrumentationCode`  
Il codice di uscita complessivo della strumentazione per il lavoro.

`testDetails`  
Un elenco dei risultati per test. Ogni voce `testDetails` contiene i seguenti campi:    
`testName`  
Il nome del metodo di prova.  
`testClass`  
Il nome della classe di test.  
`result`  
Il risultato del test di Device Farm.  
`frameworkResult`  
Il risultato riportato dal framework di strumentazione. Device Farm associa questo valore al campo normalizzato`result`.  
`durationSeconds`  
La durata del test, in secondi.  
`startTimestamp`  
L'ora di inizio del test.  
`endTimestamp`  
L'ora in cui è terminato il test.  
`current`  
La posizione del test durante la corsa.  
`numTests`  
Il numero totale di test in esecuzione.  
`statusCode`  
Il codice di stato della strumentazione riportato dal test.  
`stream`  
Una versione leggibile dall'uomo dell'output della strumentazione per il test.  
`stackTrace`  
Per un test fallito, la traccia dello stack dell'errore.

## (Facoltativo) Acquisisci schermate nei test della strumentazione Android
<a name="test-types-android-instrumentation-screenshots"></a>

Durante i test di Instrumentation per Android, si possono acquisire screenshot.

Per acquisire screenshot, chiamare uno dei seguenti metodi:
+ Per Robotium, chiamare il metodo `takeScreenShot` (ad esempio, `solo.takeScreenShot();`).
+ Per Spoon, chiamare il metodo `screenshot`, ad esempio:

  ```
  Spoon.screenshot(activity, "initial_state");
  /* Normal test code... */
  Spoon.screenshot(activity, "after_login");
  ```

Durante un test, Device Farm ottiene schermate dalle seguenti posizioni sui dispositivi, se presenti, e le aggiunge ai report di test:
+ `/sdcard/robotium-screenshots`
+ `/sdcard/test-screenshots`
+ `/sdcard/Download/spoon-screenshots/{{test-class-name}}/{{test-method-name}}`
+ `/data/data/{{application-package-name}}/app_spoon-screenshots/{{test-class-name}}/{{test-method-name}}`