Was sind Affen- und Gorilla-Tests? Beispiele, Unterschied

โšก Intelligente Zusammenfassung

Beim Monkey-Testing werden zufรคllige, ungeplante Eingaben in eine laufende Anwendung eingespeist und beobachtet, ob diese รผberlebt. Dadurch werden Abstรผrze, Einfrieren und unbehandelte Zustรคnde lange vor dem Schreiben eines vordefinierten Testfalls aufgedeckt.

  • ๐Ÿ’ Kernidee: Zufรคllige Klicks, Tastatureingaben und Gesten suchen im System eher nach Schwachstellen als nach erwarteten Ergebnissen.
  • ๐Ÿฆ Gorilla-Kontrast: Beim Gorilla-Testing wird ein Modul wiederholt und gnadenlos bearbeitet, wรคhrend beim Monkey-Testing die gesamte Anwendung durchsucht wird.
  • ๐Ÿง  Drei Noten: Dumme, kluge und brillante Affen unterscheiden sich darin, wie viel sie รผber das zu testende System wissen.
  • ๏ธ Ehrlicher Kompromiss: Gรผnstig und schnell im Betrieb, aber Fehler sind schwer zu reproduzieren und eine vollstรคndige Abdeckung kann nicht garantiert werden.
  • ๏ธ Werkzeug: Android UI/Application Exerciser Monkey, MonkeyRunner und รคhnliche Tools generieren automatisch Ereignisstrรถme.
  • ๐ŸŽฏ beste Passform: Frรผhe Builds, interaktive Schnittstellen und Stabilitรคtstests, immer in Verbindung mit skriptbasierten und explorativen Tests.

Vergleich von Monkey-Testing und Gorilla-Testing im Softwaretest

Was ist Monkey Testing?

Affentest Monkey-Testing ist eine Softwaretestmethode, bei der der Tester zufรคllige Eingaben in eine Anwendung macht, ohne vordefinierte Testfรคlle, und das Verhalten der Anwendung รผberprรผft, insbesondere ob sie abstรผrzt. Ziel des Monkey-Testings ist es, Fehler und Bugs durch experimentelle, unstrukturierte Interaktion aufzuspรผren.

Der Name leitet sich von einem einfachen Bild ab, das unten abgebildet ist.

Tester, der die Rolle des Affen รผbernimmt und wรคhrend des Affentests zufรคllige Eingaben macht

  • Beim Monkey-Testing wird der Tester (und manchmal auch der Entwickler) als โ€žAffeโ€œ behandelt.
  • Wenn ein Affe einen Computer benutzen wรผrde, wรผrde er Aufgaben zufรคllig ausfรผhren, ohne das System zu verstehen.
  • Auf die gleiche Weise wendet der Tester zufรคllige Eingaben auf das zu testende System an, um Fehler zu finden, ohne vorher einen Testfall zu definieren.
  • In einigen Fรคllen zielen Affentests darauf ab, Unit-Test or GUI-Tests.

Was ist Gorilla-Test?

Gorilla-Test ist eine Softwaretesttechnik, bei der ein Modul des Programms wiederholt getestet wird, um zu bestรคtigen, dass es korrekt funktioniert und keine Fehler enthรคlt.

Ein einzelnes Modul kann hundertmal oder รถfter auf exakt dieselbe Weise getestet werden, weshalb Gorilla-Testing auch als โ€žfrustrierendes Testenโ€œ bekannt ist. Monkey-Testing verteilt sich zufรคllig รผber die gesamte Anwendung; Gorilla-Testing hingegen testet gezielt eine Stelle, bis ein Fehler auftritt oder die Anwendung sich als stabil erweist.

Arten von Affentests

Monkey-Testing wird in Kategorien unterteilt, je nachdem, wie gut der Tester das System kennt. Das folgende Diagramm fasst die drei Typen zusammen.

