De fleste former for softwaretest bruger en omhyggeligt defineret testplan til at sikre dækning. Men selvom disse parametre dækker mange af de muligheder, der er for at bruge et stykke software, vil de ikke altid efterligne adfærden hos en bruger, der ikke er bekendt med applikationen og blot forsøger at interagere med den på en udforskende måde: Så er der monkey testing.
I denne artikel ser vi på alt, hvad der har med monkey testing at gøre, herunder software til monkey testing, processer, typer, tilgange og meget mere.
Hvad er abetest?
Monkey testing er en stadig mere populær softwaretestteknik. Det indebærer, at man sender tilfældige input ind i et program for at simulere uforudsigeligheden i brugergrænsefladens interaktion.
Målet er at finde fejl eller nedbrud, som kan være svære at opdage med foruddefinerede testcases. En abetest efterligner, hvordan en person uden erfaring eller viden om et program tilfældigt kan udforske softwaren.
Denne teknik er en god mulighed for både
belastning
og
stresstest
applikationer. I virkeligheden giver tests løbende tilfældige input i et forsøg på at ødelægge applikationen.
Der er mange ligheder mellem monkey testing og
ad hoc-testning
især deres tilfældige karakter og manglende afhængighed af en testplan. Der er dog nok forskelle mellem de to til at betragte dem som forskellige tilgange.
Nogle udviklere mener, at monkey testing er en form for ad hoc-test, men en væsentlig forskel mellem de to er, at monkey testing kan udføres af folk uden kendskab til applikationen.
Monkey testing handler om ikke at have en testplan. Det handler om at tilføre tilfældige input med det formål at crashe softwaren.
Hvorfor kaldes det abetest?
Der er ikke enighed om, hvorfor denne teknik kaldes monkey testing. Der er dog et par overbevisende teorier bag navnet.
Teori 1: Teoremet om den uendelige abe
Den første teori antyder, at navnet har at gøre med teoremet om den uendelige abe, en metafor, der bruges til at diskutere statistisk sandsynlighed. Kort sagt siger den, at hvis en abe sad foran en skrivemaskine og trykkede på tilfældige taster i uendelig lang tid, ville den på et tidspunkt producere William Shakespeares samlede værker.
Ideen her er, at monkey testing simulerer disse tilfældige tastetryk, og med tilstrækkelig tid vil det dække alle de eventualiteter, som applikationen vil blive udsat for i produktion.
Teori 2: Macintosh’s “aben”
Den anden teori er, at navnet kommer fra et MacOS-program fra 1983 kaldet “The Monkey”. Kort sagt ønskede holdet, der arbejdede på den første Macintosh-computer, at finde en måde at stressteste deres maskine på.
De tænkte, at hvis de havde en abe, der febrilsk hamrede løs på tasterne og flyttede rundt på musen, ville det hjælpe dem med at teste computerens modstandsdygtighed. De havde ikke en levende abe ved hånden, så de byggede et program, der kunne simulere denne form for brug, og kaldte det “The Monkey”.
Hvorfor er abetests vigtige?
Den vigtigste grund til, at monkey testing er vigtigt, er, at det hjælper teams med at opdage edge cases eller uventet adfærd i en app. Ideen er, at udviklere kan bruge abetest sammen med mere traditionelle metoder for at få en bedre fornemmelse af, hvordan appen vil blive modtaget i naturen.
Selv omfattende test af et produkt kan ikke konkurrere med titusindvis eller flere brugere, der beskæftiger sig med en applikation over lang tid. I en lille procentdel af disse tilfælde vil brugerne bede programmet om at gøre noget uventet. Det er næsten umuligt at afdække alle disse scenarier via testcases.
Monkey testing forsøger at dække disse næsten tilfældige scenarier. Når udviklere bygger en testcase, har de en tendens til at have et indgående kendskab til appen. De forstår, hvad brugernes mål er, og de kender den bedste rækkefølge af interaktioner, de skal bruge for at opnå noget i en app.
Randomisering af disse inputs betyder, at applikationen testes på måder, som udviklerne ikke har overvejet. Alt i alt forbedrer det den overordnede modstandsdygtighed og holdbarhed af et stykke software og sikrer, at det kan gå ud i verden og møde uforudsigeligheden hos en bred vifte af brugere uden at gå ned.
Hvornår skal man bruge monkey testing?
Monkey testing er en fremragende supplerende testteknik. Dens største fordel ligger i dens evne til at finde uventede fejl, som ikke ville blive opdaget med mere traditionelle softwaretestmetoder. Derfor er den bedst, når den bruges sammen med metoder som:
Typisk anvender udviklere monkey testing tidligt i testprocessen. Det er især nyttigt, når der mangler foruddefinerede testplaner at trække på.
Hvordan udføres abetest?
I en ikke så fjern fortid blev abetest udført manuelt. Testerne blev ansat til at trykke på knapper, indtaste tekst, vælge objekter og så videre for at se, hvordan systemet ville modstå ukonventionelle input. Der er åbenlyse problemer her. For det første er det ret tidskrævende. For det andet er der ingen garanti for, at disse tiltag vil dække alle eventualiteter.
Eksempler på manuel monkey testing
Her er et par eksempler på, hvordan manuel monkey testing udføres. Det kan også give dig en idé om, hvad automatiseret monkey testing forsøger at simulere.
- Testeren navigerer rundt på en hjemmeside ved at klikke på tilfældige links for at se, om de kan få applikationen til at gå ned eller føre til uventede sider.
- En tester indtaster tilfældige tekster i et formularfelt for at se, hvordan programmet reagerer.
- Testeren trækker og slipper ikoner og objekter for at se, om de opfører sig som forventet eller giver uønskede resultater.
Forskellige typer af abetest
Der er tre hovedtyper af monkey tests, som udviklere bruger til at finde forskellige oplysninger om deres applikationers modstandsdygtighed.
1. Test af dumme aber
Dumb monkey testing beskriver en tilgang, hvor testeren ikke ved noget om den applikation, der testes. I stedet bliver testeren bedt om at rode rundt helt uvidende om arbejdsgangen, trykke på knapper, indtaste tekst og så videre. Denne teknik kan hjælpe med at afdække væsentlige fejl, som udviklerne ikke er opmærksomme på.
2. Test af intelligente aber
Med smart monkey testing ved testeren en smule om applikationen og dens mål og har endda detaljerede oplysninger om, hvordan den fungerer. Denne proces bruger også en mere fokuseret type tilfældigt input, der er designet til at presse applikationen ud over bestemte grænser. Denne tilgang er god til både stress- og belastningstest.
3. Strålende abetest
Brilliant monkey testing er næste niveau op fra smart monkey testing. Testeren har en stærk og omfattende viden om applikationen og vælges ud fra denne viden. Dette overblik kan hjælpe testeren med at opdage en masse fejl, fordi de skal forstå produktet fra brugerens perspektiv.
Fordele og ulemper ved abetest
Før du beslutter dig for at bruge abetestteknikken, er du nødt til at forstå dens fordele og ulemper.
Fordele ved abetest
1. At finde sjældne eller skjulte fejl
Den måske mest overbevisende fordel ved monkey testing er teknikkens evne til at afsløre fejl, defekter eller adfærd, som ellers ikke ville blive opdaget. Det er udfordrende at finde disse edge cases med traditionelle testteknikker, så monkey testing er en solid måde at teste for nedbrud, datakorruption og alt andet, der truer stabiliteten i en applikation.
2. Det sikrer robusthed
Monkey testing er designet til at se, hvordan en applikation reagerer på de uforudsigelige forhold, den vil møde i den virkelige verden. Når en applikation lægges i brugerens hænder, vil det resultere i masser af forskellige input, som udviklerne ikke kan forudse. Monkey testing efterligner den situation, hvilket fører til mere pålidelige builds.
3. Omkostningseffektivitet
Sammenlignet med andre typer test er abetest meget omkostningseffektive. Det er der et par grunde til. For det første behøver du ikke bruge en masse tid på at designe use cases til din app. Dernæst er softwareværktøjer til abetest i vid udstrækning automatiserede, hvilket frigør udviklernes tid til andre opgaver og sparer dig penge.
4. Alsidighed
En af de bedste ting ved monkey testing er, at testene kan udføres af folk uden teknisk baggrund. I nogle tilfælde er det faktisk at foretrække at have en, der er helt grøn. Desuden er disse tests ret enkle at sætte op, hvilket igen reducerer afhængigheden af dygtige ingeniører.
5. Tidlig opdagelse af fejl
At finde og løse fejl tidligt i udviklingscyklussen sparer tid senere hen. Monkey testing introducerer et niveau af tilfældighed i testen, som kan hjælpe dig med at finde fejl i din kode, mens den er nem at rette.
Ulemper ved abetest
1. Dækning
Selvom monkey testing kan resultere i forbedret testdækning, mangler det den planlagte og strategiske grundighed, som andre testtyper har. Fordi du bombarderer appen med tilfældige input, er du i realiteten prisgivet kaos, når du skal finde fejl. Det betyder ikke, at den ikke finder det hele, men uden en klar og foruddefineret strategi kan du ikke være 100 % sikker på, at alt er blevet fanget.
2. Begrænsede anvendelsesmuligheder
Monkey testing er ikke egnet til alle typer applikationer. Det er fantastisk til komplekse apps med masser af forskellige funktioner, som især har potentiale for uventede brugerinteraktioner. Programmer, der tilbyder mere stive og forudsigelige funktioner, vil sandsynligvis have mindre gavn af disse tests.
3. Tidskrævende
Manuel monkey testing er meget tidskrævende. Det kræver mange interaktioner med moduler og software, og der er ingen garanti for, at hver session vil opdage fejl. Det er muligt at automatisere processen, hvilket sparer meget tid og mange ressourcer.
4. Falske positive resultater
På grund af abetestens kaotiske eller tilfældige natur kan nogle input simulere scenarier, som ikke vil ske, når man bruger produktet i den virkelige verden. Denne situation kan resultere i, at der genereres falske positiver, hvilket får koderne til at løse problemer, som ikke er nødvendige.
Hvad er kaosabe-test?
Kaostest er en softwareteknik, der bruger kontrollerede og bevidste eksperimenter designet til at forstyrre et system (og endda fremkalde fejl) for at vurdere dets modstandsdygtighed og evne til at komme sig.
Ideen om bevidst at bryde et system for at sikre modstandsdygtighed er ret almindelig inden for softwareudvikling, og disse metoder resulterer typisk i bygninger, som ingeniører kan stå inde for.
I 2008 besluttede den populære streamingtjeneste Netflix at migrere til Amazon Web Services (AWS) efter at have oplevet en tre dage lang databasekorruption. Målet var at undgå single points of failure og reducere problemer med skalerbarhed som følge af udvidelsen af deres service.
Teamet implementerede chaos monkey testing for at teste offentligt tilgængelige instanser på AWS-infrastrukturen. Fordelene var tofoldige:
- Processen afslørede svagheder, som Netflix’ ingeniører kunne rette op på.
- Det inspirerede teamet til at bygge automatiserede gendannelsesmekanismer til deres tjeneste.
Chaos monkey testing er en del af Chaos Engineering. Det bruges til at teste et systems fejltolerance og dets evne til at opretholde stabilitet og ydeevne, selv når enkelte komponenter fejler uventet.
Selvom det er beslægtet med abetest, er det en særskilt teknik.
Monkey testing vs Gorilla testing
Du har måske også hørt om begrebet Gorilla-test inden for softwareudvikling. Selvom begge teknikker har navne fra primater, har de mange ligheder og forskelle. Lad os undersøge, hvad Gorilla-test er, og hvor det kan bruges.
Gorilla-test betragtes som en mere struktureret version af monkey-test. Til sammenligning bruges abetest ofte i de tidlige testfaser, når der ikke er nogen formelle testcases til rådighed. Gorilla-test bruger på den anden side et automatiseret værktøj eller script til at generere tilfældige input til et softwareprogram.
Gorilla-test er hurtig og langt mere effektiv end manuel abetest. Det giver en bred dækning, og det er en fremragende måde at finde nedbrud på, som skal løses. Det er dog bedst at bruge til applikationer med veldefinerede grænser eller til at teste et bestemt modul grundigt.
Både abetest og gorillatest har deres plads i moderne test af softwareudvikling. At forstå dem er nøglen til at bruge den rigtige tilgang på det rigtige sted.
Hvad er det bedste værktøj til monkey testing?
Monkey testing-software er blevet en vigtig del af den moderne udviklers værktøjskasse. Der er dog et par muligheder derude. Så hvilket er det bedste værktøj til monkey testing? Her er et par stykker, som du bør kende til.
1. ZAPTEST
ZAPTEST er et kraftfuldt
gratis automatiseringsværktøj til softwaretest i virksomheder
der understøtter en bred vifte af testautomatiseringsteknikker, herunder monkey testing. Nogle af de ZAPTEST-funktioner, der hjælper med abetest, omfatter:
- Scriptoptagelse uden kode: Teams kan optage brugerinteraktioner og konvertere dem til testkode.
- Generering af input: ZAPTEST gør det lettere at generere tilfældige input, hvilket er et kerneelement i monkey testing.
- Robust rapportering: ZAPTEST tilbyder stærke rapporteringsfunktioner, der hjælper dig med at dokumentere dine tests.
Disse funktioner skraber selvfølgelig kun i overfladen af ZAPTEST’s muligheder for en lang række testteknikker, herunder abetests. Med WebDriver-integration, AI-funktioner og ZAPTEST CoPilot kan teams opleve fremtiden inden for softwaretest på ét sted.
Desuden får ZAPTEST Enterprise-brugere adgang til en dedikeret ZAP-ekspert på fuld tid og ubegrænsede licenser – alt sammen til en forudsigelig fast pris.
2. Appium
Appium er et open source-værktøj. Du kan bruge den til både Android og iOS. Det giver brugerne mulighed for at automatisere mobilapplikationsinteraktioner og har abetestfunktioner. Udviklere kan efterligne en lang række reaktioner i brugergrænsefladen, som at indtaste tekst, klikke, trykke og scrolle.
Mens Appium er et fantastisk værktøj til mobiludviklere, mangler det funktioner til desktop- og webtest.
3. Monkey Test It
Monkey Test It er en cloud-baseret testplatform med en række testfunktioner, der inkluderer abetest. Selvom Monkey Test It er meget brugervenligt, har det måske ikke samme kraft som konkurrerende værktøjer.
Andre ulemper er, at det kunne se pænere ud og komme med bedre dokumentation. Desuden har nogle brugere klaget over unøjagtige resultater fra tests. Når det er sagt, er det et simpelt program til en lav pris, så man kan ikke forvente alverden af det.
4. MonkeyTestJS
MonkeyTestJS er et open source australsk JavaScript-baseret værktøj, der kun er bygget til webapplikationer. Det er ret simpelt, men det er mere end i stand til at gøre arbejdet. Værktøjet lader udviklere simulere interaktioner mellem bruger og webapplikation, såsom klik, indsendelse af formularer, tastaturinput og meget mere.
En ulempe ved værktøjet er naturligvis, at det kun er tilgængeligt til webapplikationer. Men det er værd at have i sin værktøjskasse.
Hvad er det bedste dedikerede testværktøj til Android-aber?
Der er et par gode muligheder for udviklere, der ønsker at skabe lidt kaos i deres test af Android-applikationer. Lad os se på to.
1. UI/Application Exerciser Monkey til Android
UI/Application Exerciser Monkey for Android er et kommandolinjeværktøj, der lader udviklere sende pseudo-tilfældige input eller begivenheder til både Android-enheder og emuleringer. Dette værktøj kører i Android Debug Bridge-shell.
2. MonkeyRunner til Android
MonkeyRunner til Android er et populært værktøj til abetest på Android. Softwaren er en API, som lader udviklere skrive programmer, der enten emulerer eller styrer en Android-enhed. Det er også en god mulighed for både funktionel test og unit-test.
Begge disse programmer er gode muligheder. De er dog ret tekniske, hvilket ikke passer til alle hold.
Skal monkey testing automatiseres?
Et af de største problemer med manuel monkey testing er, at det er så tidskrævende. Den anden ting, du bør bemærke, er, at det er svært for nogle få testere virkelig at simulere de forskellige interaktioner, som en bred base af brugere kan have med en bestemt applikation.
Så tre umiddelbare ulemper springer os i øjnene. Manuel abetestning er:
- Tidskrævende
- Dyrt
- Potentielt manglende dækning
Et automatiseret værktøj til monkey testing løser alle disse problemer.
Er ZAPTEST det rigtige valg til dine behov for abetests?
Monkey testing er en god teknik at have i sit testrepertoire, især hvis man designer komplekse applikationer. Men det er dyrt at købe dedikeret software til abetest.
ZAPTEST
er et fleksibelt og kraftfuldt
full-stack testautomatiseringsværktøj.
Det kan i høj grad tilpasses og giver både udviklere og ikke-tekniske teams mulighed for at bygge og designe en uendelig mængde softwaretestteknikker, herunder monkey testing.
Abetests er et godt valg, når de suppleres med andre typer tests. ZAPTEST tilbyder alt under ét tag, med tilføjelsen af RPA-værktøjer af høj kvalitet.
Afsluttende tanker
Monkey testing software giver udviklere en utraditionel måde at teste deres applikationer på. Styrken ved denne teknik ligger i dens evne til at simulere de utallige uforudsigelige måder, som en bruger kan interagere med et stykke software på. Kort sagt giver monkey testing en dækning, som kan være svær at opnå med en testplan.