La maggior parte dei tipi di test del software utilizza un piano di test accuratamente definito per garantire la copertura. Tuttavia, sebbene questi parametri coprano molte delle eventualità di utilizzo di un software, non sempre imitano il comportamento di un utente che non conosce l’applicazione e che sta semplicemente cercando di interagire con essa in modo esplorativo: Ecco il test della scimmia.
In questo articolo daremo un’occhiata a tutto ciò che riguarda i test con le scimmie, compresi il software per i test con le scimmie, i processi, i tipi, gli approcci e altro ancora.
Che cos’è il test delle scimmie?
Il test delle scimmie è una tecnica di verifica del software sempre più diffusa. Si tratta di inviare input casuali a un’applicazione per simulare l’imprevedibilità dell’interazione con l’interfaccia utente.
L’obiettivo è trovare bug o crash che potrebbero essere difficili da individuare con i casi di test predefiniti. Un test della scimmia imita il modo in cui una persona senza esperienza o conoscenza di un’applicazione potrebbe esplorare casualmente il software.
Questa tecnica è una buona opzione sia per
carico
sia per le prove di
test di stress
applicazioni. In effetti, i test forniscono input continui e casuali nel tentativo di rompere l’applicazione.
Esistono molte somiglianze tra i test su scimmia e i test ad hoc.
test ad hoc
In particolare, la loro natura casuale e la mancanza di dipendenza da un piano di test. Tuttavia, esistono differenze sufficienti tra i due approcci per considerarli distinti.
Sebbene alcuni sviluppatori sostengano che il monkey testing sia un tipo di test ad hoc, una differenza significativa tra i due è che il monkey testing può essere eseguito da persone che non conoscono l’applicazione.
Il test della scimmia consiste nel non avere un piano di test. Si tratta di immettere input casuali con l’obiettivo di mandare in crash il software.
Perché si chiama test delle scimmie?
Non c’è consenso sul motivo per cui questa tecnica viene chiamata test delle scimmie. Tuttavia, ci sono alcune teorie convincenti dietro il nome.
Teoria 1: teorema della scimmia infinita
La prima teoria suggerisce che il nome abbia a che fare con il teorema della scimmia infinita, una metafora utilizzata per discutere la probabilità statistica. In breve, afferma che se una scimmia si sedesse davanti a una macchina da scrivere e schiacciasse tasti a caso per un tempo infinito, a un certo punto produrrebbe l’opera completa di William Shakespeare.
L’idea è che il test delle scimmie simuli il mashing casuale dei tasti e, con un tempo sufficiente, coprirà ogni eventualità che l’applicazione dovrà affrontare in produzione.
Teoria 2: “La scimmia” di Macintosh
L’altra teoria è che il nome derivi da un’applicazione MacOS del 1983 chiamata “The Monkey”. In breve, il team che lavorava al primo computer Macintosh voleva trovare un modo per testare la propria macchina.
Hanno pensato che se avessero avuto una scimmia che batteva freneticamente sui tasti e muoveva il mouse, avrebbero potuto testare la resistenza del computer. Non avendo a disposizione una scimmia viva, hanno costruito un’applicazione in grado di simulare questo tipo di utilizzo e l’hanno chiamata “The Monkey”.
Perché il test delle scimmie è importante?
Il motivo principale per cui il monkey testing è importante è che aiuta i team a scoprire casi limite o comportamenti inaspettati all’interno di un’applicazione. L’idea è che gli sviluppatori possano utilizzare il monkey testing insieme a metodi più tradizionali per avere un’idea più precisa di come l’applicazione sarà accolta in natura.
Anche un test completo di un prodotto non può competere con decine di migliaia o più di utenti impegnati con un’applicazione per un lungo periodo di tempo. In una piccola percentuale di questi casi, gli utenti chiedono all’applicazione di fare qualcosa di inaspettato. Scoprire tutti questi scenari attraverso i casi di test è quasi impossibile.
I test con le scimmie cercano di coprire questi scenari quasi casuali. Quando gli sviluppatori costruiscono un caso di test, tendono ad avere una conoscenza approfondita dell’applicazione. Capiscono quali sono gli obiettivi degli utenti e conoscono la migliore sequenza di interazioni da utilizzare per ottenere qualcosa all’interno di un’applicazione.
La randomizzazione di questi input significa che l’applicazione viene testata in modi che gli sviluppatori non hanno considerato. Nel complesso, questo migliora la resilienza e la durata di un software e garantisce che possa andare in giro per il mondo e affrontare l’imprevedibilità di un’ampia gamma di utenti senza bloccarsi.
Quando si dovrebbe usare il test delle scimmie?
Il test con le scimmie è un’eccellente tecnica di verifica supplementare. Il suo più grande vantaggio risiede nella capacità di trovare bug inaspettati che non verrebbero scoperti dai metodi di test del software più tradizionali. Per questo motivo, è preferibile utilizzarlo insieme a metodi come:
In genere, gli sviluppatori utilizzano il monkey testing nelle prime fasi del processo di testing. È particolarmente utile quando mancano piani di test predefiniti a cui attingere.
Come viene eseguito il test delle scimmie?
In un passato non troppo lontano, i test sulle scimmie venivano eseguiti manualmente. I tester sono stati impiegati per premere pulsanti, inserire testo, selezionare oggetti e così via per vedere come il sistema avrebbe resistito a input non convenzionali. I problemi sono evidenti. In primo luogo, richiede molto tempo. In secondo luogo, non vi sono molte garanzie che queste azioni coprano ogni eventualità.
Esempi di test manuali di scimmia
Ecco alcuni esempi di come viene eseguito il test manuale delle scimmie. Può anche dare un’idea di ciò che i test automatizzati di scimmia cercano di simulare.
- Il tester naviga in un sito web cliccando su link casuali per vedere se possono mandare in crash l’applicazione o portare a pagine inaspettate.
- Un tester inserisce testi casuali in un campo del modulo per vedere come risponde l’applicazione.
- Il tester trascina e rilascia icone e oggetti per vedere se si comportano come previsto o se producono risultati indesiderati.
Diversi tipi di test sulle scimmie
Esistono tre tipi principali di test di scimmia che gli sviluppatori utilizzano per scoprire informazioni distinte sulla resilienza delle loro applicazioni.
1. Test della scimmia stupida
Il test della scimmia stupida descrive un approccio in cui il tester non sa nulla dell’applicazione da testare. Invece, al tester viene chiesto di curiosare in giro, completamente ignaro del flusso di lavoro, premendo pulsanti, inserendo testo e così via. Questa tecnica può aiutare a scoprire difetti significativi di cui gli sviluppatori non sono consapevoli.
2. Test sulle scimmie intelligenti
Con i test smart monkey, il tester conosce un po’ l’applicazione e i suoi obiettivi e ha persino informazioni dettagliate sul suo funzionamento. Questo processo utilizza anche un tipo di input casuale più mirato, progettato per spingere l’applicazione oltre determinati limiti. Questo approccio è utile sia per i test di stress che per quelli di carico.
3. Test brillanti sulle scimmie
Il test delle scimmie brillanti è il livello successivo a quello delle scimmie intelligenti. Il tester ha una conoscenza approfondita e completa dell’applicazione e viene scelto in base a questa conoscenza. Questa svista può aiutare il tester a scoprire molti bug perché dovrebbe capire il prodotto dal punto di vista dell’utente.
Pro e contro dei test sulle scimmie
Prima di decidere di utilizzare la tecnica del monkey testing, è necessario comprenderne i pro e i contro.
Vantaggi del test della scimmia
1. Trovare bug rari o nascosti
Forse il vantaggio più convincente del monkey testing è la capacità della tecnica di scoprire bug, difetti o comportamenti che altrimenti potrebbero rimanere sconosciuti. Trovare questi casi limite è difficile con le tecniche di test tradizionali, quindi il monkey testing è un modo solido per verificare la presenza di crash, corruzioni di dati e qualsiasi altra cosa che minacci la stabilità di un’applicazione.
2. Garantisce la robustezza
Il test delle scimmie è progettato per vedere come un’applicazione risponde alle condizioni imprevedibili che si troverà ad affrontare durante l’utilizzo nel mondo reale. Quando un’applicazione viene messa nelle mani dell’utente, si verifica un gran numero di input diversi che gli sviluppatori non possono prevedere. I test con le scimmie riproducono questa situazione e portano a costruzioni più affidabili.
3. Costo-efficacia
Rispetto ad altri tipi di test, quello sulle scimmie è molto conveniente. Le ragioni sono molteplici. In primo luogo, non è necessario dedicare molto tempo alla progettazione di casi d’uso per la vostra applicazione. Inoltre, gli strumenti software per il test delle scimmie sono in gran parte automatizzati, il che libera il tempo degli sviluppatori per altre attività, facendovi risparmiare denaro.
4. Versatilità
Uno degli aspetti migliori dei test con le scimmie è che possono essere eseguiti anche da persone prive di conoscenze tecniche. Anzi, in alcuni casi è preferibile avere qualcuno che sia completamente verde. Inoltre, questi test sono piuttosto semplici da impostare, il che riduce ancora una volta la dipendenza da ingegneri specializzati.
5. Rilevamento precoce dei bug
Trovare e risolvere i bug nelle prime fasi del ciclo di vita dello sviluppo fa risparmiare tempo in futuro. I test con le scimmie introducono un livello di casualità nei test, che può aiutare a trovare difetti nel codice mentre è facile risolverli.
Svantaggi del test della scimmia
1. Copertura
Sebbene i test di scimmia possano migliorare la copertura dei test, mancano della completezza pianificata e strategica di altri tipi di test. In effetti, poiché l’applicazione viene riempita di input casuali, si è in balia del caos per trovare i bug. Questo non significa che non troverà tutto, ma senza una strategia chiara e predefinita non si può essere sicuri al 100% che tutto sia stato catturato.
2. Applicazioni limitate
Il test della scimmia non è adatto a tutti i tipi di applicazione. È ideale per le applicazioni complesse con molte caratteristiche e funzioni diverse che, soprattutto, hanno il potenziale per interazioni inaspettate da parte dell’utente. I programmi che offrono funzioni più rigide e prevedibili hanno meno probabilità di beneficiare di questi test.
3. Richiede tempo
Il test manuale delle scimmie richiede molto tempo. Richiede molte interazioni con moduli e software, senza alcuna garanzia che ogni sessione scopra i bug. È possibile automatizzare il processo, con un notevole risparmio di tempo e risorse.
4. Falsi positivi
A causa della natura caotica o casuale del monkey testing, alcuni input possono simulare scenari che non si verificheranno durante l’uso reale del prodotto. Questa situazione può generare falsi positivi, inducendo i codificatori a risolvere problemi non necessari.
Che cos’è il test della scimmia del caos?
Il Chaos testing è una tecnica di ingegneria del software che utilizza esperimenti controllati e deliberati progettati per interrompere un sistema (e persino indurre guasti) per valutarne la resilienza e la capacità di recupero.
L’idea di rompere intenzionalmente un sistema per garantirne la resilienza è piuttosto comune nello spazio di sviluppo del software, e questi metodi di solito si traducono in progetti che gli ingegneri possono sostenere.
Nel 2008, dopo aver subito un danneggiamento del database durato tre giorni, il popolare servizio di streaming Netflix ha deciso di migrare ad Amazon Web Services (AWS). L’obiettivo era quello di evitare singoli punti di guasto e ridurre i problemi di scalabilità derivanti dall’espansione del servizio.
Il team ha implementato il chaos monkey testing per testare le istanze rivolte al pubblico sull’infrastruttura AWS. I vantaggi erano duplici:
- Il processo ha messo in luce i punti deboli che gli ingegneri di Netflix hanno potuto correggere.
- Questo ha ispirato il team a costruire meccanismi di recupero automatico per il loro servizio.
I test della scimmia del caos fanno parte dell’ingegneria del caos. Viene utilizzato per verificare la tolleranza ai guasti di un sistema e la sua capacità di mantenere la stabilità e le prestazioni anche in caso di guasti imprevisti di singoli componenti.
Pur essendo correlata al test delle scimmie, è una tecnica distinta.
Test della scimmia vs test del gorilla
Potreste anche aver sentito parlare del concetto di Gorilla testing nello sviluppo del software. Sebbene entrambe le tecniche abbiano il nome di primati, presentano molte somiglianze e differenze. Analizziamo cos’è il Gorilla testing e dove può essere utilizzato.
Il test del gorilla è considerato una versione più strutturata del test della scimmia. In confronto, il monkey testing è spesso utilizzato nelle prime fasi del test, quando non sono disponibili casi di test formali. Il Gorilla testing, invece, utilizza uno strumento o uno script automatico per generare input casuali per un’applicazione software.
Il Gorilla Test è rapido e molto più efficiente del test manuale delle scimmie. Offre un’ampia copertura ed è un modo eccellente per trovare gli arresti anomali che devono essere risolti. Tuttavia, è preferibile utilizzarlo per applicazioni con confini ben definiti o per testare a fondo un particolare modulo.
Sia il test della scimmia che quello del gorilla hanno il loro posto nei moderni test di sviluppo del software. Comprenderli è fondamentale per utilizzare l’approccio giusto nello spazio giusto.
Qual è il miglior strumento per il test delle scimmie?
Il software per il test delle scimmie è diventato una parte essenziale del kit di strumenti dello sviluppatore moderno. Tuttavia, esistono alcune opzioni. Quindi, qual è il miglior strumento per il test delle scimmie? Eccone alcuni che è bene conoscere.
1. ZAPTEST
ZAPTEST è un potente
strumento di automazione del test del software gratuito e aziendale
che supporta un’ampia gamma di tecniche di automazione dei test, compreso il test delle scimmie. Alcune delle funzioni di ZAPTEST che aiutano a eseguire i test sulle scimmie includono:
- Registrazione di script senza codice: I team possono registrare le interazioni degli utenti e convertirle in codice di test.
- Generazione di input: ZAPTEST facilita la generazione di input casuali, che è un elemento fondamentale del test delle scimmie.
- Reportistica robusta: ZAPTEST offre potenti funzionalità di reporting che aiutano a documentare i test.
Naturalmente, queste caratteristiche sono solo una scalfittura delle capacità di ZAPTEST per un’ampia gamma di tecniche di test, compresi i test di scimmia. Con l’integrazione di WebDriver, le funzionalità AI e ZAPTEST CoPilot, i team possono sperimentare il futuro del testing del software in un unico luogo.
Inoltre, gli utenti di ZAPTEST Enterprise hanno accesso a un esperto ZAP dedicato a tempo pieno e a licenze illimitate, il tutto a un costo fisso prevedibile.
2. Appium
Appium è uno strumento open-source. È possibile utilizzarlo sia per Android che per iOS. Permette agli utenti di automatizzare le interazioni delle applicazioni mobili e dispone di funzionalità di test delle scimmie. Gli sviluppatori possono imitare un’ampia gamma di reazioni dell’interfaccia utente, come l’inserimento di testo, il clic, il tocco e lo scorrimento.
Appium è un ottimo strumento per gli sviluppatori mobili, ma manca di funzionalità per i test su desktop e web.
3. Test della scimmia
Monkey Test It è una piattaforma di test basata su cloud con una serie di funzionalità di test che includono il test delle scimmie. Sebbene Monkey Test It sia molto facile da usare, forse manca della potenza degli strumenti concorrenti.
Altri svantaggi sono che potrebbe avere un aspetto più elegante e una documentazione migliore. Inoltre, alcuni utenti hanno lamentato l’imprecisione dei risultati dei test. Detto questo, si tratta di un programma semplice con un prezzo basso, quindi non ci si può aspettare il mondo da esso.
4. MonkeyTestJS
MonkeyTestJS è uno strumento open-source australiano basato su JavaScript e costruito solo per applicazioni web. È piuttosto elementare, ma è più che in grado di svolgere il suo compito. Lo strumento consente agli sviluppatori di simulare le interazioni tra utente e applicazione web, come i clic, l’invio di moduli, gli input da tastiera e altro ancora.
Ovviamente, uno svantaggio di questo strumento è che è disponibile solo per le applicazioni web. Tuttavia, vale la pena di averlo nella cassetta degli attrezzi.
Qual è il miglior strumento dedicato al test delle scimmie di Android?
Ci sono alcune buone opzioni per gli sviluppatori che vogliono portare un po’ di caos nei test delle loro applicazioni Android. Vediamone due.
1. UI/Application Exerciser Monkey per Android
UI/Application Exerciser Monkey per Android è uno strumento a riga di comando che consente agli sviluppatori di inviare input o eventi pseudo-casuali a dispositivi ed emulazioni Android. Questo strumento viene eseguito nella shell di Android Debug Bridge.
2. MonkeyRunner per Android
MonkeyRunner per Android è un popolare strumento di test delle scimmie per Android. Il software è un’API che consente agli sviluppatori di scrivere programmi che emulano o controllano un dispositivo Android. È anche una buona opzione per i test funzionali e unitari.
Entrambe le applicazioni sono valide opzioni. Tuttavia, sono piuttosto tecnici e non sono adatti a tutte le squadre.
I test delle scimmie dovrebbero essere automatizzati?
Uno dei problemi principali dei test manuali con le scimmie è che richiedono molto tempo. L’altra cosa da notare è che è difficile per pochi tester simulare davvero le varie interazioni che un’ampia base di utenti potrebbe avere con una particolare applicazione.
Quindi, tre svantaggi immediati saltano all’occhio. Il test manuale delle scimmie è:
- Richiede tempo
- Costoso
- Potenzialmente carente in termini di copertura
Uno strumento automatizzato per il test delle scimmie risolve tutti questi problemi.
ZAPTEST è la scelta giusta per le vostre esigenze di test sulle scimmie?
Il test delle scimmie è una buona tecnica da avere nel proprio repertorio di test, soprattutto se si progettano applicazioni complesse. Tuttavia, l’acquisto di un software dedicato al test delle scimmie è costoso.
ZAPTEST
è uno strumento di automazione dei test
strumento di automazione dei test full-stack.
È altamente personalizzabile e consente agli sviluppatori e ai team non tecnici di costruire e progettare un’infinità di tecniche di test del software, compresi i test di scimmia.
Il test della scimmia è un’ottima scelta se integrato con altri tipi di test. ZAPTEST offre tutto sotto un unico tetto, con l’aggiunta di strumenti RPA di alta qualità.
Riflessioni finali
Il software di testing Monkey offre agli sviluppatori un modo non convenzionale di testare le loro applicazioni. La forza di questa tecnica risiede nella sua capacità di simulare la miriade di modi imprevedibili in cui un utente può interagire con un software. In breve, il monkey testing fornisce una copertura che potrebbe essere difficile da raggiungere con un piano di test.