Scimmia di interfaccia utente/applicazioni

The Monkey è un programma che viene eseguito sul tuo emulatore o sul tuo dispositivo e genera flussi pseudo-casuali di eventi utente come clic, tocchi o gesti, nonché una serie di eventi a livello di sistema. Puoi utilizzare la scimmia per sottoporre a stress le applicazioni in fase di sviluppo, in modo casuale ma ripetibile.

Panoramica

La scimmia è uno strumento a riga di comando che puoi eseguire su qualsiasi istanza di emulatore o su un dispositivo. Invia un flusso pseudo-casuale di eventi utente nel sistema, che agisce come un test di stress sul software dell'applicazione che stai sviluppando.

Il menu Scimmia include una serie di opzioni, ma si dividono in quattro categorie principali:

  • Opzioni di configurazione di base, ad esempio l'impostazione del numero di eventi da provare.
  • Vincoli operativi, ad esempio la limitazione del test a un singolo pacchetto.
  • Tipi e frequenze di eventi.
  • Opzioni di debug.

Quando viene eseguito, la scimmia genera eventi e li invia al sistema. Inoltre, osserva il sistema in fase di test e cerca tre condizioni, che tratta in modo speciale:

  • Se hai limitato l'esecuzione in uno o più pacchetti specifici, il sistema controlla i tentativi di raggiungere altri pacchetti e li blocca.
  • Se l'applicazione si arresta in modo anomalo o riceve qualsiasi tipo di eccezione non gestita, la scimmia si arresta e segnala l'errore.
  • Se l'applicazione genera un errore L'applicazione non risponde, la scimmia si arresta e l'errore viene segnalato.

A seconda del livello di dettaglio selezionato, vedrai anche report sull'avanzamento della scimmia e sugli eventi generati.

Utilizzo di base della scimmia

Puoi avviare la modalità Scimmia utilizzando una riga di comando sulla tua macchina di sviluppo o da uno script. Poiché la scimmia viene eseguita nell'ambiente dell'emulatore/del dispositivo, devi avviarla da una shell in quell'ambiente. A questo scopo, anteponi adb shell a ogni comando oppure inserisci la shell e inserisci direttamente i comandi Monkey.

La sintassi di base è la seguente:

$ adb shell monkey [options] <event-count>

Senza opzioni specificate, la scimmia verrà avviata in modalità silenziosa (non dettagliata) e invierà eventi a tutti i pacchetti installati sulla destinazione. Ecco una riga di comando più tipica, che avvia l'applicazione e invia 500 eventi pseudo-casuali:

$ adb shell monkey -p your.package.name -v 500

Riferimento per le opzioni del comando

Nella tabella seguente sono elencate tutte le opzioni che puoi includere nella riga di comando Sequenza.

