Monkey-Testing

Unser Affe heißt Surili, so wie die Affenart, die auf der Insel Java lebt. Und wir nutzen Künstliche Intelligenz und verschiedene Optimierungen, um das Affen-Testen zu optimieren:

  • Vollautomatische explorative Ausführung: Über die Standardelemente der Benutzeroberfläche wird die gesamte Anwendung soweit von der GUI aus erreichbar vollautomatisch explorativ Ausgeführt.
  • Aufbau eines Zustandsübergangsgraphen: Dabei wird ein deskriptiver Zustandsübergangsgraph der Anwendung erstellt. Dieser kann zur Dokumentation und Ergebnisüberprüfung verwendet werden.
  • Optimierung auf Coverage: Die erzeugten Ausführungen werden auf Code-Abdeckung (Coverage) optimiert. Dabei werden durchschnittlich 50 bis 60 Prozent erreicht, mit Spitzenwerten von bis zu 90 Prozent — je nach Anwendung.
  • Destruktives Testen: Bei der Ausführung wird besonders Wert auf destruktives Testen und Testen von Corner Cases gelegt. Crashes werden automatisch detektiert und zur Dokumentation wird automatisch ein minimaler Testfall erzeugt.
  • Vollautomatisches Regressionstesten: Die jeweiligen (Zwischen-) Ergebnisse der Ausführung werden gespeichert und dienen im Fall einer Änderung als Test-Orakel bzw. Assertions. Damit erzeugen wir vollautomatisch eine optimale Regressionstestsuite auf der Ebene der Benutzeroberfläche um im Falle einer Änderung bzw. Weiterentwicklung unerwünschte Seiteneffekte schnell zu erkennen.

Einschränkungen

  • Nur Java-Anwendungen: Momentan können wir nur Swing-Anwendungen auf Java-Basis testen. Wir arbeiten jedoch ständig an der Erweiterung auf weitere Technologien.
  • Nur strukturierte Eingabemasken: Dieser Ansatz ist auf Standardelemente der Benutzereingabe ausgelegt und funktioniert besonders gut mit strukturierten Eingabemasken (z.B. Verwaltungssoftware). Je unstrukturierter die Eingabe, desto weniger Abdeckung wird erreicht. Zu den Anwendungen die sich deshalb für diese Art des Testens nicht eignen gehören Spiele, Multimedia-Anwendungen und Editoren.