Wat is apen- en gorillatesten? Voorbeelden, verschil

⚡ Slimme samenvatting

Bij monkey testing wordt willekeurige, ongeplande invoer aan een draaiende applicatie gegeven, waarna wordt gekeken of deze de test doorstaat. Hierdoor worden crashes, vastlopers en onafgehandelde situaties aan het licht gebracht lang voordat er ook maar één vooraf gedefinieerd testgeval is geschreven.

  • 🐒 Kernidee: Willekeurige muisklikken, toetsaanslagen en gebaren testen het systeem op mogelijke fouten in plaats van op de verwachte resultaten.
  • 🦍 Gorilla-contrast: Gorilla-testen testen één module herhaaldelijk, terwijl monkey-testen de hele applicatie doorloopt.
  • ???? Drie niveaus: Domme, slimme en briljante apen verschillen in de mate waarin ze weten over het te testen systeem.
  • Eerlijke afweging: Goedkoop en snel in gebruik, maar defecten zijn moeilijk te reproduceren en dekking kan niet worden gegarandeerd.
  • tooling: Android UI/Application Exerciser Monkey, MonkeyRunner en vergelijkbare tools genereren automatisch gebeurtenisstromen.
  • 🎯 Beste pasvorm: Vroege builds, interactieve interfaces en stabiliteitstests, altijd in combinatie met gescripte en verkennende tests.

Vergelijking van monkey testing en gorilla testing in softwaretesten

Wat is apenonderzoek?

Apenproeven Monkey testing is een softwaretesttechniek waarbij de tester willekeurige invoer in een applicatie geeft zonder vooraf gedefinieerde testgevallen en controleert hoe de applicatie zich gedraagt, met name of deze crasht. Het doel van monkey testing is om bugs en fouten te vinden door middel van experimentele, ongestructureerde interactie.

De naam is afgeleid van een eenvoudige afbeelding, zoals hieronder weergegeven.

Tester die de rol van aap speelt en willekeurige invoer geeft tijdens het apen testen.

  • Bij monkey testing wordt de tester (en soms de ontwikkelaar) als de "aap" beschouwd.
  • Als een aap een computer zou gebruiken, zou hij taken willekeurig uitvoeren, zonder het systeem te begrijpen.
  • Op dezelfde manier past de tester willekeurige invoer toe op het te testen systeem om fouten te vinden zonder vooraf een testgeval te definiëren.
  • In sommige gevallen is het testen op apen gericht op testen van een eenheid or GUI-testen.

Wat is Gorilla-testen?

Gorilla-testen Testen is een softwaretesttechniek waarbij een module van het programma herhaaldelijk wordt getest om te bevestigen dat deze correct werkt en geen fouten bevat.

Een enkele module kan honderd keer of vaker op exact dezelfde manier worden getest, vandaar dat gorilla-testen ook wel "frustrerend testen" wordt genoemd. Bij monkey-testen wordt de applicatie willekeurig getest; bij gorilla-testen wordt op één plek gefocust totdat deze het begeeft of juist waterdicht blijkt.

Soorten apentesten

Monkey testing wordt onderverdeeld in categorieën op basis van de mate waarin de tester het systeem kent. Het onderstaande diagram vat de drie typen samen.

Domme, slimme en briljante soorten apenproeven

  • Domme aap: De tester heeft geen idee van het systeem of de functionaliteit ervan, en er is geen garantie dat de invoer geldig is.
  • Slimme aap: De tester heeft een nauwkeurig beeld van het systeem, het doel ervan en de functionaliteit, navigeert erdoorheen en levert geldige invoer.
  • Geniale aap: De tester werkt met echt gebruikersgedrag en kan aangeven waar defecten waarschijnlijk zullen optreden.

Apentesten versus gorillatesten versus ad-hoc testen

Testen op apen, testen op gorilla's en ad-hoc testen Ze hebben een onconventioneel karakter gemeen, waardoor ze vaak door elkaar worden gehaald. De twee onderstaande tabellen maken onderscheid.

Apenproeven versus gorillaproeven

Aap testen Gorilla-testen
Willekeurig uitgevoerd, zonder specifiek vooraf gedefinieerde testgevallen. Ze zijn niet vooraf bepaald en ook niet willekeurig; dezelfde controles worden simpelweg herhaald.
Wordt uitgevoerd op het gehele systeem en kan vele testgevallen omvatten. Uitgevoerd op een paar geselecteerde modules met een beperkt aantal testgevallen.
Het doel is om te controleren op een systeemcrash. Het doel is om te controleren of de module naar behoren werkt.