Dumme, kluge und brillante Affenarten im Test

  • Dummer Affe: Der Tester hat keine Kenntnis vom System oder dessen Funktionsweise, und es gibt keine Gewรคhr dafรผr, dass die Eingaben gรผltig sind.
  • Schlauer Affe: Der Tester hat eine genaue Vorstellung vom System, seinem Zweck und seiner Funktionsweise, navigiert darin und liefert gรผltige Eingaben.
  • Brillanter Affe: Der Tester arbeitet mit dem Verhalten realer Nutzer und kann angeben, wo Fehler wahrscheinlich auftreten.

Affentest vs. Gorillatest vs. Ad-hoc-Test

Affentests, Gorillatests und Ad-hoc-Tests Sie haben einen unvorhersehbaren Charakter, weshalb sie oft verwechselt werden. Die beiden folgenden Tabellen verdeutlichen die Unterschiede.

Affentest vs. Gorillatest

Affentest Gorilla-Tests
Die Tests wurden zufรคllig durchgefรผhrt, ohne dass speziell vordefinierte Testfรคlle vorab festgelegt wurden. Weder vordefiniert noch zufรคllig โ€“ es werden einfach dieselben Prรผfungen wiederholt.
Wird am gesamten System durchgefรผhrt und kann zahlreiche Testfรคlle umfassen. Die Durchfรผhrung erfolgte an einigen ausgewรคhlten Modulen mit wenigen Testfรคllen.
Ziel ist es, einen Systemabsturz festzustellen. Ziel ist es zu รผberprรผfen, ob das Modul ordnungsgemรครŸ funktioniert.

Monkey-Testing vs. Ad-hoc-Testing

Affentest Ad-hoc-Tests
Die Tests wurden zufรคllig durchgefรผhrt, ohne dass speziell vordefinierte Testfรคlle vorab festgelegt wurden. Die Durchfรผhrung erfolgte ohne Planung oder Dokumentation, daher wurden keine Testfรคlle oder SRS vorbereitet.
Die Tester wissen mรถglicherweise nicht, was das System ist oder wozu es dient. Der Tester muss das System gut verstehen, bevor der Test beginnt.
Ziel ist es, einen Systemabsturz festzustellen. Ziel ist es, das System nach dem Zufallsprinzip in Teilsysteme zu zerlegen und deren Funktionalitรคt zu รผberprรผfen.

Vor- und Nachteile des Affentests

Da bei dieser Technik die Planung gegen die Geschwindigkeit eingetauscht wird, beruhen ihre Vorteile und ihre Schwรคchen auf derselben Eigenschaft.

Vorteile des Affentests

  • Neue Arten von Fehlern: Dem Tester steht es frei, auch auรŸerhalb der zuvor genannten Szenarien zu arbeiten, wodurch Fehler aufgedeckt werden, an deren Skript niemand gedacht hat.
  • Einfach auszufรผhren: Das Anordnen zufรคlliger Aktionen auf zufรคllige Daten ist eine schnelle Mรถglichkeit, das System zu testen.
  • Less Fachkrรคfte: Affentests kรถnnen oft auch ohne hochqualifizierte Testpersonen durchgefรผhrt werden.
  • Less teuer: Es benรถtigt wesentlich weniger Aufwand fรผr Einrichtung und Betrieb als eine skriptbasierte Suite.

Nachteile von Affentests

  • Fehler kรถnnen schwer zu reproduzieren sein: Da die Eingaben zufรคllig sind, ist es unter Umstรคnden nicht mรถglich, einen Fehler ohne einen aufgezeichneten Startwert zu reproduzieren.
  • Less Richtigkeit: Der Tester kann kein genaues Szenario definieren und kann die Richtigkeit des Abgedeckten nicht garantieren.
  • Technisches Fachwissen ist nach wie vor hilfreich: Damit die Ergebnisse aussagekrรคftig sind, benรถtigen die Tester gute Fachkenntnisse.
  • Langsam im Verhรคltnis zum Ertrag: Die Testlรคufe kรถnnen sich รผber einen langen Zeitraum erstrecken und dennoch nur wenige Fehler liefern, wodurch Lรผcken im System entstehen.

