Cos'รจ il test su scimmie e gorilla? Esempi, differenza
โก Riepilogo intelligente
Il monkey testing consiste nell'inserire input casuali e non pianificati in un'applicazione in esecuzione e osservare se questa sopravvive, in modo da individuare arresti anomali, blocchi e stati non gestiti molto prima che sia stato scritto qualsiasi caso di test predefinito.
Cos'รจ il Monkey Testing?
Test della scimmia Il monkey testing รจ una tecnica di test del software in cui il tester inserisce input casuali in un'applicazione senza casi di test predefiniti e verifica come si comporta l'applicazione, in particolare se si blocca. Lo scopo del monkey testing รจ quello di trovare bug ed errori attraverso un'interazione sperimentale e non predefinita.
Il nome deriva da una semplice immagine, illustrata qui sotto.
- Nel monkey testing, il tester (e a volte lo sviluppatore) viene trattato come la "scimmia".
- Se una scimmia usasse un computer, eseguirebbe i compiti in modo casuale, senza comprendere il sistema.
- Allo stesso modo, il tester applica input casuali al sistema in esame per trovare bug senza predefinire alcun caso di test.
- In alcuni casi la sperimentazione sulle scimmie รจ mirata a unit test or Test GUI.
Cos'รจ il Gorilla Test?
Test sui gorilla รจ una tecnica di test del software in cui un modulo del programma viene testato ripetutamente per confermare che funzioni correttamente e non contenga difetti.
Un singolo modulo puรฒ essere testato cento volte o piรน esattamente nello stesso modo, ed รจ per questo che il gorilla testing รจ anche noto come "test frustrante". Il monkey testing si diffonde in modo casuale all'interno dell'applicazione; il gorilla testing si concentra su un punto specifico finchรฉ non si verifica un guasto o finchรฉ non si dimostra efficace.
Tipi di test sulle scimmie
Il monkey testing si suddivide in categorie a seconda del livello di conoscenza del sistema da parte del tester. Il diagramma seguente riassume le tre tipologie.
- Scimmia stupida: Il tester non ha alcuna conoscenza del sistema o delle sue funzionalitร e non vi รจ alcuna garanzia che gli input siano validi.
- Scimmia intelligente: Il tester ha un'idea precisa del sistema, del suo scopo e delle sue funzionalitร , lo conosce bene e fornisce input validi.
- Scimmia brillante: Il tester si basa sul comportamento reale degli utenti ed รจ in grado di individuare i punti in cui รจ piรน probabile che si manifestino dei difetti.
Test sulle scimmie vs test sui gorilla vs test ad hoc
Test sulle scimmie, test sui gorilla e test ad hoc Hanno in comune un sapore spontaneo, motivo per cui vengono spesso confusi. Le due tabelle seguenti li distinguono.
Test sulle scimmie contro test sui gorilla
| Test delle scimmie | Test di gorilla |
|---|---|
| Eseguito in modo casuale, senza casi di test predefiniti specifici. | Nรฉ predefiniti nรฉ casuali: gli stessi controlli vengono semplicemente ripetuti. |
| Viene eseguito sull'intero sistema e puรฒ includere numerosi casi di test. | Eseguito su alcuni moduli selezionati con pochi casi di test. |
| L'obiettivo รจ verificare la presenza di un arresto anomalo del sistema. | L'obiettivo รจ verificare se il modulo funziona correttamente. |
Test con scimmie vs test ad hoc
| Test delle scimmie | Test ad hoc |
|---|---|
| Eseguito in modo casuale, senza casi di test predefiniti specifici. | Eseguito senza pianificazione nรฉ documentazione, pertanto non sono stati predisposti casi di test o specifiche dei requisiti software (SRS). |
| I collaudatori potrebbero non sapere cos'รจ il sistema o a cosa serve. | Il tester deve conoscere bene il sistema prima di iniziare i test. |
| L'obiettivo รจ verificare la presenza di un arresto anomalo del sistema. | L'obiettivo รจ suddividere il sistema in sottosezioni in modo casuale e verificarne la funzionalitร . |
Vantaggi e svantaggi della sperimentazione sulle scimmie
Poichรฉ questa tecnica privilegia la velocitร rispetto alla pianificazione, i suoi vantaggi e i suoi svantaggi derivano dalla stessa caratteristica.
Vantaggi della sperimentazione sulle scimmie
- Nuovi tipi di insetti: Il tester รจ libero di lavorare al di fuori degli scenari precedentemente indicati, il che fa emergere errori che nessuno aveva pensato di includere nello script.
- Facile da eseguire: Organizzare azioni casuali su dati casuali รจ un modo rapido per esercitare il sistema.
- Less persone qualificate: Spesso รจ possibile effettuare test sulle scimmie anche senza l'ausilio di tester altamente esperti.
- Less costoso: Richiede una spesa considerevolmente inferiore per l'installazione e la gestione rispetto a una suite basata su script.
Svantaggi della sperimentazione sulle scimmie
- I bug possono essere difficili da riprodurre: Poichรฉ gli input sono casuali, riprodurre un errore potrebbe non essere possibile senza un seme registrato.
- Less precisione: Il tester non puรฒ definire uno scenario preciso e non puรฒ garantire l'accuratezza di quanto testato.
- Le competenze tecniche sono ancora utili: Affinchรฉ i risultati siano significativi, i tester devono avere una buona conoscenza del settore.
- Lento rispetto alla resa: Le analisi possono protrarsi a lungo e rilevare ancora pochi difetti, lasciando delle lacune nel sistema.
Come eseguire il test sulle scimmie
Il monkey testing diventa molto piรน efficiente quando รจ guidato da uno strumento e puรฒ essere eseguito contro Android Si tratta di build, applicazioni desktop e web. Il processo generale รจ il seguente:
- Registra l'applicazione in fase di test presso lo strumento o il server dedicato che la gestirร .
- Prepara i riferimenti e la configurazione necessari allo strumento per creare una suite di test.
- Eseguire la suite di test compilata.
- Lascia che lo strumento scriva il suo registro: il file di registro "monkey test" registra ogni evento generato e i relativi risultati.
- Lascia che l'esecuzione prosegua fino a quando il sistema non raggiunge un punto di arresto anomalo, in cui l'azione incriminata viene registrata nel log.
- Condividi il report con il team responsabile e conserva i dati del test per riferimento futuro.
Conserva ogni registro. Una corsa casuale รจ utile in seguito solo se sono stati salvati la sequenza degli eventi e il seme che l'ha prodotta, quindi gestione dei difetti รจ possibile ricondurre l'arresto anomalo a un input riproducibile.
Strumenti di test per scimmie
I test sulle scimmie sono solitamente automatizzati, perchรฉ una macchina puรฒ generare migliaia di eventi nel tempo in cui una persona ne produce poche decine. Le opzioni comunemente utilizzate sono:
- UI/Application Exerciser Monkey: uno strumento da riga di comando integrato Android che corre nel adb shell e invia flussi pseudo-casuali di eventi utente, come tocchi, gesti e pressioni di tasti, oltre a eventi a livello di sistema, a un dispositivo o a un emulatore.
- ScimmiaRunner: un separato Python API che controlla dispositivi ed emulatori da una workstation, inviando comandi specifici e acquisendo schermate. Nonostante il nome, non รจ lo stesso strumento della scimmia da allenamento.
- UI Automator e Appium: generale test mobile Framework che possono essere programmati per attivare sequenze di eventi semi-casuali durante una build.
- Strumenti di fuzzing come AFL: la stessa idea di input casuale applicata ai dati anzichรฉ ai gesti, che รจ trattata in test fuzz.
Il supporto degli strumenti per i test con scimmie รจ piรน limitato rispetto a quello per gli script test di automazionePertanto, la maggior parte dei team integra un generatore di eventi generico nel proprio framework esistente, anzichรฉ acquistare un prodotto dedicato.
Quando utilizzare il Monkey Testing
I test su scimmie trovano impiego in situazioni specifiche, piuttosto che come sostituto generalizzato dei test pianificati.
Usalo quando:
- Una versione preliminare necessita di un controllo di stabilitร economico prima che siano disponibili casi di test formali.
- L'interfaccia รจ altamente interattiva (giochi, strumenti di disegno, lettori multimediali) e il comportamento reale dell'utente รจ difficile da prevedere.
- Vuoi fare un bagno o stress Esecuzione di un test che individua arresti anomali, perdite di memoria e stati non gestiti per molte ore.
- Una release ha superato i controlli automatici e si desidera eseguire una verifica indipendente per individuare eventuali elementi non modificati dallo script.
Evitatelo quando:
- ร necessaria una prova ripetibile che un requisito sia soddisfatto: questo รจ il compito di un documento scritto caso di prova.
- La build รจ talmente instabile che ogni esecuzione si blocca immediatamente, nascondendo tutto dietro al primo errore.
- Il tempo stringe, poichรฉ una ricerca casuale non garantisce di trovare nulla.
In pratica i risultati migliori si ottengono combinando diversi approcci: i test con script coprono i flussi noti, test esplorativi indaga deliberatamente l'ignoto e testa sulle scimmie qualsiasi cosa entrambi presumessero non sarebbe mai accaduta.