Monkey Testing versus Ad-hoc Testing

Aap testen Ad-hoc testen
Willekeurig uitgevoerd, zonder specifiek vooraf gedefinieerde testgevallen. Uitgevoerd zonder planning of documentatie, dus er zijn geen testgevallen of SRS opgesteld.
Testers weten mogelijk niet wat het systeem is of waar het voor dient. De tester moet het systeem goed begrijpen voordat de tests beginnen.
Het doel is om te controleren op een systeemcrash. Het doel is om het systeem willekeurig in subonderdelen te verdelen en hun functionaliteit te controleren.

Voordelen en nadelen van apenproeven

Omdat bij deze techniek planning wordt opgeofferd voor snelheid, komen de voordelen en nadelen ervan voort uit dezelfde eigenschap.

Voordelen van apenproeven

  • Nieuwe soorten insecten: De tester kan nu buiten de eerder beschreven scenario's werken, waardoor fouten aan het licht komen waar niemand aan had gedacht om in het script op te nemen.
  • Eenvoudig uit te voeren: Het uitvoeren van willekeurige acties in combinatie met willekeurige data is een snelle manier om het systeem te testen.
  • Less bekwame mensen: Testen met apen kan vaak worden uitgevoerd zonder dat er zeer ervaren testers nodig zijn.
  • Less duur: Het vereist aanzienlijk minder investering om op te zetten en te gebruiken dan een gescript softwarepakket.

Nadelen van apenproeven

  • Het kan lastig zijn om bugs te reproduceren: Omdat de invoer willekeurig is, is het mogelijk dat een fout niet kan worden gereproduceerd zonder een vastgelegde seed.
  • Less nauwkeurigheid: De tester kan geen exact scenario definiëren en kan de nauwkeurigheid van wat er is behandeld niet garanderen.
  • Technische expertise blijft nuttig: Om de bevindingen betekenisvol te houden, moeten testers een goede kennis van het betreffende domein hebben.
  • Langzaam in verhouding tot de opbrengst: Tests kunnen lang doorgaan en toch weinig defecten opleveren, waardoor er hiaten in het systeem ontstaan.

Hoe voer je een monkey testing uit?

Monkey testing wordt veel efficiënter wanneer een tool het aanstuurt en het kan worden uitgevoerd tegen Android Dit omvat zowel builds als desktop- en webapplicaties. Het algemene proces is als volgt:

  1. Registreer de te testen applicatie bij de tool of de speciale server die deze zal aansturen.
  2. Bereid de referenties en configuratie voor die de tool nodig heeft om een ​​testsuite te bouwen.
  3. Voer de samengestelde testsuite uit.
  4. Laat de tool zijn logbestand bijhouden — het "monkey test"-logbestand registreert elke gegenereerde gebeurtenis en de resultaten.
  5. Laat het proces doorgaan totdat het systeem vastloopt, waarna de foutieve actie in het logboek wordt vastgelegd.
  6. Deel het rapport met het verantwoordelijke team en bewaar de testgegevens voor toekomstig gebruik.

Bewaar alle logbestanden. Een willekeurige run is later alleen bruikbaar als de reeks gebeurtenissen en de seed die deze heeft gegenereerd, zijn opgeslagen. defectbeheer kan de crash herleiden tot een reproduceerbare invoer.

Monkey Testing-tools

Monkey testing is meestal geautomatiseerd, omdat een machine duizenden gebeurtenissen kan genereren in de tijd dat een mens er een paar dozijn produceert. De meest gebruikte opties zijn:

  • UI/Applicatie-oefenaap: een commandoregelprogramma ingebouwd in Android dat loopt in de ADB shell en stuurt pseudo-willekeurige reeksen gebruikersgebeurtenissen, zoals tikken, gebaren en toetsaanslagen, plus gebeurtenissen op systeemniveau, naar een apparaat of emulator.
  • MonkeyRunner: een aparte Python API Het is een programma dat apparaten en emulators vanaf een werkstation aanstuurt, specifieke commando's verstuurt en schermafbeeldingen maakt. Ondanks de naam is het niet hetzelfde programma als de Exerciser Monkey.
  • UI Automator en Appium: algemeen mobiel testen frameworks die geprogrammeerd kunnen worden om semi-willekeurige gebeurtenisreeksen te activeren tijdens een build.
  • Fuzzing-tools zoals AFL: Hetzelfde idee van willekeurige invoer toegepast op data in plaats van gebaren, wat wordt behandeld in fuzz-testen.