Wie man Affentests durchfรผhrt

Monkey-Testing wird wesentlich effizienter, wenn ein Tool den Prozess steuert und er gegen โ€ฆ ausgefรผhrt werden kann. Android Erstellt sowohl Desktop- als auch Webanwendungen. Der allgemeine Ablauf ist wie folgt:

  1. Registrieren Sie die zu testende Anwendung bei dem Tool oder dem dedizierten Server, der sie ausfรผhren wird.
  2. Bereiten Sie die Referenzen und Konfigurationen vor, die das Tool zum Erstellen einer Testsuite benรถtigt.
  3. Fรผhren Sie die erstellte Testsuite aus.
  4. Lassen Sie das Tool sein Protokoll schreiben โ€“ die Protokolldatei โ€žmonkey testโ€œ zeichnet jedes generierte Ereignis und die Ergebnisse auf.
  5. Lassen Sie den Vorgang so lange laufen, bis das System einen Absturzpunkt erreicht, an dem die fehlerhafte Aktion im Protokoll erfasst wird.
  6. Teilen Sie den Bericht mit dem zustรคndigen Team und speichern Sie die Testdaten zur spรคteren Verwendung.

Bewahren Sie alle Protokolle auf. Ein Zufallslauf ist spรคter nur dann nรผtzlich, wenn die Ereignissequenz und der zugehรถrige Seed gespeichert wurden. Mรคngelmanagement kann den Absturz auf eine reproduzierbare Eingabe zurรผckfรผhren.

Affen-Testwerkzeuge

Monkey-Testing ist รผblicherweise automatisiert, da eine Maschine Tausende von Ereignissen generieren kann, wรคhrend eine Person nur einige Dutzend erzeugt. Die gรคngigen Optionen sind:

  • UI/Anwendungs-รœbungsaffe: ein in integriertes Befehlszeilentool Android das lรคuft in der adb shell und sendet pseudozufรคllige Datenstrรถme von Benutzerereignissen, wie Tippen, Gesten und Tastendrรผcken, sowie Systemereignisse an ein Gerรคt oder einen Emulator.
  • MonkeyRunner: ein separates Python API Es steuert Gerรคte und Emulatoren von einer Workstation aus, sendet spezifische Befehle und erstellt Screenshots. Trotz des Namens ist es nicht dasselbe Tool wie der Exerciser Monkey.
  • UI Automator und Appium: General mobile Tests Frameworks, die so programmiert werden kรถnnen, dass sie wรคhrend eines Builds halbzufรคllige Ereignissequenzen auslรถsen.
  • Fuzzing-Tools wie AFL: Die gleiche Idee der Zufallseingabe, angewendet auf Daten anstatt auf Gesten, wird in Fuzz-Tests.

Die Tool-Unterstรผtzung fรผr Monkey-Tests ist geringer als fรผr skriptbasierte Tests. AutomatisierungstestsDaher kombinieren die meisten Teams einen generischen Ereignisgenerator mit ihrem bestehenden Framework, anstatt ein dediziertes Produkt zu kaufen.

Wann man Monkey-Testing einsetzen sollte

Monkey-Testing verdient seinen Platz eher in bestimmten Situationen als als allgemeiner Ersatz fรผr geplante Tests.

Verwenden Sie es, wenn:

  • Fรผr eine frรผhe Version ist ein einfacher Stabilitรคtscheck erforderlich, bevor formale Testfรคlle vorliegen.
  • Die Benutzeroberflรคche ist hochgradig interaktiv โ€“ Spiele, Zeichenwerkzeuge, Mediaplayer โ€“ und das tatsรคchliche Nutzerverhalten ist schwer vorherzusagen.
  • Sie mรถchten ein Bad nehmen oder Der Stress Ein Prozess, der รผber viele Stunden hinweg nach Abstรผrzen, Speicherlecks und unbehandelten Zustรคnden sucht.
  • Eine Freigabe hat die vorprogrammierten Prรผfungen bestanden, und Sie mรถchten eine unabhรคngige รœberprรผfung durchfรผhren, um sicherzustellen, dass alles, was vom Skript nicht berรผhrt wurde, abgedeckt ist.

