Risoluzione dei problemi di Test Lab e DOMANDE FREQUENTI
Questa pagina fornisce assistenza per la risoluzione dei problemi e risposte alle domande frequenti sull'esecuzione di test con Firebase Test Lab. Sono documentati anche i problemi noti. Se non riesci a trovare quello che cerchi o hai bisogno di ulteriore aiuto, unisciti al canale #test-lab su Firebase Slack o contatta l'assistenza Firebase.
Risoluzione dei problemi
Perché il mio test richiede così tanto tempo per essere eseguito?
Quando selezioni un dispositivo con un livello di capacità elevato nel catalogo Test Lab, i test potrebbero iniziare più rapidamente. Quando un
dispositivo ha una capacità ridotta, i test potrebbero richiedere più tempo. Se il numero di test richiamati è molto maggiore della capacità dei dispositivi selezionati, il completamento dei test può richiedere più tempo.
I test eseguiti su qualsiasi livello di capacità del dispositivo potrebbero richiedere più tempo a causa dei
seguenti fattori:
Traffico, che influisce sulla disponibilità dei dispositivi e sulla velocità del test.
Guasti del dispositivo o dell'infrastruttura, che possono verificarsi in qualsiasi momento. Per verificare
se è stata segnalata un'infrastruttura per Test Lab, consulta la
dashboard dello stato di Firebase.
Per scoprire di più sulla capacità dei dispositivi in Test Lab, consulta le informazioni sulla capacità dei dispositivi per Android e iOS.
Perché ricevo risultati del test non validi?
I risultati inconcludenti dei test si verificano comunemente a causa di esecuzioni di test annullate
o errori dell'infrastruttura.
Gli errori di infrastruttura sono causati da problemi interni di Test Lab, come errori di rete o comportamenti imprevisti dei dispositivi. Test Lab ritira internamente le esecuzioni di test
che producono errori di infrastruttura più volte prima di segnalare un
risultato non conclusivo; tuttavia, puoi disattivare questi tentativi utilizzando
failFast.
Per determinare la causa dell'errore, segui questi passaggi:
Ripeti il test in Test Lab per verificare che sia riproducibile.
Se applicabile, prova a eseguire il test su un altro dispositivo o tipo di dispositivo.
Se il problema persiste, contatta il team Test Lab nel
canale#test-lab su
Firebase Slack.
Perché lo sharding ha allungato
i tempi di esecuzione dei miei test?
Lo sharding può allungare la durata dei test quando il numero di shard specificato supera il numero di dispositivi disponibili per l'utilizzo in Test Lab. Per
evitare questa situazione, prova a passare a un altro dispositivo. Per ulteriori informazioni
sulla scelta di un altro dispositivo, vedi
Capacità del dispositivo.
Perché il mio test
richiede molto tempo per iniziare?
Quando invii una richiesta di test, l'app viene prima convalidata, firmata nuovamente e così via in
preparazione all'esecuzione dei test su un dispositivo. Normalmente, questa procedura viene completata in
meno di pochi secondi, ma può essere influenzata da fattori come le dimensioni dell'app.
Una volta preparata l'app, le esecuzioni dei test vengono pianificate e rimangono in una coda
finché un dispositivo non è pronto per eseguirle. Finché non vengono completate tutte le esecuzioni dei test, lo stato della matrice sarà "In attesa" (indipendentemente dal fatto che le esecuzioni dei test siano in coda o in esecuzione).
Perché il mio test richiede
così tanto tempo per essere completato?
Al termine dell'esecuzione del test, gli artefatti di test vengono scaricati dal
dispositivo, elaborati e caricati su Cloud Storage. La durata di questo passaggio può
essere influenzata dalla quantità e dalle dimensioni degli artefatti.
L'app non restituisce dati e non è possibile individuare gli screenshot
Gli artefatti di esecuzione dei test (come screenshot e file di log) vengono archiviati in
Google Cloud Storage e visualizzati direttamente nella console Firebase. Se
l'esecuzione del test è stata eseguita negli ultimi 90 giorni, verifica di aver
assegnato ruoli a livello di progetto (proprietario del progetto, editor del progetto o visualizzatore del progetto).
Assicurati inoltre che Cloud Audit Logging non sia abilitato per il tuo progetto
o la tua organizzazione.
Se l'esecuzione è stata eseguita più di 90 giorni fa, molto
probabilmente gli artefatti di test sono stati eliminati automaticamente. Puoi controllare la
configurazione del bucket dei risultati facendo clic sulla scheda Risultati del test nella
dashboard Test Lab. Il bucket dei risultati
predefinito è configurato per conservare gli oggetti per 90 giorni.
Per conservare più a lungo gli artefatti di test, esegui il comando
gcloud firebase test android run con il flag --results-bucket e inserisci
il nome del bucket dei risultati. Per saperne di più, consulta la
documentazione di riferimento di gcloud firebase test android run.
Perché ricevo risultati parziali o mancanti dei test case di strumentazione?
Quando esegui test di strumentazione, potresti visualizzare errori di test che indicano risultati parziali
che contengono messaggi come Test run failed to complete. Expected
x tests, received y (dove y è inferiore a x).
Questo errore significa che Test Lab non è riuscito ad analizzare logcat per i marcatori di inizio
o fine del caso di test che vengono in genere generati da
AndroidJUnitRunner.
Di seguito sono riportate alcune cause comuni di questo problema:
Descrizione del problema
Possibile risoluzione
Lo scenario di test non è stato eseguito a causa di un timeout. Se la durata totale dei
test è superiore a un timeout specificato o a un
timeout massimo,
Test Lab annulla il resto degli scenari di test.
Aumenta il timeout della matrice per assicurarti che tutti i test possano essere completati.
Dividi i test in shard, se non l'hai già fatto, in modo che ogni shard esegua un
sottoinsieme dei test e venga completato in un periodo di tempo più breve.
Se hai già abilitato lo sharding, aumenta il numero di shard.
Il caso di test non è stato completato perché è stato chiuso prematuramente o si è bloccato.
Il caso di test potrebbe terminare prematuramente a causa di un'eccezione non rilevata o
di un errore di asserzione. I casi di test possono bloccarsi in un ciclo infinito o non essere
in grado di procedere, ad esempio se l'app non mostra la visualizzazione corretta e
il caso di test non può eseguire l'azione sull'interfaccia utente.
Controlla il video e il logcat per capire dove si è interrotto il test.
Un esecutore del test personalizzato (inclusa l'estensione di AndroidJUnitRunner) ha subito un arresto anomalo
inaspettato o ha scritto marcatori di inizio o fine dello scenario di test inaspettati in
logcat.
Controlla il codice del test runner.
Sono stati scritti log eccessivi in logcat, che hanno sovraccaricato il buffer
o causato l'arresto anomalo del processo logcat.
Riduci le scritture a logcat.
L'app in fase di test ha subito un arresto anomalo.
Esegui il debug dell'app.
Domande frequenti
Quali sono le quote senza costi
per Test Lab? Cosa devo fare se le esaurisco?
Firebase Test Lab offre quote senza costi per i test sui dispositivi e per l'utilizzo
delle API Cloud. Tieni presente che la quota di test utilizza il piano tariffario standard di Firebase,
mentre le quote dell'API Cloud no.
Quota di test
Le quote di test sono determinate dal numero di dispositivi utilizzati per eseguire i test.
Il piano Firebase Spark prevede una quota di test fissa senza costi per gli utenti. Per il piano Blaze, le tue quote potrebbero aumentare se il tuo utilizzo di Google Cloud aumenta nel tempo. Se raggiungi la quota di test, attendi il giorno successivo o esegui l'upgrade al piano Blaze se al momento utilizzi il piano Spark.
Se hai già scelto il piano Blaze, puoi richiedere un aumento della quota.
Per maggiori informazioni, vedi
Quota di test.
L'API Cloud Testing prevede due limiti di quota: richieste al giorno per progetto e richieste ogni 100 secondi per progetto. Puoi monitorare l'utilizzo nella console Google Cloud.
Quota dell'API Cloud Tool Results
L'API Cloud Tool Results prevede due limiti di quota: query al giorno per progetto e query ogni 100 secondi per progetto. Puoi monitorare l'utilizzo nella console Google Cloud.
Invia una richiesta per quote più elevate
modificando le quote
direttamente nella console Google Cloud (tieni presente che la maggior parte dei limiti è impostata
sul valore massimo per impostazione predefinita) oppure
Richiedi quote API più elevate compilando un modulo di richiesta nella
console Google Cloud o contattando
l'assistenza Firebase.
Come faccio a sapere se il traffico che raggiunge il mio backend proviene da Test Lab?
Dal backend, puoi determinare se il traffico proviene da dispositivi di test ospitati da Firebase controllando l'indirizzo IP di origine rispetto ai nostri intervalli IP.
Test Lab funziona con
VPC-SC?
Test Lab non funziona con VPC-SC, che blocca la
copia di app e altri artefatti di test tra lo spazio di archiviazione
interno di Test Lab e i bucket dei risultati degli utenti.
Come faccio a rilevare i test instabili in
Test Lab?
Per rilevare un comportamento instabile nei test, ti consigliamo di utilizzare l'opzione
--num-flaky-test-attempts
. Le ripetizioni di deflake vengono fatturate o conteggiate nella quota giornaliera come le esecuzioni dei test normali.
Tieni presente che:
L'intera esecuzione del test viene eseguita di nuovo quando viene rilevato un errore. Non è previsto
il supporto per il nuovo tentativo solo dei casi di test non riusciti.
Le esecuzioni di nuovi tentativi di deflake sono pianificate per essere eseguite contemporaneamente, ma non è garantito che vengano eseguite in parallelo, ad esempio quando il traffico supera il numero di dispositivi disponibili.
Test Lab supporta
i dispositivi indossabili?
Sì! Test Lab supporta Google Pixel Watch. Ora puoi eseguire test sulla tua app Wear autonoma su Google Pixel Watch. Per scoprire di più sui
dispositivi Test Lab, consulta Test sui
dispositivi disponibili.
Test Lab supporta i
dispositivi Google più recenti?
Sì! Test Lab supporta Google Pixel Tablet e Google Pixel Fold. Puoi
eseguire i test sui tuoi dispositivi fisici autonomi.
Per scoprire di più sui
dispositivi Test Lab, consulta Test sui
dispositivi disponibili.
Come faccio a rilevare un test in esecuzione
in Test Lab?
Se stai testando la tua app in Firebase o eseguendo test per un
report pre-lancio
in Play Console, puoi rilevare se un test viene
eseguito su un dispositivo ospitato da Firebase controllando la proprietà di sistema
firebase.test.lab nel file MainActivity. Puoi quindi eseguire istruzioni
aggiuntive in base al valore booleano di testLabSetting. Per ulteriori
informazioni, vedi
Comportamenti di test modificati.
Test Lab
supporta Appium, Flutter/FlutterDriver, ReactNative/Jest o Cucumber?
Sebbene alcuni di questi elementi siano nella nostra roadmap, al momento non possiamo impegnarci a supportare queste piattaforme di test e sviluppo di app. Tuttavia,
se hai creato la tua app con un framework che supporta Espresso (ad esempio Flutter), puoi scrivere un test di strumentazione utilizzando
Espresso
e poi eseguire il test in Test Lab.
Test Lab
supporta il test di app offuscate, ad esempio con ProGuard o R8?
Test Lab non supporta esplicitamente l'offuscamento o la deoffuscamento. Anche se
l'app verrà probabilmente eseguita, tutti i dati offuscati, come le analisi dello stack,
appariranno offuscati nei log.
Posso utilizzare il mio dispositivo pieghevole in
diverse posizioni e stati di piegatura durante i test su Test Lab?
I dispositivi pieghevoli possono essere in vari stati di piegatura, ad esempio FLAT (completamente aperto) o HALF_OPENED (tra completamente aperto e completamente chiuso).
Le posture, invece, consistono in un orientamento specifico del dispositivo e in uno stato di piegatura. Ad esempio, la postura da tavolo, che è uno stato HALF_OPENED in orientamento orizzontale, o la postura a libro, che è uno stato HALF_OPENED in orientamento verticale.
A differenza di altri prodotti Firebase, non è necessario aggiungere un SDK Firebase per utilizzare Test Lab. Se non hai ancora un'app, puoi
scaricare un APK online o creare un'app e un APK di test da uno degli
esempi nel repository GitHub di AndroidX.
Tieni presente che per eseguire un test Robo è necessario solo il file APK dell'app, mentre un test di strumentazione richiede sia un'app sia un APK di test creati dal codice sorgente. Per ulteriori informazioni,
leggi l'articolo sui test strumentati.
Quali dispositivi sono più adatti
per i test di confronto degli screenshot?
Il test di confronto degli screenshot si basa sul confronto delle asserzioni di test con le immagini dello schermo ottenute durante l'esecuzione di un test con le immagini di riferimento che rappresentano il comportamento previsto. Questi test potrebbero essere più fragili su alcuni tipi di dispositivi rispetto ad altri. Per questi tipi di test, ti consigliamo di scegliere come target
dispositivi emulatore Arm (*.arm). I dispositivi emulatore Arm utilizzano
immagini molto simili o identiche agli emulatori "generici" di Android Studio.
Ti consigliamo inoltre di esaminare le librerie di test che possono contribuire a rendere
i test degli screenshot più solidi in presenza di modifiche previste.
Test Lab aggiorna i dispositivi virtuali?
Sì! I dispositivi virtuali vengono aggiornati quando vengono apportate le seguenti modifiche:
Aggiornamenti alle immagini esistenti
Ritiro dei livelli API precedenti
Vengono aggiunti nuovi livelli API Android
Come faccio ad attivare i report sulla copertura?
Per attivare i report sulla copertura, aggiungi coverage=true al
campoenvironmentVariables.
Se utilizzi Android Test Orchestrator, devi fornire una directory in cui
memorizzare i risultati della copertura:
Dove posso trovare i dettagli del dispositivo, come
risoluzione, ABI supportati e così via?
Informazioni dettagliate sul dispositivo sono disponibili tramite l'API e sono accessibili
dal client gcloud utilizzando il
comando describe:
gcloud firebase test android models describe MODEL
Problemi noti
Captcha di accesso
Il test Robo non può bypassare le schermate di accesso che richiedono
un'azione aggiuntiva dell'utente oltre all'inserimento delle credenziali per accedere, ad esempio,
il completamento di un CAPTCHA.
Supporto del framework UI
Il test Robo funziona meglio con le app che utilizzano elementi UI del framework UI di Android (inclusi gli oggetti View, ViewGroup e WebView). Se utilizzi il test Robo per testare app che utilizzano altri framework UI, incluse le app che utilizzano il motore di gioco Unity, il test potrebbe terminare senza esplorare oltre la prima schermata.