Agente di test delle app (Android)

L'agente App Testing è un agente di generazione, gestione ed esecuzione di scenari di test basato su Gemini in Firebase. Definisci gli obiettivi del test in linguaggio naturale e l'agente utilizza l'AI per comprendere e navigare nella tua app, simulare le interazioni degli utenti e fornire risultati di test dettagliati.

In che modo l'agente App Testing utilizza i tuoi dati

L'agente App Testing è fornito da Gemini in Firebase ed è regolato dagli stessi termini. Per saperne di più su come Gemini in Firebase utilizza i tuoi dati, consulta In che modo Gemini in Firebase utilizza i tuoi dati.

Prima di iniziare

Se non l'hai già fatto, registra la tua app con Firebase.

Se non utilizzi altri prodotti Firebase, devi solo creare un progetto e registrare la tua app. Non è necessario aggiungere SDK alla tua app. Tuttavia, se decidi di utilizzare altri prodotti in futuro, assicurati di completare tutti i passaggi descritti in Aggiungi Firebase utilizzando la console Firebase.

Crea uno scenario di test

Per eseguire test guidati dall'AI, l'agente App Testing utilizza gli scenari di test in linguaggio naturale per eseguire test sulla tua app.

Ogni scenario di test è suddiviso in passaggi, che verranno eseguiti in sequenza. I passaggi ti consentono di suddividere lo scenario di test in fasi, ciascuna con la propria asserzione. L'agente può intraprendere molte azioni durante un singolo passaggio.

Esistono due modi per creare uno scenario di test: utilizzando un file YAML o la console Firebase. I file YAML ti consentono di gestire gli scenari di test in autonomia, in genere in un repository di codice sorgente con controllo della versione. In alternativa, la console Firebase può archiviare gli scenari di test da remoto insieme ai dati di App Distribution.

Utilizzo di file YAML

L'esempio seguente mostra un file YAML che definisce due scenari di test:

tests:
- displayName: Login as guest
  id: login-as-guest
  steps:
  - goal: Log in as a guest
    finalScreenAssertion: The home screen is visible
- displayName: View biography card birth date
  prerequisiteTestCaseId: login-as-guest
  steps:
  - goal: Open the article on "Bob Dylan"
    hint: Use the search function to find it
    finalScreenAssertion: >-
      The article is opened and the title "Bob Dylan" is visible.
  - goal: Find Bob Dylan's birthday in the article
    hint: >-
      Look for the "Born" section in the infobox on the right side of the page.
    finalScreenAssertion: >-
      The text "May 24, 1941" is visible on the screen.

Puoi organizzare gruppi di test in un unico file e separare queste suite di test in più file. Puoi aggiungere uno scenario di test prerequisito aggiungendo un ID al test e poi facendo riferimento a questo ID utilizzando prerequisiteTestCaseId.

Utilizzo della console App Distribution

In alternativa, puoi creare e gestire gli scenari di test nella console Firebase. Per creare uno scenario di test, apri la pagina App Distribution della console Firebase e segui questi passaggi:

  1. Nella scheda Scenari di test, fai clic su Nuovo scenario di test. Se non vuoi creare il tuo scenario di test, puoi modificare o utilizzare lo scenario di test di esempio fornito.
  2. Nella finestra di dialogo Aggiungi scenario di test, assegna un nome allo scenario di test. Viene utilizzato per identificare il test, ma viene ignorato dall'agente.
  3. (Facoltativo) Seleziona uno scenario di test prerequisito che contiene i passaggi di configurazione da eseguire prima del test principale. Se il test dei prerequisiti non va a buon fine, l'intero test verrà contrassegnato come non riuscito. I passaggi e i risultati dei test dei prerequisiti e dei test principali verranno mostrati insieme nei risultati dei test.
  4. Valuta la possibilità di suddividere il test in più passaggi facendo clic sul pulsante Aggiungi un altro passaggio.
  5. Assegna a ogni passaggio un obiettivo che descriva ciò che l'agente App Testing deve fare durante quel passaggio.
  6. (Facoltativo) Aggiungi un Suggerimento per fornire ulteriori informazioni che aiutino l'agente App Testing a comprendere la tua app e a navigare al suo interno durante questo passaggio.
  7. Aggiungi l'asserzione della schermata finale per aiutare l'agente App Testing a determinare quando il passaggio è stato completato correttamente. Questa asserzione deve fare riferimento solo a ciò che è visibile sullo schermo.
  8. Al termine della personalizzazione del test, fai clic su Salva.