Vermeiden Sie es, wenn:

  • Sie benรถtigen wiederholbare Nachweise dafรผr, dass eine Anforderung erfรผllt ist โ€“ das ist die Aufgabe eines schriftlichen Testfall.
  • Der Build ist so instabil, dass jeder Durchlauf sofort abstรผrzt, wodurch alles hinter dem ersten Fehlschlag verborgen bleibt.
  • Die Zeit drรคngt, da ein zufรคlliger Durchlauf keine Garantie dafรผr bietet, etwas zu finden.

In der Praxis erzielt man die besten Ergebnisse durch die Kombination verschiedener Ansรคtze: Skriptbasierte Tests decken die bekannten Ablรคufe ab. exploratives Testen Er erforscht das Unbekannte bewusst und testet mit Affen das, was beide fรผr unmรถglich hielten.

Hรคufig gestellte Fragen

Der Name ist eine Anspielung auf das Bild des unendlichen Affen: Ein Affe, der lange genug wahllos auf Tasten schlรคgt, erzeugt irgendwann etwas Sinnvolles. รœbertragen auf Software fรผhrt die zufรคllige Eingabe schlieรŸlich zu Zustรคnden, die der Entwickler nicht vorhergesehen hat.

Exploratives Testen ist zielgerichtet: Ein Tester stellt eine Hypothese auf, untersucht sie und passt sie an. Affentests hingegen sind bewusst ungerichtet. Das eine beruht auf Urteilsvermรถgen, das andere auf der Anzahl und dem Zufall der Testpersonen.

Beiden Verfahren liegt die Verwendung von Zufallseingaben zugrunde, unterscheiden sich aber im Ziel. Beim Monkey-Testing werden Benutzerereignisse an eine Schnittstelle gesendet. Beim Fuzzing werden Parser und APIs mit fehlerhaften Daten gefรผttert, um in der Regel Sicherheitslรผcken aufzuspรผren.

Chaos Monkey gehรถrt zum Chaos Engineering: Es deaktiviert willkรผrlich Dienste oder stรถrt die Infrastruktur, um die Ausfallsicherheit zu testen. Die gemeinsame Idee ist die Zufรคlligkeit, doch das Ziel ist die laufende Plattform, nicht die Benutzeroberflรคche.

Modelle kรถnnen den Ereignisstrom in Richtung der von tatsรคchlichen Nutzern verwendeten Pfade lenken und so aus einem unerfahrenen Nutzer einen leistungsfรคhigeren machen. Sie gruppieren auรŸerdem doppelte Absturzprotokolle und priorisieren zufรคllige Fehler, die die Aufmerksamkeit eines Entwicklers erfordern.

GitHub-Copilot Das Grundgerรผst wird schnell erstellt โ€“ Ereignisgeneratoren, Seed-Verwaltung, Log-Parser und Skripte zur Fehlerbehebung. Die Zufallsstrategie und die Erfolgskriterien mรผssen noch von einem Tester definiert werden.

Nรผtzliche Kennzahlen sind beispielsweise Abstรผrze pro tausend generierte Aktionen, die Anzahl der gefundenen eindeutigen Fehler, die wรคhrend des Laufs erreichte Codeabdeckung und die Zeit bis zum ersten Fehler. Es empfiehlt sich, diese Daten รผber mehrere Builds hinweg zu analysieren, anstatt nur einen einzelnen Lauf zu betrachten.

Notieren Sie den Zufallsgenerator und das Ereignisprotokoll. Tools, die einen Zufallsgenerator akzeptieren, spielen die identische Sequenz erneut ab, sodass der Fehler auf einen kurzen, reproduzierbaren Fall eingegrenzt und als normaler Defekt gemeldet werden kann.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: