Automazione di un device lab Android: dispositivi ed emulatori

BeePOS LLC  |   |  11 min read

Trasformare una piccola piscina di telefoni e emulatori Android in un laboratorio di dispositivi ripetibili con stati di avvio espliciti, controlli osservabili, attese delimitate, prove di fallimento e una chiara regola di build-versus-buy.

Automazione di un device lab Android: dispositivi ed emulatori
Automazione di un device lab Android: dispositivi ed emulatori

La risposta breve: automatizzare il loop operativo, non lo scaffale

Un laboratorio di dispositivi Android diventa utile quando ogni corsa inizia da uno stato chiamato, esegue un controllo limitato, verifica una condizione post, e lascia prove che un'altra persona può rivedere. I telefoni, hub USB, stand ed etichette sono solo lo strato fisico. L'automazione del laboratorio di dispositivi Android è lo strato operativo che trasforma questi dispositivi in sistemi di rilascio ripetibili, supporto e controlli di localizzazione.

Se stai ancora scegliendo telefoni, cavi, potenza o storage, inizia con ilGuida di configurazione del laboratorio di dispositivi Android a basso costo. Questo articolo inizia dopo che l'hardware esiste. Spiega come combinare dispositivi reali ed emulatori, definire una piccola matrice di test, creare una scheda di esecuzione del dispositivo, sincronizzare su stato osservabile, catturare screenshot e log, e decidere quando un cloud del dispositivo ospitato è la scelta migliore.

L'obiettivo non è quello di sostituire test di unità, test Compose, Espresso, UI Automator, Appium, Gradle Managed Devices, o Firebase Test Lab. Questi strumenti possiedono diversi confini. AnonimoAI strumento di automazione Androidè più utile qui come uno strato di flusso di lavoro visibile per i controlli reali che gli operatori, i recensori QA e i team di supporto devono capire.

Offrire dispositivi reali ed emulatori diversi lavori

Un laboratorio di dispositivi non ha bisogno di ogni prova su ogni dispositivo. Gli emulatori sono veloci per creare, resettare, parametrizzare ed eseguire in parallelo. I telefoni reali espongono il firmware del fornitore, le telecamere fisiche, il Bluetooth, i prompt biometrici, il comportamento termico, le restrizioni di sfondo, la consegna delle notifiche, lo stato USB e le superfici di input che un dispositivo virtuale potrebbe non riprodurre fedelmente. Utilizzare queste differenze per dividere la responsabilità invece di discutere per una piattaforma universale.

Strato del laboratorioMiglior primo utilizzoNon assumere
Emulatore localeControllo rapido del fumo, copertura a livello API, riproduzione a stato pulitoQuell'hardware virtuale dimostra il comportamento specifico del fornitore o del sensore
telefono reale localeProva di rilascio, riproduzione di supporto, sistema UI, fotocamera, Bluetooth, comportamento OEMChe un modello rappresenta il mercato Android
Dispositivo virtuale ospitatoCorreggi paralleli elastici e configurazioni gestiteChe ogni test abbia bisogno di infrastrutture remote
Dispositivo reale ospitatoCopertura del modello più ampia senza mantenere hardwareL'ora della coda, la privacy e l'accesso all'artefatto si adattano a ogni flusso di lavoro
Test di sviluppo o quadroAsserzioni determinanti vicino al codice appChe un'affermazione di passaggio provi un flusso di lavoro visibile completo
Flusso visivo osservabilePercorsi di casella nera ripetibili e prove amichevoliQuelle schermate o OCR sostituiscono affermazioni semantiche

Un pratico modello di starter è un ampio livello virtuale e uno stretto livello fisico. Eseguire controlli deterministici veloci su configurazioni virtuali, quindi indirizzare un piccolo pacchetto critico attraverso due o tre telefoni reali scelti per il rischio reale del cliente. Espandi solo quando i dati di guasto mostrano che un altro modello, versione Android, locale o comportamento del fornitore cambia il risultato.

Definire una matrice di dispositivo con un motivo per riga