Scenario di test di esempio

Di seguito è riportato un esempio di come creare uno scenario di test utilizzando l'agente App Testing:

Titolo del test

Caricamenti della home page

Obiettivo

Carica la home page

Suggerimento

Supera le schermate di onboarding. Chiudi eventuali popup. Non accedere.

Asserzione schermata finale

La home page principale dell'app è visibile sullo schermo, tutte le immagini sono state caricate e non vengono visualizzati errori.

Esegui un test

La modalità di esecuzione dei test dipende da come crei e gestisci gli scenari di test. Se definisci gli scenari di test utilizzando i file YAML, eseguirai i test utilizzando l'interfaccia a riga di comando di Firebase. Se crei gli scenari di test nella console App Distribution, li eseguirai dalla console o tramite uno degli strumenti dell'interfaccia a riga di comando di App Distribution.

Utilizzo di file YAML

Gli scenari di test definiti nei file YAML possono essere eseguiti utilizzando l'interfaccia a riga di comando di Firebase.

  1. Installa o esegui l'aggiornamento all'ultima versione dell'interfaccia a riga di comando di Firebase. Ti consigliamo di scaricare il file binario autonomo per l'interfaccia a riga di comando specifica per il tuo sistema operativo.
  2. Accedi e verifica di poter accedere ai tuoi progetti. Tieni presente che se utilizzi l'interfaccia a riga di comando di Firebase in un ambiente CI, puoi anche eseguire l'autenticazione con un service account o utilizzando login:ci.
  3. Esegui il comando apptesting:execute. Ad esempio:

    firebase apptesting:execute \
      --app=1:1234567890:android:0a1b2c3d4e5f67890 \
      --test-dir=./mytests \
      ./app/build/outputs/apk/debug/app-debug.apk
    
apptesting:execute [options] [/path/to/app/binary]
--app

Obbligatorio:l'ID app Firebase della tua app. Puoi trovare l'ID app nella console Firebase, nella pagina Impostazioni generali.

--app 1:1234567890:android:0a1b2c3d4e5f67890

--test-dir

Percorso di una directory che contiene i file YAML degli scenari di test. Il comando eseguirà la ricerca in modo ricorsivo in questa directory, quindi i file possono essere organizzati facoltativamente in sottodirectory. Se non viene impostato, per impostazione predefinita viene utilizzato "./tests".

--test-devices o
--test-devices-file

I dispositivi su cui eseguire i test.

Puoi specificare i dispositivi di test come un elenco di specifiche dei dispositivi separate da punti e virgola:

--test-devices "model=tokay,version=36,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

In alternativa, puoi specificare il percorso di un file di testo normale contenente un elenco di specifiche del dispositivo separate da punti e virgola:

--test-devices-file "/path/to/test-devices.txt"

Puoi cercare i modelli di dispositivi disponibili utilizzando gcloud CLI.

--test-username

Il nome utente per l'accesso automatico da utilizzare durante i test.

--test-password o
--test-password-file

La password per l'accesso automatico da utilizzare durante i test.

In alternativa, puoi specificare il percorso di un file di testo normale contenente una password:

--test-password-file: "/path/to/test-password.txt"
--test-non-blocking

Se impostato, il comando avvia i test e poi restituisce immediatamente il risultato anziché attendere il completamento. Per visualizzare i risultati del test, visita la console Firebase. Se questo flag non è impostato, il comando verrà bloccato fino al completamento dei test e uscirà con un codice di errore se uno dei test non va a buon fine.

--results-bucket

Un bucket Google Cloud Storage (GCS) personalizzato in cui vengono archiviati i risultati dei test. Se il campo viene lasciato vuoto, verrà utilizzato il bucket predefinito. Il bucket deve essere di proprietà di un progetto con fatturazione abilitata e la specifica di un bucket comporta addebiti di fatturazione per lo spazio di archiviazione utilizzato.

--test-file-pattern

Un pattern di espressione regolare. Verranno eseguiti solo i test contenuti nei file che corrispondono a questo pattern.

--test-name-pattern

Un pattern di espressione regolare. Verranno eseguiti solo i test con nomi visualizzati che corrispondono a questo pattern.

/path/to/app/binary

Facoltativo: il percorso del file binario dell'app. Se omesso, l'agente utilizzerà l'ultima release caricata su App Distribution per l'app specificata.

Utilizzo della console App Distribution

Per eseguire gli scenari di test archiviati in App Distribution, puoi utilizzare la console Firebase, l'interfaccia a riga di comando di Firebase o i plug-in Gradle o fastlane di App Distribution.

