The Monkey è un programma che viene eseguito sul tuo emulatore o 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 eseguire lo stress test delle applicazioni che stai sviluppando, in modo casuale ma ripetibile.
Panoramica
Monkey è uno strumento a riga di comando che puoi eseguire su qualsiasi istanza di emulatore o su un dispositivo. Invia al sistema un flusso pseudo-casuale di eventi utente, che agisce come uno stress test sul software dell'applicazione che stai sviluppando.
La 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 tentare.
- Vincoli operativi, ad esempio limitazione del test a un singolo pacchetto.
- Tipi di eventi e frequenze.
- Opzioni di debug.
Durante l'esecuzione, la scimmia genera eventi e li invia al sistema. Inoltre esamina il sistema in fase di test e cerca tre condizioni, che tratta in modo speciale:
- Se hai vincolato l'esecuzione della scimmia in uno o più pacchetti specifici, 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 arresterà e segnalerà l'errore.
- Se l'applicazione genera un errore L'applicazione non risponde, l'applicazione Scimmia si arresta e segnala l'errore.
A seconda del livello di Preferenze di lettura che hai selezionato, visualizzerai anche report sull'avanzamento della Scimmia e sugli eventi generati.
Utilizzo di base della scimmia
Puoi avviare Monkey utilizzando una riga di comando sulla tua macchina di sviluppo o da uno script.
Poiché Monkey viene eseguita nell'ambiente dell'emulatore/del dispositivo, devi avviarla da una shell in tale ambiente. Per farlo, puoi anteporre adb shell
a ogni comando oppure accedere alla shell e inserire direttamente i comandi Monkey.
La sintassi di base è la seguente:
$ adb shell monkey [options] <event-count>
Senza opzioni specificate, la modalità 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 che segue sono elencate tutte le opzioni che puoi includere nella riga di comando scimmia.
Categoria | Opzione | Descrizione |
---|---|---|
Generali | --help |
Consente di stampare una semplice guida all'utilizzo. |
-v |
Ogni tasto -v della riga di comando aumenterà il livello di Preferenze di lettura. Il livello 0 (il valore predefinito) fornisce poche informazioni oltre alla notifica di avvio, al completamento del test e ai risultati finali. Il livello 1 fornisce ulteriori dettagli sul test durante l'esecuzione, ad esempio singoli eventi inviati alle tue attività. Il livello 2 fornisce informazioni di configurazione più dettagliate, ad esempio le attività selezionate o non selezionate per il test. | |
Eventi | -s <seed> |
Valore originale per il generatore di numeri pseudo-casuali. Se esegui nuovamente la scimmia 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> |
Regola la percentuale di eventi tocco. Gli eventi touch sono un evento verso il basso in un unico punto sullo schermo. | |
--pct-motion <percent> |
Regola la percentuale di eventi di movimento. Gli eventi di movimento consistono in un evento "down" in un punto dello schermo, una serie di movimenti pseudo-casuali e un evento up. | |
--pct-trackball <percent> |
Regola la percentuale di eventi di trackball. Gli eventi di trackball consistono di uno o più movimenti casuali, talvolta seguiti da un clic. | |
--pct-nav <percent> |
Modifica la percentuale di eventi di navigazione "di base". Gli eventi di navigazione consistono in su/giù/sinistra/destra, come input da 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 generano azioni all'interno dell'interfaccia utente, ad esempio 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 tasti Home, Indietro, Avvia chiamata, Chiudi o i controlli del volume. | |
--pct-appswitch <percent> |
Regola la percentuale di avvii di 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 la pressione di un tasto, altri pulsanti meno utilizzati sul dispositivo e così via. | |
Vincoli | -p <allowed-package-name> |
Se specifichi uno o più pacchetti in questo modo, la Scimmia 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 es. per selezionare un contatto), dovrai specificare anche questi pacchetti. Se non specifichi alcun pacchetto, Monkey consentirà al sistema di avviare le attività in tutti i pacchetti. Per specificare più pacchetti, utilizza l'opzione -p più volte, una per pacchetto. |
-c <main-category> |
Se specifichi una o più categorie in questo modo, il sistema potrà solo visitare le attività elencate in 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, una 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 dei pacchetti e una limitazione diversa da zero per far funzionare la 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. Questo genererà file di grandi dimensioni (~5 Mb) in formato data/misc, quindi fai attenzione. Per informazioni sull'analisi dei report sulla profilazione, consulta Profilo delle prestazioni dell'app. | |
--ignore-crashes |
Normalmente, l'applicazione mondi si arresta quando l'applicazione ha un arresto anomalo o si verifica un qualsiasi tipo di eccezione non gestita. Se specifichi questa opzione, la scimmia continuerà a inviare eventi al sistema, fino al completamento del conteggio. | |
--ignore-timeouts |
Normalmente, l'evento 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, la scimmia 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 non riuscita viene lasciata in esecuzione. Se questa opzione è impostata, il sistema segnala l'interruzione del processo in cui si è verificato l'errore. Tieni presente che, in un normale completamento (riuscita), i processi avviati non vengono interrotti 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 --kill-process-after-error è impostato, il sistema verrà arrestato. | |
--wait-dbg |
Arresta l'esecuzione della scimmia finché non è collegato un debugger. |