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.