Categoria Opzione Descrizione
Generali --help Stampa una semplice guida all'uso.
-v Ogni volta -v nella riga di comando incrementerà il livello di Preferenze di lettura. Il livello 0 (predefinito) fornisce poche informazioni oltre alla notifica di avvio, al completamento del test e ai risultati finali. Il livello 1 fornisce maggiori dettagli sul test durante l'esecuzione, ad esempio singoli eventi inviati alle tue attività. Il livello 2 fornisce informazioni più dettagliate sulla configurazione, ad esempio le attività selezionate o non selezionate per i test.
Eventi -s <seed> Valore originale per il generatore di numeri pseudo-casuali. Se esegui nuovamente l'asset Monkey con lo stesso valore seed, verrà generata la stessa sequenza di eventi.
--throttle <milliseconds> Inserisce un ritardo fisso tra gli eventi. Puoi utilizzare questa opzione per rallentare la scimmia. Se non specificato, non si verifica alcun ritardo e gli eventi vengono generati il più rapidamente possibile.
--pct-touch <percent> Consente di regolare la percentuale di eventi tocco. Gli eventi tocco sono eventi down-up in un unico punto sullo schermo.
--pct-motion <percent> Regola la percentuale di eventi di movimento. Gli eventi di movimento consistono in un evento verso il basso da qualche parte sullo schermo, una serie di movimenti pseudo-casuali e un evento up.
--pct-trackball <percent> Consente di regolare la percentuale di eventi di trackball. Gli eventi trackball consistono in uno o più movimenti casuali, a volte seguiti da un clic.
--pct-nav <percent> Consente di regolare la percentuale di eventi di navigazione "di base". Gli eventi di navigazione consistono in su/giù/sinistra/destra, come input di un dispositivo di input direzionale.
--pct-majornav <percent> Regola la percentuale di eventi di navigazione "principali". Si tratta di eventi di navigazione che in genere causano azioni nell'interfaccia utente, come il pulsante centrale in un tastierino a 5 direzioni, il tasto Indietro o il tasto Menu.
--pct-syskeys <percent> Regola la percentuale di eventi chiave "di sistema". Si tratta di tasti generalmente riservati all'uso da parte del sistema, come i controlli Home, Indietro, Avvia chiamata, Chiudi o Volume.
--pct-appswitch <percent> Regola la percentuale di avvii dell'attività. A intervalli casuali, la scimmia emette una chiamata startActivity() per massimizzare la copertura di tutte le attività all'interno del pacchetto.
--pct-anyevent <percent> Regola la percentuale di altri tipi di eventi. Si tratta di un catch-all per tutti gli altri tipi di eventi, come pressioni di tasti, altri pulsanti meno utilizzati sul dispositivo e così via.
Vincoli -p <allowed-package-name> Se specifichi uno o più pacchetti in questo modo, il pacchetto consentirà al sistema solo di visitare le attività all'interno di quei pacchetti. Se la tua applicazione richiede l'accesso ad attività in altri pacchetti (ad esempio, per selezionare un contatto), dovrai specificare anche questi pacchetti. Se non specifichi nessun pacchetto, l'asset scimmia consentirà al sistema di avviare le attività in tutti i pacchetti. Per specificare più pacchetti, utilizza l'opzione -p più volte, un'opzione -p per pacchetto.
-c <main-category> Se specifichi una o più categorie in questo modo, il menu Scimmia consentirà al sistema di visitare solo le attività elencate con una delle categorie specificate. Se non specifichi alcuna categoria, la Scimmia selezionerà le attività elencate con la categoria Intent.CATEGORY_LAUNCHER o Intent.CATEGORY_MONKEY. Per specificare più categorie, utilizza l'opzione -c più volte, un'opzione -c per categoria.
Debug --dbg-no-events Se specificato, la scimmia eseguirà il lancio iniziale in un'attività di test, ma non genererà altri eventi. Per ottenere risultati ottimali, combina i valori con -v, uno o più vincoli del pacchetto e una limitazione diversa da zero per far funzionare l'asset Scimmia per almeno 30 secondi. Questo fornisce un ambiente in cui puoi monitorare le transizioni di pacchetti richiamate dalla tua applicazione.
--hprof Se impostata, questa opzione genererà report di profilazione immediatamente prima e dopo la sequenza di eventi Scimmia. In questo modo verranno generati file di grandi dimensioni (~5 MB) in dati/vari, quindi fai attenzione. Per informazioni sull'analisi dei report di profilazione, consulta Profilo delle prestazioni dell'app.
--ignore-crashes Normalmente, la scimmia si arresta quando l'applicazione ha un arresto anomalo o si verifica un qualsiasi tipo di eccezione non gestita. Se specifichi questa opzione, la modalità scimmia continuerà a inviare eventi al sistema fino al completamento del conteggio.
--ignore-timeouts Normalmente, la scimmia si arresta quando l'applicazione riscontra qualsiasi tipo di errore di timeout, ad esempio una finestra di dialogo "L'applicazione non risponde". Se specifichi questa opzione, la scimmia continuerà a inviare eventi al sistema fino al completamento del conteggio.
--ignore-security-exceptions Normalmente la scimmia si arresta quando l'applicazione riscontra un qualsiasi tipo di errore di autorizzazione, ad esempio se tenta di avviare un'attività che richiede determinate autorizzazioni. Se specifichi questa opzione, il menu contenente gli eventi continuerà a inviare eventi al sistema fino al completamento del conteggio.
--kill-process-after-error Normalmente, quando l'applicazione scimmia si arresta a causa di un errore, l'applicazione in errore rimane in esecuzione. Se questa opzione è impostata, il sistema segnalerà al sistema di interrompere il processo in cui si è verificato l'errore. Tieni presente che, in caso di completamento normale (riuscito), i processi avviati non vengono arrestati e il dispositivo viene semplicemente lasciato nell'ultimo stato dopo l'evento finale.
--monitor-native-crashes Controlla e segnala gli arresti anomali che si verificano nel codice nativo del sistema Android. Se è impostato --kill-process-after-error, il sistema verrà arrestato.
--wait-dbg Arresta l'esecuzione della scimmia finché non è collegato un debugger.