Firebase Test Lab descrive una matrice di test come la combinazione di dispositivi selezionati e configurazioni di test. Questa idea funziona anche per un laboratorio locale, ma la matrice dovrebbe essere basata sul rischio piuttosto che esaustiva. Ogni riga ha bisogno di un motivo, un proprietario e una decisione prevista. Un telefono che esiste solo perché era disponibile consuma tranquillamente carica, reset e tempo di manutenzione senza migliorare la fiducia del rilascio.

  • Mantenere una linea di base Android corrente per il percorso di rilascio principale.
  • Mantenere un vecchio livello API supportato per la compatibilità e il comportamento di aggiornamento.
  • Aggiungi un telefono reale specifico del fornitore solo quando il suo firmware, le autorizzazioni, la politica della batteria o la condivisione del cliente crea un rischio distinto.
  • Aggiungete una configurazione su piccola schermo o su larga scala quando si tratta di layout e accessibilità.
  • Aggiungi locale, tema, orientamento, rete o stato account solo per i controlli il cui risultato può cambiare in tale condizione.
  • Retire righe di matrice che non trovano più difetti distinti o supportano un segmento cliente corrente.

Nominare la decisione che ogni riga supporta: bloccare un rilascio, raccogliere prove di revisione, riprodurre un caso di supporto, o esplorare un sospetto dispositivo-specifico guasto. Questa decisione controlla quanta affidabilità, isolamento e segnalazione della riga ha bisogno. Un blocco di rilascio richiede regole di reset e affermazione più forti di un controllo esplorativo supervisionato.

Creare una carta di esecuzione prima di scrivere l'automazione

La più piccola specifica utile per un controllo del laboratorio è una scheda di esecuzione. Previene le ipotesi nascoste di vivere nella memoria di un operatore e dà l'automazione un contratto stabile. Scrivere la scheda in termini osservabili prima di scegliere nodi, selettori o codice quadro.

Campo Run-cardEsempioPerché è importante
OggettoVerificare il percorso di fumo sign-in dopo l'installazione di distribuzioneDefinisce la decisione che questa operazione sostiene
Costruire l'identitàPacchetto, versione, commit, ambienteImpedisce che le prove siano attaccate alla costruzione sbagliata
Identità del dispositivoModello, versione Android, alias seriale, dimensione dello schermoRende il risultato riproducibile
Inizio statoApp interrotta, firmata, rete online, finestre di dialogo di sistema cancellateRimuove lo stato accidentale da precedenti piste
Dati di inputConto test nominato e dispositivo non sensibileSepara i dati riutilizzabili dal flusso di lavoro
CondizioneHome marcatore visibile e stato conto confermatoProve l'azione ha prodotto il risultato previsto
Condizioni di arrestodialogo sconosciuto, schermo distruttivo, timeout, obiettivo mancantePreviene la continuazione cieca
ProveScreenshot, stato selezionato dell'interfaccia utente, timestamp, risultato passo, estrattore di registro rilevanteLascia un'altra persona triage senza rerunning immediatamente

Non definire il successo come una sequenza di rubinetti. Definire lo stato visibile o strutturato che deve esistere dopo la sequenza. I layout dell'interfaccia utente cambiano; le condizioni di business post sono più durevoli. Un controllo di login ha successo perché lo stato di account previsto e la superficie di casa sono presenti, non perché l'automazione ha toccato le coordinate dove un pulsante utilizzato per essere.

Ripristinare lo stato senza cancellare le prove

I dispositivi condivisi non riescono in modi che assomigliano a difetti dell'app: account stanti, consenso cache, aggiornamenti in sospeso, autorizzazioni modificate, archiviazione bassa, una tastiera inaspettata, una finestra di dialogo del sistema aperto, un overlay di notifica, o un precedente eseguito a metà strada attraverso il checkout. Reimpostare solo lo stato chiamato dalla scheda di esecuzione, e catturare un fallimento prima che il recupero cambia.

  1. Identificare il dispositivo e costruire prima di toccare lo stato.
  2. Catturare lo schermo attuale quando il run precedente si è concluso inaspettatamente.
  3. Ritorna l'app allo stato di inizio dichiarato utilizzando il reset meno distruttivo che è sufficiente.
  4. Confermare la rete, l'ora, lo storage, l'orientamento, la localizzazione, la scala dei caratteri e le autorizzazioni richieste.
  5. Verificare il marcatore start-state prima della prima azione aziendale.
  6. In quarantena il dispositivo se reimposta ripetutamente fallisce; non convertire un guasto dell'infrastruttura in un bug del prodotto.