De toolondersteuning voor monkey testing is beperkter dan voor scripted testing. automatisering testenDaarom combineren de meeste teams een generieke gebeurtenisgenerator met hun bestaande framework in plaats van een specifiek product aan te schaffen.

Wanneer moet je monkey testing gebruiken?

Monkey testing verdient zijn nut in specifieke situaties en is geen algemene vervanging voor geplande tests.

Gebruik het wanneer:

  • Een vroege versie heeft een eenvoudige stabiliteitstest nodig voordat er formele testgevallen bestaan.
  • De interface is zeer interactief — met spelletjes, tekenprogramma's en mediaspelers — en het daadwerkelijke gebruikersgedrag is moeilijk te voorspellen.
  • Wil je een bad nemen of spanning Een run die urenlang zoekt naar crashes, geheugenlekken en onafgehandelde toestanden.
  • Een release heeft de scriptmatige controles doorstaan ​​en u wilt een onafhankelijke controle uitvoeren op alles wat het script niet heeft aangepakt.

Vermijd dit wanneer:

  • Je hebt herhaalbaar bewijs nodig dat aan een vereiste is voldaan — dat is de taak van een schriftelijke verklaring. testcase.
  • De build is zo instabiel dat elke uitvoering direct vastloopt, waardoor alles achter de eerste fout verborgen blijft.
  • De tijd dringt, want een willekeurige zoektocht biedt geen garantie dat je iets vindt.

In de praktijk worden de beste resultaten behaald door verschillende benaderingen te combineren: gestandaardiseerde tests dekken de bekende processen af, verkennende tests Hij onderzoekt doelbewust het onbekende, terwijl hij met behulp van apenproeven alles aanpakt waarvan ze beiden aannamen dat het nooit zou gebeuren.

Veelgestelde vragen

De naam is ontleend aan het beeld van de oneindige aap: een aap die lang genoeg willekeurig op toetsen drukt, produceert uiteindelijk iets betekenisvols. Toegepast op software leidt willekeurige invoer uiteindelijk tot toestanden die geen enkele ontwerper had voorzien.

Exploratief testen is doelgericht: een tester formuleert een hypothese, onderzoekt deze en past zich aan. Experimenteel testen is opzettelijk ongestructureerd. Het ene is gebaseerd op beoordeling, het andere op kwantiteit en willekeur.

Ze delen het principe van willekeurige invoer, maar verschillen in doel. Bij monkey testing worden gebruikersgebeurtenissen op een interface afgevuurd. Bij fuzzing worden onjuist geformuleerde gegevens aan parsers en API's gevoerd, meestal om beveiligingslekken op te sporen.

Chaos Monkey valt onder chaos engineering: het schakelt willekeurig services uit of verstoort de infrastructuur om de veerkracht te testen. Het gemeenschappelijke idee is willekeurigheid, maar het doelwit is het draaiende platform, niet de gebruikersinterface.

Modellen kunnen de gebeurtenisstroom sturen in de richting van de paden die echte gebruikers bewandelen, waardoor een domme aap slimmer wordt. Ze groeperen ook dubbele crashlogs en rangschikken welke willekeurige fouten als eerste de aandacht van een ontwikkelaar verdienen.

GitHub-copiloot Het testframework wordt snel ontworpen: gebeurtenisgeneratoren, seed-management, logparsers en crash-triage scripts. De randomisatiestrategie en de slaagcriteria moeten nog door een tester worden gedefinieerd.

Nuttige meetwaarden zijn onder andere het aantal crashes per duizend gegenereerde acties, het aantal unieke gevonden defecten, de bereikte code coverage tijdens de run en de tijd tot de eerste fout. Analyseer deze waarden over meerdere builds in plaats van de resultaten van één run te bekijken.

Noteer de willekeurige seed en het gebeurtenislogboek. Tools die een seed accepteren, zullen dezelfde reeks herhalen, zodat de fout kan worden herleid tot een kort, reproduceerbaar geval en als een normaal defect kan worden gemeld.

Vat dit bericht samen met: