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. I problemi noti sono inoltre documentati. Se non riesci a trovare ciò che stai cercando o hai bisogno di ulteriore assistenza, partecipa al canale #test-lab su Firebase Slack o contatta l'assistenza Firebase.
Risoluzione dei problemi
Perché l'esecuzione del mio test richiede così tanto tempo?
Se nel catalogo Test Lab
selezioni un dispositivo con un livello di capacità elevato, i test potrebbero iniziare più velocemente. Quando un
dispositivo ha una capacità ridotta, l'esecuzione dei test potrebbe richiedere più tempo. Se il numero di test richiamati è molto più elevato 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à del dispositivo 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à del dispositivo in Test Lab, consulta le informazioni sulla capacità del dispositivo per Android e iOS.
Perché ricevo risultati di test inconcludenti?
I risultati dei test inconcludenti si verificano in genere a causa di esecuzioni di test annullate o di errori dell'infrastruttura.
Gli errori di infrastruttura sono causati da problemi Test Lab interni, come errori di rete o comportamenti imprevisti del dispositivo. Test Lab ritira internamente le esecuzioni di test
che generano errori di infrastruttura più volte prima di segnalare un
risultato inconcludente. Tuttavia, puoi disattivare questi tentativi usando
failFast.
Riprova il test in Test Lab per verificare che sia riproducibile.
Prova a eseguire il test su un altro dispositivo o tipo di dispositivo, se applicabile.
Se il problema persiste, contatta il team di Test Lab nel
canale#test-lab su
Firebase Slack.
Perché la suddivisione ha reso più lunghi i miei test?
Lo sharding può causare un tempo di esecuzione più lungo 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, consulta
Capacità del dispositivo.
Perché l'inizio del mio esame sta richiedendo molto tempo?
Quando invii una richiesta di test, la tua app viene prima convalidata, firmata di nuovo e così via in preparazione all'esecuzione dei test su un dispositivo. Di solito, questa procedura viene completata in meno di qualche secondo, 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 coda fino a quando un dispositivo non è pronto per eseguirle. Fino al completamento di tutte le esecuzioni del test,
lo stato della matrice sarà "In attesa" (indipendentemente dal fatto che le esecuzioni del test siano
in coda o in esecuzione attiva).
Perché il mio
test sta impiegando molto tempo?
Al termine dell'esecuzione del test, gli elementi 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 elementi.
L'app non restituisce dati e non riesce a trovare gli screenshot
Gli elementi di esecuzione dei test (ad esempio 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, controlla di avere assegnati
ruoli a livello di progetto (proprietario, editor o visualizzatore del progetto).
Assicurati inoltre che l'audit logging di Cloud non sia abilitato per il tuo progetto
o la tua organizzazione.
Se l'esecuzione è stata eseguita più di 90 giorni fa, molto probabilmente gli elementi 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 risultati predefinito è configurato per conservare gli oggetti per 90 giorni.
Per conservare gli elementi di test più a lungo, esegui il comando
gcloud firebase test android run con il flag --results-bucket e passa il nome del bucket dei risultati. Per saperne di più, consulta la documentazione di riferimento di gcloud firebase test android run.
Perché ricevo risultati dei casi di test di misurazione parziali o mancanti?
Quando esegui test di misurazione, potresti visualizzare errori di test che indicano risultati parziali contenenti messaggi come Test run failed to complete. Expected
x tests, received y (dove y è inferiore a x).
Questo errore indica che Test Lab non è stato in grado di analizzare il logcat per gli indicatori di inizio o fine del caso di test che in genere vengono generati da
AndroidJUnitRunner.
Di seguito sono riportate alcune cause comuni del 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 dei casi di test.
Aumenta il timeout per la matrice per assicurarti che tutti i test possano essere completati.
Se non l'hai ancora fatto, suddividi i test in modo che ogni shard esegua un sottoinsieme di test e venga completato in un periodo di tempo più breve.
Se hai già attivato lo sharding, aumenta il numero di shard.
Il test case non è stato completato perché è stato chiuso prematuramente o si è bloccato.
Il caso di test potrebbe uscire 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 nell'interfaccia utente.
Controlla il video e logcat per capire dove si è interrotto il test.
Un runner di test personalizzato (inclusa l'estensione di AndroidJUnitRunner) ha avuto un arresto anomalo o ha scritto indicatori di inizio o fine dello scenario di test inaspettati in logcat.
Controlla il codice del tuo programma di test.
Sono stati scritti log eccessivi in logcat, che ha sovraccaricato il buffer
o ha causato l'arresto anomalo del processo logcat.
Riduci le scritture a logcat.
L'app in test ha avuto un arresto anomalo.
Esegui il debug dell'app.
Domande frequenti
Quali sono le quote senza costi
per Test Lab? Cosa devo fare se finiscono?
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 Firebase standard, 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 ha una quota di test fissa senza costi per gli utenti. Per il piano Blaze, le 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 utilizzi già il piano Blaze, puoi richiedere un aumento della quota.
Per ulteriori informazioni, consulta
Testare la quota.
L'API Cloud Testing prevede due limiti di quota: richieste al giorno per progetto e richieste ogni 100 secondi per progetto. Puoi monitorare il tuo utilizzo nella console Google Cloud.
Quota dell'API Cloud Tool Results
L'API Cloud Tool Results ha due limiti di quota: query al giorno per progetto e query ogni 100 secondi per progetto. Puoi monitorare il tuo utilizzo nella console Google Cloud.
Invia una richiesta di quote più alte modificando le quote direttamente nella console Google Cloud (tieni presente che la maggior parte dei limiti è impostata su valore massimo per impostazione predefinita) oppure
Richiedi quote API più elevate compilando un modulo di richiesta nella consoleGoogle Cloud o contattando l'assistenza Firebase.
Come faccio a sapere se il traffico che raggiunge il mio backend proviene da Test Lab?
Dal tuo backend, puoi determinare se il traffico proviene da dispositivi di test ospitati su 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 elementi di test tra lo spazio di archiviazione interno di Test Lab e i bucket dei risultati degli utenti.
Come faccio a rilevare i test inaffidabili in
Test Lab?
Per rilevare un comportamento incostante nei test, ti consigliamo di utilizzare l'opzione
--num-flaky-test-attempts
. Le riesecuzione di deflake vengono fatturate o conteggiate ai fini della quota giornaliera come le normali esecuzioni dei test.
Tieni presente che:
L'intera esecuzione del test viene eseguita di nuovo quando viene rilevato un errore. Non è supportato il nuovo tentativo solo per i casi di test non riusciti.
Le esecuzioni di ripetizione 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 Eseguire test su 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 Eseguire test su dispositivi disponibili.
Come faccio a rilevare un test in esecuzione
in Test Lab?
Se stai testando la tua app in Firebase o esegui test per un
report pre-lancio
in Play Console, puoi rilevare se un test è in corso
su un dispositivo ospitato da Firebase controllando la proprietà di sistema
firebase.test.lab nel file MainActivity. Puoi quindi eseguire altre istruzioni in base al valore booleano di testLabSetting. Per ulteriori informazioni, consulta Comportamenti di test modificati.
Test Lab
supporta Appium, Flutter/FlutterDriver, ReactNative/Jest o Cucumber?
Sebbene alcuni di questi elementi siano inclusi 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 misurazione utilizzando Espresso e poi eseguirlo in Test Lab.
Test Lab supporta il test delle app offuscate, ad esempio con ProGuard o R8?
Test Lab non supporta esplicitamente l'oscuramento o la deoscuramento. Anche se
l'app verrà probabilmente eseguita, eventuali dati dell'app offuscati, come le tracce dello stack,
verranno visualizzati come offuscati nei log.
Posso utilizzare il mio dispositivo pieghevole in diversi stati e posizioni durante i test su Test Lab?
I dispositivi pieghevoli possono essere in vari stati di chiusura, ad esempio FLAT (completamente aperto) o HALF_OPENED (tra completamente aperto e completamente chiuso).
Le posture, invece, consistono in orientamenti e stati di chiusura specifici del dispositivo. Ad esempio, la postura da tavolo, che è uno stato HALF_OPENED con orientamento orizzontale, o la postura da libro, che è uno stato HALF_OPENED con 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 dei sample nel repository GitHub di AndroidX.
Tieni presente che per eseguire un test Robo è necessario solo il file APK dell'app, mentre un test di misurazione richiede sia un'app sia un APK di test compilati dal codice sorgente. Per ulteriori informazioni, consulta la sezione sui test con strumenti.
Quali dispositivi sono i migliori per i test di confronto degli screenshot?
I test di differenza di screenshot si basano sul confronto delle immagini sullo schermo ottenute durante l'esecuzione di un test con le immagini di riferimento che rappresentano il comportamento previsto. Questi test potrebbero essere meno affidabili su alcuni tipi di dispositivi rispetto ad altri. Per questi tipi di test, ti consigliamo di scegliere come target i dispositivi emulatore Arm (*.arm). I dispositivi di emulazione ARM utilizzano immagini molto simili o identiche a quelle degli emulatori "generici" di Android Studio.
Ti consigliamo inoltre di esaminare le librerie di test che possono contribuire a rendere più affidabili i test degli screenshot 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
campo environmentVariables.
Se utilizzi Android Test Orchestrator, dovrai fornire una directory per memorizzare i risultati della copertura:
Dove posso trovare i dettagli del dispositivo, come la risoluzione, le ABI supportate e così via?
Le informazioni dettagliate sul dispositivo sono disponibili tramite l'API e possono essere 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 al meglio con le app che utilizzano elementi dell'interfaccia utente 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 uscire senza esplorare oltre la prima schermata.