De fleste typer programvaretesting bruker en nøye definert testplan for å sikre dekning. Men selv om disse parameterne dekker mange av mulighetene ved bruk av et stykke programvare, vil de ikke alltid etterligne oppførselen til en bruker som ikke er kjent med applikasjonen og rett og slett prøver å samhandle med den på en utforskende måte: Enter monkey testing.
I denne artikkelen skal vi ta en titt på alt som er med apetesting, inkludert apetestingsprogramvare, prosesser, typer, tilnærminger og mer.
Hva er apetesting?
Apetesting er en stadig mer populær programvaretestingsteknikk. Det innebærer å sende tilfeldige inndata til en applikasjon for å simulere uforutsigbarheten til interaksjon med brukergrensesnitt.
Målet er å finne feil eller krasj som kan være vanskelig å oppdage med forhåndsdefinerte testtilfeller. En apetest etterligner hvordan en person uten erfaring eller kunnskap om en applikasjon kan tilfeldig utforske programvaren.
Denne teknikken er et godt alternativ for både belastnings- og stresstesting applikasjoner. Faktisk gir tester kontinuerlige tilfeldige inndata i et forsøk på å bryte applikasjonen.
Det er mange likheter mellom apetesting og ad hoc-testing, spesielt deres tilfeldige natur og mangel på avhengighet av en testplan. Imidlertid er det nok forskjeller mellom de to til å betrakte dem som forskjellige tilnærminger.
Mens noen utviklere antyder at apetesting er en type ad hoc-testing, er en vesentlig forskjell mellom de to at apetesting kan utføres av folk uten kunnskap om applikasjonen.
Apetesting handler om å ikke ha en testplan. Det handler om å mate tilfeldige inndata med det formål å krasje programvaren.
Hvorfor kalles det apetesting?
Det er ingen konsensus om hvorfor denne teknikken kalles apetesting. Det er imidlertid noen få overbevisende teorier bak navnet.
Teori 1: Uendelig apesetning
Den første teorien antyder at navnet har å gjøre med uendelig ape-teoremet, en metafor som brukes til å diskutere statistisk sannsynlighet. Kort fortalt sier den at hvis en ape satt foran en skrivemaskin og moset tilfeldige nøkler i uendelig lang tid, ville den på et tidspunkt produsere hele verkene til William Shakespeare.
Ideen her er at apetesting simulerer denne tilfeldige meskingen av nøkler, og med nok tid vil den dekke alle hendelser som applikasjonen vil møte i produksjonen.
Teori 2: Macintoshs “The Monkey”
Den andre teorien er at navnet kommer fra et MacOS-program fra 1983 kalt “The Monkey.” Kort sagt, teamet som jobbet på den første Macintosh-datamaskinen ønsket å finne en måte å stressteste maskinen på.
De resonnerte at hvis de hadde en ape som febrilsk banket bort på tastene og beveget seg rundt musen, ville det hjelpe dem å teste motstandskraften til datamaskinen. De hadde ikke en levende ape for hånden, så de bygde en applikasjon som kunne simulere denne typen bruk, og kalte den “The Monkey”.
Hvorfor er apetesting viktig?
Den store grunnen til at apetesting er viktig, er at det hjelper team med å oppdage kanttilfeller eller uventet atferd i en app. Tanken her er at utviklere kan bruke apetesting sammen med mer tradisjonelle metoder for å få en bedre følelse av hvordan appen vil bli mottatt i naturen.
Selv omfattende testing av et produkt kan ikke konkurrere med titusenvis av eller flere brukere som er engasjert i en applikasjon over lang tid. I en liten prosentandel av disse tilfellene vil brukere be applikasjonen om å gjøre noe uventet. Å avdekke alle disse scenariene via testtilfeller er nesten umulig.
Apetesting forsøker å dekke disse nesten tilfeldige scenariene. Når utviklere bygger en testcase, har de en tendens til å ha en intim kjennskap til appen. De forstår hva brukerens mål er, og de vet den beste sekvensen av interaksjoner de bør bruke for å oppnå noe i en app.
Randomisering av disse inngangene betyr at applikasjonen testes på måter som utviklerne ikke har vurdert. Samlet sett forbedrer dette den generelle motstandskraften og holdbarheten til et stykke programvare og sikrer at det kan gå inn i verden og møte uforutsigbarheten til et bredt spekter av brukere uten å krasje.
Når bør du bruke apetesting?
Apetesting er en utmerket supplerende testteknikk. Dens største fordel ligger i dens evne til å finne uventede feil som ikke vil bli avdekket av mer tradisjonelle programvaretestingsmetoder. Som sådan er det best når det brukes sammen med metoder som:
Vanligvis bruker utviklere apetesting tidlig i testprosessen. Det er spesielt nyttig når det er mangel på forhåndsdefinerte testplaner å trekke på.
Hvordan utføres apetesting?
I en ikke så fjern fortid ble apetesting utført manuelt. Testere ble brukt til å trykke på knapper, skrive inn tekst, velge objekter og så videre for å se hvordan systemet ville tåle ukonvensjonelle inndata. Det er åpenbare problemer her. For det første er det ganske tidkrevende. For det andre er det liten garanti for at disse handlingene vil dekke enhver eventualitet.
Eksempler på manuell apetesting
Her er noen eksempler på hvordan manuell apetesting utføres. Det kan også gi deg en idé om hva automatisert apetesting søker å simulere.
- Testeren navigerer på et nettsted ved å klikke på tilfeldige lenker for å se om de kan krasje applikasjonen eller føre til uventede sider
- En tester legger inn tilfeldige tekster i et skjemafelt for å se hvordan applikasjonen reagerer
- Testeren drar og slipper ikoner og objekter for å se om de oppfører seg som forventet eller gir uønskede utfall.
Ulike typer apetesting
Det er tre hovedtyper av apetester som utviklere bruker for å oppdage distinkt informasjon om motstandsdyktigheten til applikasjonene deres.
1. Dumme apetesting
Dumb monkey-testing beskriver en tilnærming der testeren ikke vet noe om applikasjonen som testes. I stedet blir testeren bedt om å rote rundt helt uvitende om arbeidsflyten, trykke på knapper, skrive inn tekst og så videre. Denne teknikken kan bidra til å avdekke betydelige feil som utviklere ikke er klar over.
2. Smart apetesting
Med smart apetesting vet testeren litt om applikasjonen og dens mål og har til og med detaljert informasjon om hvordan den fungerer. Denne prosessen bruker også en mer fokusert type tilfeldig input som er designet for å presse applikasjonen forbi bestemte grenser. Å bruke denne tilnærmingen er bra for både stress- og belastningstesting.
3. Strålende apetesting
Strålende apetesting er neste nivå opp fra smart apetesting. Testeren har en sterk og omfattende kunnskap om applikasjonen og velges ut fra denne kunnskapen. Dette tilsynet kan hjelpe testeren å oppdage mange feil fordi de burde forstå produktet fra en brukers perspektiv.
Fordeler og ulemper med apetesting
Før du bestemmer deg for å bruke apetestteknikken, må du forstå dens fordeler og ulemper.
Fordeler med apetesting
1. Finne sjeldne eller skjulte feil
Den kanskje mest overbevisende fordelen med apetesting er teknikkens evne til å avdekke feil, defekter eller atferd som ellers kan bli avdekket. Å finne disse kantsakene er utfordrende med tradisjonelle testteknikker, så apetesting er en solid måte å teste for krasj, datakorrupsjon og alt annet som truer stabiliteten til en applikasjon.
2. Det sikrer robusthet
Monkey-testing er designet for å se hvordan en applikasjon reagerer på de uforutsigbare forholdene den vil møte under bruk i den virkelige verden. Når en applikasjon legges i brukerens hender, vil det resultere i mange forskjellige input som utviklere ikke kan forutse. Apetesting etterligner den situasjonen, noe som fører til mer pålitelige bygg.
3. Kostnadseffektivitet
Sammenlignet med andre typer testing er apetesting svært kostnadseffektivt. Det er noen årsaker til dette. For det første trenger du ikke bruke mye tid på å designe brukstilfeller for appen din. Deretter er programvareverktøy for apetesting i stor grad automatisert, noe som frigjør utviklernes tid til andre oppgaver, og sparer penger.
4. Allsidighet
Noe av det beste med apetesting er at testene kan utføres av personer uten teknisk bakgrunn. Faktisk, i noen tilfeller er det å foretrekke å ha noen som er helt grønn. Dessuten er disse testene ganske enkle å sette opp, noe som igjen reduserer avhengigheten av dyktige ingeniører.
5. Tidlig feildeteksjon
Å finne og løse feil tidlig i utviklingens livssyklus sparer tid på veien. Monkey-testing introduserer et nivå av tilfeldighet til testing, som kan hjelpe deg med å finne feil i koden din samtidig som det er enkelt å fikse.
Ulemper ved apetesting
1. Dekning
Mens apetesting kan resultere i forbedret testdekning, mangler den den planlagte og strategiske grundigheten til andre testtyper. Faktisk, fordi du sprenger appen med tilfeldige innganger, er du prisgitt kaos når det gjelder å finne feil. Det er ikke dermed sagt at den ikke finner alt, men uten en klar og forhåndsdefinert strategi kan du ikke være 100% sikker på at alt er fanget opp.
2. Begrensede applikasjoner
Apetesting er ikke egnet for alle typer applikasjoner. Det er flott for komplekse apper med mange forskjellige funksjoner som, mest avgjørende, har potensialet for uventede brukerinteraksjoner. Programmer som tilbyr mer rigide og forutsigbare funksjoner er mindre sannsynlig å dra nytte av disse testene.
3. Tidkrevende
Manuell apetesting er svært tidkrevende. Det krever mye interaksjon med moduler og programvare, uten noen garanti for at hver økt vil oppdage feil. Riktignok kan du automatisere prosessen, noe som sparer betydelig tid og ressurser.
4. Falske positiver
På grunn av apetestingens kaotiske eller tilfeldige natur, kan noen innganger simulere scenarier som ikke vil skje under virkelig bruk av produktet. Denne situasjonen kan resultere i generering av falske positiver, noe som fører til at kodere fikser problemer som ikke er nødvendige.
Hva er testing av kaosape?
Kaostesting er en programvareteknisk teknikk som bruker kontrollerte og bevisste eksperimenter designet for å forstyrre et system (og til og med indusere feil) for å vurdere dets motstandskraft og evne til å gjenopprette.
Ideen om å bryte et system med vilje for å sikre motstandskraft er ganske vanlig i programvareutviklingsområdet, og disse metodene resulterer vanligvis i bygg som ingeniører kan stå bak.
I 2008, etter å ha opplevd en tredagers databasekorrupsjon, bestemte den populære strømmetjenesten Netflix seg for å migrere til Amazon Web Services (AWS). Målet var å unngå enkeltpunkter for feil og redusere skalerbarhetsproblemer som følge av utvidelse av tjenesten deres.
Teamet implementerte kaosape-testing for å teste offentlige instanser på AWS-infrastrukturen. Fordelene var todelt:
- Prosessen avdekket svakheter som Netflix-ingeniørene kunne fikse
- Det inspirerte teamet til å bygge automatiserte gjenopprettingsmekanismer for tjenesten deres.
Kaosapetesting er en del av Chaos Engineering. Den brukes til å teste et systems feiltoleranse og dets evne til å opprettholde stabilitet og ytelse selv når individuelle komponenter feiler uventet.
Selv om det er relatert til apetesting, er det en distinkt teknikk.
Apetesting vs Gorillatesting
Du har kanskje også hørt om konseptet med Gorilla-testing innen programvareutvikling. Mens begge teknikkene har navn på primater, har de mange likheter og forskjeller. La oss utforske hva Gorilla-testing er og hvor den kan brukes.
Gorillatesting regnes som en mer strukturert versjon av apetesting. Til sammenligning brukes ofte apetesting i de tidlige stadiene av testing når det ikke er noen formelle testtilfeller tilgjengelig. Gorilla-testing, derimot, bruker et automatisert verktøy eller skript for å generere tilfeldige inndata for en programvareapplikasjon.
Gorillatesting er rask og langt mer effektiv enn manuell apetesting. Det gir bred dekning, og det er en utmerket måte å finne krasj som må løses. Det er imidlertid best brukt for applikasjoner med veldefinerte grenser eller for å teste en bestemt modul grundig.
Både apetesting og gorillatesting har sin plass i moderne programvareutviklingstesting. Å forstå dem er nøkkelen til å bruke riktig tilnærming på rett plass.
Hva er det beste apetestverktøyet?
Monkey-testprogramvare har blitt en viktig del av den moderne utviklerens verktøysett. Det er imidlertid noen få alternativer der ute. Så, hvilket er det beste apetestverktøyet? Her er noen få du trenger å vite om.
1. ZAPTEST
ZAPTEST er et kraftig gratis automatiseringsverktøy for testing av programvare for bedrifter som støtter et bredt spekter av testautomatiseringsteknikker, inkludert apetesting. Noen av ZAPTEST-funksjonene som hjelper med apetesting inkluderer:
- Registrering av skript uten kode: Team kan registrere brukerinteraksjoner og konvertere dem til testkode.
- Inndatagenerering: ZAPTEST forenkler generering av tilfeldig input, som er et kjerneelement i apetesting
- Robust rapportering: ZAPTEST tilbyr kraftige rapporteringsfunksjoner som hjelper deg med å dokumentere testene dine
Selvfølgelig skraper disse funksjonene bare i overflaten av ZAPTESTs evner for et bredt spekter av testteknikker, inkludert apetester. Med WebDriver-integrasjon, AI-funksjoner og ZAPTEST CoPilot kan team oppleve fremtiden for programvaretesting på ett sted.
Dessuten får ZAPTEST Enterprise-brukere tilgang til en dedikert ZAP Expert på heltid og ubegrensede lisenser, og alt til en forutsigbar fast kostnad.
2. Appium
Appium er et åpen kildekodeverktøy. Du kan bruke den til både Android og iOS. Den lar brukere automatisere interaksjoner med mobilapplikasjoner og har evner til apetesting. Utviklere kan etterligne et bredt spekter av reaksjoner i brukergrensesnittet, som å skrive inn tekst, klikke, trykke og rulle.
Selv om Appium er et flott verktøy for mobilutviklere, mangler det muligheter for desktop- og webtesting.
3. Monkey Test It
Monkey Test Det er en skybasert testplattform med en rekke testfunksjoner som inkluderer apetesting. Mens Monkey Test It er veldig brukervennlig, mangler den kanskje kraften til rivaliserende verktøy.
Andre ulemper er at det kan se slankere ut og kommer med bedre dokumentasjon. Dessuten har noen brukere klaget på unøyaktige resultater fra tester. Når det er sagt, er det et enkelt program med en lav pris, så du kan ikke forvente verden av det.
4. MonkeyTestJS
MonkeyTestJS er et australsk JavaScript-basert verktøy med åpen kildekode som kun er laget for nettapplikasjoner. Det er ganske grunnleggende, men det er mer enn i stand til å gjøre jobben. Verktøyet lar utviklere simulere interaksjoner mellom bruker og nettapplikasjoner, for eksempel klikk, skjemainnsending, tastaturinndata og mer.
En ulempe med verktøyet er åpenbart at det kun er tilgjengelig for nettapplikasjoner. Det er imidlertid verdt å ha i verktøykassen.
Hva er det beste dedikerte Android-apetestverktøyet?
Det er noen gode alternativer for utviklere som ønsker å bringe litt kaos til sin Android-applikasjonstesting. La oss se på to.
1. UI/Application Exerciser Monkey for Android
UI/Application Exerciser Monkey for Android er et kommandolinjeverktøy som lar utviklere sende pseudo-tilfeldige innganger eller hendelser til både Android-enheter og emuleringer. Dette verktøyet kjører i Android Debug Bridge-skallet.
2. MonkeyRunner for Android
MonkeyRunner for Android er et populært Android-apetestverktøy. Programvaren er et API som lar utviklere skrive programmer som enten emulerer eller kontrollerer en Android-enhet. Det er også et godt alternativ for både funksjons- og enhetstesting.
Begge disse applikasjonene er gode alternativer. Imidlertid er de ganske tekniske, noe som ikke vil passe alle lag.
Bør apetesting automatiseres?
Et av de største problemene med manuell apetesting er at det er så tidkrevende. Den andre tingen du bør merke deg er at det er vanskelig for noen få testere å virkelig simulere de ulike interaksjonene som en bred base av brukere kan ha med en bestemt applikasjon.
Så tre umiddelbare ulemper dukker opp for oss. Manuell apetesting er:
- Tidkrevende
- Dyrt
- Potensielt mangelfull dekning
Et automatisert apetestverktøy løser alle disse problemene.
Er ZAPTEST det riktige valget for dine apetestbehov?
Apetesting er en god teknikk å ha i testrepertoaret ditt, spesielt hvis du designer komplekse applikasjoner. Det er imidlertid dyrt å kjøpe dedikert programvare for apetesting.
ZAPTEST er et fleksibelt og kraftig fullstack testautomatiseringsverktøy. Den er svært tilpassbar og lar både utviklere og ikke-tekniske team bygge og designe en endeløs mengde programvaretestteknikker, inkludert apetesting.
Apetesting er et godt valg når det suppleres med andre typer tester. ZAPTEST tilbyr alt under ett tak, med tillegg av høykvalitets RPA-verktøy.
Siste tanker
Monkey-testprogramvare gir utviklere en ukonvensjonell måte å teste applikasjonene sine på. Styrken til denne teknikken ligger i dens evne til å simulere mylderet av uforutsigbare måter en bruker kan engasjere seg i et stykke programvare. Kort sagt, apetesting gir dekning som kan være vanskelig å oppnå med en testplan.