Importa ed esporta scenari di test con file YAML

L'importazione di scenari di test da file YAML è utile quando vuoi gestire gli scenari di test al di fuori della console Firebase. Può anche essere utile esportare gli scenari di test per spostarli da un progetto all'altro. Puoi utilizzare un LLM per perfezionare gli scenari di test esistenti o crearne di nuovi. Puoi importare ed esportare gli scenari di test dalla pagina Scenari di test nella console Firebase o in modo programmatico utilizzando l'interfaccia a riga di comando di Firebase. Per un esempio di scenario di test YAML, consulta Crea uno scenario di test YAML.

Visualizza i risultati del test

Puoi visualizzare i risultati dei test dalla pagina Release nella scheda Agente App Testing di una release. Il pulsante Visualizza dettagli aprirà la finestra di dialogo Risultati del test e mostrerà eventuali problemi, screenshot dell'app e le azioni eseguite da Gemini durante il test.

Se un test include azioni riprodotte, puoi visualizzare l'esecuzione del test originale basato sull'AI o svuotare la cache.

Per scoprire di più sui risultati del test, utilizza la seguente tabella:

Icona Nome Descrizione
spark Azione AI Indica che l'agente App Testing ha utilizzato Gemini per decidere di intraprendere un'azione o terminare il passaggio.
replay Azione ripetuta Indica che l'agente App Testing ha riprodotto un'azione da un'esecuzione precedente del test andata a buon fine.
spark Asserzione AI Indica che l'agente App Testing ha utilizzato Gemini per convalidare un'asserzione della schermata finale, dopo aver riprodotto le azioni di un'esecuzione precedente dello stesso test andata a buon fine.

Esegui il debug dei risultati dei test

Se i risultati del test sono diversi da quelli previsti, puoi eseguire il debug del test utilizzando l'opzione Mostra visualizzazione agente in Visualizza dettagli nella pagina dei risultati del test. La visualizzazione dell'agente mostra gli elementi sullo schermo che l'agente App Testing è riuscito a rilevare durante l'utilizzo delle informazioni sull'accessibilità dell'app. Se vuoi esaminare più da vicino ciò che l'agente ha visto, puoi scaricare queste informazioni dal menu extra delle azioni.

Puoi anche utilizzare il pulsante Visualizza artefatti nella pagina Risultati del test per esaminare tutti i video, i log e altri artefatti Cloud per i risultati del test.

Problemi noti e limitazioni

L'anteprima dell'agente App Testing presenta alcune limitazioni note:

  • I test guidati dall'AI hanno un timeout di 5 minuti. Una volta avviato, un test deve avere esito positivo entro questo periodo di tempo, altrimenti terminerà in anticipo e verrà conteggiato come un test non riuscito.
  • Poiché l'agente App Testing utilizza l'AI generativa per testare la tua app, a volte eseguirà azioni diverse pur seguendo le stesse istruzioni.
  • L'agente App Testing supporta solo le seguenti azioni: tocca, inserisci testo, scorri verso l'alto/il basso/a sinistra/a destra, tieni premuto, trascina, torna indietro e attendi.
  • L'agente App Testing ha difficoltà a eseguire test contenenti un solo passaggio che richiede molte azioni per essere completato. Le sue prestazioni sono migliori quando le attività complesse vengono suddivise in più passaggi più brevi.
  • A volte l'agente App Testing non scorre per mostrare altri elementi fuori dallo schermo. Questo accade più spesso quando non esiste un'indicazione visiva della possibilità di scorrimento. Come soluzione alternativa, è possibile utilizzare il campo "hints" per suggerire lo scorrimento.
  • L'agente App Testing a volte ha difficoltà a contare, ad esempio a eseguire un'azione un numero specifico di volte.
  • L'agente App Testing non può navigare nella tua app se FLAG_SECURE è abilitato. Anziché gli screenshot della tua app, vedrà solo una schermata vuota.

Quote di test

Durante l'anteprima, i test guidati dall'AI verranno offerti senza costi entro un limite di quota. Il limite di quota predefinito è di 200 test al mese per progetto Firebase.

Tieni presente che se scegli di eseguire più scenari di test o di eseguire lo stesso scenario di test su più dispositivi, questo viene conteggiato come più test. Ad esempio, se esegui 2 scenari di test su 2 dispositivi, vengono conteggiati 4 test in totale.

Per aumentare la quota oltre il limite predefinito, contatta l'assistenza Firebase con il tuo caso d'uso.