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.

  • ???? Idea centrale: Clic, pressioni di tasti e gesti casuali sondano il sistema alla ricerca di punti critici anzichรฉ di risultati attesi.
  • ๐Ÿฆ Contrasto del gorilla: Il gorilla testing si concentra sulla verifica ripetuta di un singolo modulo, mentre il monkey testing esplora l'intera applicazione.
  • ๐Ÿง  Tre livelli: Le scimmie stupide, intelligenti e brillanti differiscono per quanto riguarda la loro conoscenza del sistema in esame.
  • ๏ธ Un onesto compromesso: Economici e veloci da utilizzare, ma i difetti sono difficili da riprodurre e la copertura non puรฒ essere garantita.
  • ๏ธ Tooling: Android Strumenti come UI/Application Exerciser, MonkeyRunner e simili generano automaticamente flussi di eventi.
  • ๐ŸŽฏ migliore vestibilitร : Versioni preliminari, interfacce interattive e test di stabilitร , sempre abbinati a test esplorativi e basati su script.

Confronto tra test con scimmie e test con gorilla nei test del software.

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.

Il tester, che funge da scimmia, inserisce input casuali durante il test sulle scimmie.

  • 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.

Test su scimmie stupide, intelligenti e brillanti

  • 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:

  1. Registra l'applicazione in fase di test presso lo strumento o il server dedicato che la gestirร .
  2. Prepara i riferimenti e la configurazione necessari allo strumento per creare una suite di test.
  3. Eseguire la suite di test compilata.
  4. Lascia che lo strumento scriva il suo registro: il file di registro "monkey test" registra ogni evento generato e i relativi risultati.
  5. 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.
  6. 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.

DOMANDE FREQUENTI

Il nome si ispira all'immagine infinita della scimmia: una scimmia che preme tasti a caso per un tempo sufficientemente lungo alla fine produce qualcosa di significativo. Applicato al software, l'input casuale alla fine raggiunge stati che nessun progettista aveva previsto.

I test esplorativi sono intenzionali: chi effettua il test formula un'ipotesi, la indaga e la adatta. I test con le scimmie, invece, sono per definizione non diretti. Il primo si basa sul giudizio, il secondo sul volume e sulla casualitร .

Condividono il principio dell'input casuale, ma differiscono per l'obiettivo. Il monkey testing genera eventi utente su un'interfaccia. Il fuzzing, invece, alimenta parser e API con dati non validi, solitamente alla ricerca di falle di sicurezza.

Chaos Monkey appartiene al campo del chaos engineering: disabilita casualmente i servizi o interrompe l'infrastruttura per testarne la resilienza. L'idea comune รจ la casualitร , ma l'obiettivo รจ la piattaforma in esecuzione, non l'interfaccia utente.

I modelli possono orientare il flusso di eventi verso i percorsi effettivamente intrapresi dagli utenti, trasformando una scimmia stupida in una piรน intelligente. Inoltre, raggruppano i log di arresto anomalo duplicati e classificano quali errori casuali meritano per primi l'attenzione di uno sviluppatore.

Copilota GitHub Il framework รจ stato sviluppato rapidamente: generatori di eventi, gestione dei seed, analizzatori di log e script di triage degli arresti anomali. La strategia di casualitร  e i criteri di superamento devono ancora essere definiti da un tester.

Tra le metriche utili si annoverano i crash ogni mille azioni generate, il numero di difetti unici rilevati, la copertura del codice raggiunta durante l'esecuzione e il tempo al primo errore. รˆ consigliabile analizzare l'andamento di questi parametri tra le diverse build, anzichรฉ basarsi su una singola esecuzione.

Registra il seme casuale e il registro degli eventi. Gli strumenti che accettano un seme riprodurranno la stessa sequenza, in modo che l'errore possa essere circoscritto a un caso breve e riproducibile e segnalato come un normale difetto.

Riassumi questo post con: