Was ist ein Monkey-Testing-System (MTS)?

Ein Monkey-Testing-System ist eine Software, die das Infinite-Monkey-Theroem als automatisiertes Testsystem umsetzt. Hierzu benötigt das Monkey-Testing-Systems (MTS) lediglich die Angabe, welche Software zu testen ist.

Welche Testalgorithmen kommen zum Einsatz?

Der Testablauf ist abhängig von den programmierten Algorithmen des Monkey-Testing-Systems. Diese reichen von einfachen sequentiellen Abläufen, über die Nutzung von Heuristiken, bis hin zum Einsatz künstlicher Intelligenz (KI).

Der Testdurchlauf ersetzt fehlendes Fachwissen durch Beharrlichkeit

Da dem Monkey-Testing-System keine fachlichen Anforderungen zum Testobjekt bekannt sind, kann es mit minimalem Aufwand auf die zu testende Software angepasst werden. Den Mangel an fachlicher Information gleicht das Monkey-Testing-System durch seine Beharrlichkeit aus.

Anders als ein menschlicher Tester oder ein Automatisierungsskript, kann es rund um die Uhr testen und dabei selbstständig eine Vielzahl an Interaktionsfolgen und Varianten der Eingabedaten ausprobieren. Führt eine Interaktionsfolge in eine Sackgasse, startet das Monkey-Testing-System einen neuen Testlauf.

Ein einfaches Monkey-Testing-System ist schnell entwickelt!

Ein einfaches Monkey-Testing-System zur Prüfung der, lässt sich mit geringen Mitteln umsetzen. Nach dem Zufallsprinzip wählt das Monkey-Testing-System Elemente der Benutzeroberfläche aus und führt darauf beliebige Aktionen wie Klicks oder Tastatureingaben aus. Die Art der ausgeführten Aktionen, sowie das beobachtbare Systemverhalten werden für jeden Schritt dokumentiert. Wird im Anschluss bei der Analyse eines Monkey-Testlaufs ein auffälliges Verhalten festgestellt, lässt sich anhand der dokumentierten Schritte das auffällige Verhalten reproduzieren.

Das Feature „Heuristiken“ reduziert signifikant das manuelle Testen!

Durch die Programmierung von Heuristiken kann das Monkey-Testing-System zielgerichtet arbeiten. So können beispielsweise Variationen von Eingabedaten bevorzugt verwendet werden, die bereits zu einem auffälligen Systemverhalten geführt haben oder die erfahrungsgemäß oft zu Fehlern führen (Grenzwerte, Eingaben mit Sonderzeichen oder leere Zeichenketten, etc).

Das Feature „KI“ steigert die Effizienz im Testdurchlauf!

Ein intelligentes Monkey-Testing-System merkt sich abgearbeitete Interaktionsfolgen, um diese nicht erneut ausführen. Durch die Verknüpfung mit Metriken (z.B. Code-Coverage) kann das Monkey-Testing System Interaktionsfolgen hinsichtlich ihrer Eignung zur Erreichung eines Optimierungsziels bewerten und entsprechend weiterverfolgen oder verwerfen. Hochentwickelte Monkey-Testing-Systeme nutzen darüber hinaus Verfahren aus dem Bereich der KI – wie etwa genetische Algorithmen, womit sich die Effizienz und die Effektivität der Testdurchführung deutlich steigern lässt.

Das Feature „Testobjekt-spezifisches Wissen“ fokussiert den Testdurchlauf

In geringem Umfang muss auch ein Monkey-Testing-System mit anwendungsbezogenen Informationen konfiguriert werden. So muss das Monkey-Testing-System beispielsweise in der Lage sein, sich am Testobjekt anzumelden oder einen schweren Fehler (z.B. Absturz) selbstständig zu erkennen, um anschließend das Testobjekt neu starten zu können. Auch kann es in vielen Fällen notwendig sein, sogenannte Black- oder Whitelists zu definieren, die dem Monkey-Testing-System zeigen, welche Navigationspfade erlaubt (Whitelist) oder – verboten sind (Blacklist). Andernfalls würde ein Monkey-Testing-System, das eine Webapplikation testet nicht bemerken, wenn es diese über einen Link verlässt und auf externen Seiten weiter testet. Hmm – Im worst case, würde das Monkey-Testing-System alle Internetseiten dieser Welt testen….

Resümee

Wir haben in unseren Kundenprojekten mit der Programmierung projektspezifischer Monkey-Testing-Systeme Software sehr gute Erfahrungen gemacht. Besonders dann, wenn die Faktoren:

  1. große Software-Qualitätsmängeln, in Kombination mit
  2. Termindruck,
  3. Geringem Testbudget oder
  4. Personalmangel (da Testexperten am Markt nicht verfügbar sind)

zusammentreffen.

In unseren Kundenprojekten führt die Programmierung eines einfachen Monkey-Testing-Systems nach wenigen Wochen zu einer deutlichen Qualitätssteigerung der zu entwickelnden Software. Besonders imageschädigende Programmabstürze werden sehr schnell und früh erkannt. Der manuelle Testdurchlauf wird mit jedem Testzyklus nach manuellen, wiederkehrenden monotonen Ablaufmustern hin überprüft. Mittels einer einfachen Kosten-/Nutzen-Rechnung, werden diese als neue Feature im Monkey-Testing-System umgesetzt.

In unseren Kundenprojekten führt der Einsatz eines testobjektspezifischen Monkey-Testing-System zu einer deutlichen Reduktion der Testszenarien bei gleichzeitig steigender Qualität des zu entwicklenden Software-Produktes.