Una salvietta completa non è automaticamente più sicura. Può distruggere lo stato esatto necessario per riprodurre un difetto e aggiunge il tempo di configurazione che incoraggia i team a saltare i controlli. Tenere i profili separati per i percorsi di installazione freschi, aggiornati, firmati, firmati e ripristinati quando questi stati portano diversi rischi.

Sincronizzare lo stato invece di dormire più a lungo

La guida di test-stabilità di Android avverte contro sonno arbitrario perché le prestazioni del dispositivo e il lavoro asincrono variano. Un ritardo fisso può essere troppo breve su un telefono occupato e inutilmente lento su uno veloce. Preferire un'attesa esplicita per una condizione significativa, con un timeout e un artefatto fallimento quando questa condizione non appare mai.

  • Dopo il lancio dell'app, attendere un elemento o uno stato dello schermo stabile dell'interfaccia utente piuttosto che un numero indovinato di secondi.
  • Dopo un tocco, verificare una condizione post prima di inviare l'ingresso successivo.
  • Utilizzare la ripetizione limitata per gli stati che hanno effettivamente bisogno di polling; registrare l'osservazione finale sul timeout.
  • Trattare le finestre di dialogo delle autorizzazioni di sistema, aggiornare i prompt e overlay OEM come rami nominati, non rumore casuale.
  • Interrompere quando lo stato visibile è al di fuori del set approvato, soprattutto prima di pagamento, cancellazione, consenso o modifiche dell'account.

La correnteLaiCai Flowil contratto segue questo modello visibile: Osservazioni dell'interfaccia utente, OCR, corrispondenza del modello e cattura dello schermo osservano lo stato; i nodi di ingresso e puntatore svolgono un'operazione; i nodi di flusso gestiscono attese, rami, loop legati, flussi di bambini, ritorni e fermate. Mantenere l'osservazione, la decisione e l'azione separate rende il flusso di lavoro più facile da rivedere e più sicuro da mantenere.

Costruisci un leggibileLaiCai Flowper i controlli di laboratorio

LaiCai Flowè una funzione di automazione all'internoLaiCai Screen Mirroring. Per un dispositivo-lab run, mantenere il flusso principale al livello un recensore QA può leggere: preparare il dispositivo, aprire il bersaglio, eseguire il controllo critico, raccogliere le prove e finire. Metta i dettagli tecnici multi-step in piccoli flussi di bambini invece di esporre una lunga catena di partite, selezioni, rubinetti e attese. TheLaiCai Flowguidaspiega come vengono organizzati profili e flussi.

  1. Leggi il contesto di dispositivo collegato e seleziona l'alias seriale previsto; non assumere che il primo dispositivo sia corretto.
  2. Confermare il pacchetto e l'attuale stato dell'interfaccia utente prima di aprire o modificare l'app.
  3. Utilizzare lo stato dell'interfaccia utente quando le informazioni di accessibilità sono stabili, OCR quando il testo visibile è la prova, e il modello corrispondente solo per un obiettivo di immagine convalidato.
  4. Posizionare l'attesa esplicita tra le azioni e le osservazioni posteriori indipendenti dallo schermo.
  5. Controllare una condizione post dopo ogni fase che cambia schermo o stato app.
  6. Cattura uno screenshot o la registrazione solo quando supporta una decisione di revisione nominata.
  7. Riportare un risultato di fase chiaro; fermare la corsa quando l'azione successiva non è giustificata dall'osservazione corrente.

Durante la preparazione di questa guida, il contesto di sola lettura LaiCai ha riferito 73 tipi di nodo disponibili e uno collegato Samsung Android 16 telefono. Ciò conferma il presente contratto e il percorso di consapevolezza del dispositivo; non è un benchmark delle prestazioni. Convalida la tua app, dispositivi, risorse e supporto runtime prima di trattare un profilo come infrastruttura di rilascio.

Raccogliere un pacchetto di fallimento, non un punto rosso

Un controllo fallito dovrebbe rispondere a quello che correva, dove correva, ciò che il sistema ha osservato, e perché la corsa si è fermata. Firebase Test Lab espone un modello utile riportando lo stato del test accanto a registri, screenshot e video dove disponibile. Un laboratorio di dispositivi locale ha bisogno della stessa disciplina anche se il suo storage è più semplice.

  • Eseguire ID, timestamp, versione flusso di lavoro, versione di costruzione e ambiente.
  • Modello di dispositivo, versione Android, alias seriale stabile, dimensione dello schermo, locale, tema e orientamento.
  • Avviare lo stato, l'identificatore di inserimento e l'ultima fase di business completata.
  • Preveduto postcondizione e il risultato effettivo selezionato UI, OCR, immagine o quadro.
  • Schermata prima del recupero, registrazione corta solo quando il movimento conta, e un limitato estratto di registro rilevante.
  • Classificazione: difetto del prodotto, difetto di prova, infrastruttura del dispositivo, dati, ambiente, o ha bisogno di revisione umana.

Utilizzare nomi di file stabili e un manifesto invece di una cartella di screenshot non strutturata. Ridurre i dati personali o segreti prima della condivisione. Non caricare interi registri del dispositivo quando un breve intervallo igienico-sanitario intorno al guasto è sufficiente. Le prove dovrebbero ridurre il lavoro della persona successiva senza creare un nuovo problema di privacy o di conservazione.

Scegliere i controlli che guadagnano il tempo del dispositivo

I minuti reali-dispositivi sono scarse perché i dispositivi hanno bisogno di ricarica, pulizia, aggiornamenti e accesso umano. Dagli a flussi di lavoro il cui comportamento visibile o fisico conta. I buoni primi candidati sono i controlli di fumo post-deploy, i percorsi di autorizzazione e di sistema-UI, la fotocamera o la configurazione Bluetooth, i flussi di notifica, le prove di localizzazione, le regressioni specifiche del fornitore e le riproduzioni di supporto esatte.

Mantenere la logica aziendale, la parsing, la formattazione e il comportamento dei componenti in test più rapidi vicino al codice. Utilizzare il dispositivo reale per dimostrare il limite di tali test non può: la costruzione installata, il sistema operativo, l'app esterna, la superficie di ingresso, la transizione di rete, o la composizione umana-visibile. TheConfronto degli strumenti di test dell'automazione Androidaiuta ad assegnare ogni requisito a uno strato appropriato.

Un pacchetto critico di cinque viaggi affidabili è più prezioso di cinquanta flussi che nessuno si fida. Iniziare con un percorso rappresentativo, misurare il ripristino e il costo del triage, quindi aggiungere la copertura solo quando un nuovo controllo protegge un rilascio specifico, cliente o decisione operativa.

Misurare il laboratorio prima di scalarlo

I team che discutono di auto-hosted dispositivi farm ripetutamente ritornano agli stessi input build-versus-buy: comportamento di coda, picco di concurrency, tempo di attesa, avvio o reset guasto, sforzo di manutenzione e difetti che appaiono solo su dispositivi fisici. Traccia quei segnali per diversi cicli di rilascio prima di acquistare più hardware o migrare tutto a una nuvola.

  • Queue attendere al momento del giorno e la priorità del flusso di lavoro.
  • Utilizzo del dispositivo e tempo non disponibile per la ricarica, gli aggiornamenti o la riparazione.
  • Avviare o ripristinare il tasso di guasto dal dispositivo.
  • Riproduce causati da flakiness di automazione piuttosto che cambiamenti di prodotto.
  • Tempo medio dal fallimento di una classificazione utile.
  • Distinct difetti trovati solo su dispositivi reali, fornitori specifici, o versioni specifiche Android.
  • Minuti dell'operatore per corsa di successo e per flusso di lavoro mantenuto.

Questi sono metriche di gestione, non dashboard di vanità. Se la coda di attesa è bassa ma la manutenzione domina, un servizio ospitato può ridurre i costi di proprietà. Se la privacy, le periferiche locali, il rapido debug interattivo, o la riproduzione ripetuta del supporto conta più della copertura del modello ampio, un piccolo laboratorio locale può rimanere il centro di gravità giusto.

Utilizzare una regola di build-versus-buy ibrida

I laboratori locali e ospitati sono complementi. Gradle Managed Devices può definire dispositivi virtuali nella costruzione e raggrupparli per l'esecuzione del test. Firebase Test Lab può estendere una matrice su dispositivi virtuali e fisici ospitati e restituire artefatti gestiti. Una piscina locale offre accesso immediato, periferiche proprietarie, debug supervisionato e dispositivi stabili per i controlli operativi ricorrenti.

ConstraenteDi solito favor localeDi solito favore ospitato
CoperturaAlcuni dispositivi notiMolti modelli, livelli API, orientamenti o locali
ConvalidaPrevedibile volume bassoDomanda di test bizzarra o altamente parallela
InterazioneRiproduzione frequente live debugging e supportoSuite standard non custodite
HardwareAccessori USB, dispositivi Bluetooth, rete locale, dispositivi personalizzatiNessuna periferica locale speciale
PrivacyI dati devono rimanere sulle apparecchiature locali controllateEsistono controlli di esecuzione remota approvati e di ritenzione
OperazioniIl team accetta la ricarica, la patch, i reset, l'inventario e la riparazioneTeam preferisce la disponibilità di dispositivi gestiti

Un ibrido sensibile mantiene test di framework rapidi su infrastrutture virtuali gestite, invia controlli di compatibilità selezionati per ospitare dispositivi reali e conserva una piccola panca locale per flussi fisici o supervisionati ad alto valore. La divisione di destra può cambiare come la convalutazione, la privacy e il cambiamento delle prove del cliente-dispositivo.

Controllo dell'automazione del laboratorio del dispositivo Android

  1. Assegna uno scopo e la decisione ad ogni riga di matrice del dispositivo.
  2. Emulatore separato, locale reale-dispositivo, ospitato, struttura-test, e le responsabilità del flusso visivo.
  3. Creare una carta di esecuzione con costruzione, dispositivo, stato di avvio, ingressi, postcondizioni, fermate e prove.
  4. Verifica lo stato di inizio prima della prima azione aziendale.
  5. Attendere condizioni osservabili invece di aggiungere sonno più cieco.
  6. Tenere le osservazioni, le decisioni e le azioni dei dispositivi come passi ispezionati separati.
  7. Acquisire prove prima di reset o il recupero cambia il fallimento.
  8. Classificare l'infrastruttura, i dati, i test, l'ambiente e i guasti del prodotto separatamente.
  9. Tracciare la coda, l'utilizzo, reimpostare l'affidabilità, le repliche sfarzose, il tempo di triage e i difetti fisici.
  10. Utilizzare una strategia ibrida locale e ospitata quando le prove lo supportano.

Inizia con un vero telefono, una configurazione emulatore, e una scheda di esecuzione business-critical. Rendere quel loop affidabile e recensibile prima di aggiungere un altro dispositivo o flusso di lavoro. Quando uno strato di un dispositivo-lab osservabile si adatta al tuo team, esploraAI Automazione Android conLaiCai Flowe mantenere i dettagli di attuazione nelGuida di flusso locale-aware.

Nota editoriale:BeePOS LLC, la società dietroLaiCai Screen Mirroring, ha ricercato questa guida utilizzando la documentazione ufficiale Android e Firebase linkato qui sotto, attuali contratti di prodotto di sola lettura LaiCai e discussioni pubbliche di QA. Le capacità del prodotto sono identificate separatamente dalla guida del flusso di lavoro neutro. Domande o correzioni possono essere inviate a support@laicaiapp.com.

Scarica la versione gratuita

Versione precedente 4.2.0: macOSWindows EXE

Nota: solo mirroring dello schermo Android.