DevOps und DevOps Movement stellen einen wahren Quantensprung im Software Testing dar, da dadurch alle bisherigen Errungenschaften des Testens miteinander verbunden und erweitert werden. Mit DevOps erhalten Tester die Möglichkeit, sich direkt an der Wertschöpfungskette in ihrem IT-Betrieb zu beteiligen. Artificial Intelligence (AI) und Machine Learning (ML) ergänzen seit einiger Zeit die bestehenden und etabliert Testing-Möglichkeiten. So kann AI in diversen Bereichen des Software-Testings einen wertvollen Beitrag leisten. Gerade im Kontext von DevOps sind die Applikationen auf immer mehr Daten angewiesen. Hier sind auf AI und ML basierende QA-Tools künftig nicht mehr wegzudenken. So kommen AI-basierte Testwerkzeuge beispielsweise beim Testen von Software für das autonome Fahren zum Einsatz.
Für Testing-Ansätze mit einem Testorakel ist der direkte Einsatz von künstlicher Intelligenz aber (noch) nicht geeignet. Mit einem Testorakel werden jeweils vorausgesagte Ergebnisse mit den tatsächlichen Ergebnissen einer Software im Test verglichen. Ein solches Vorgehen kann mit AI nicht realisiert werden, weil das Testorakel eine deterministische Voraussage des Testergebnisses voraussetzt. Applikationen, welche die heutigen AI-Techniken einsetzen, beispielsweise mit subsymbolischen Techniken, verhindern dies.
AI-basierte Testtools
Es gibt bereits eine ganze Reihe AI-basierter Testwerkzeuge und Anwendungen. Dazu einige Beispiele:
- Anomalien-Erkennung: visuelle, browser- und geräteübergreifende Tests grafischer Benutzeroberflächen (GUI)
- Objekterkennung: Auswahl von Identifikatoren, Erstellung und Pflege automatischer Regressionstests
- Automatische visuelle Validierung: eine Mustererkennung identifiziert visuelle Fehler
- User Interfaces Testing: ML-Algorithmen erkennen Bildmuster durch Vergleich von Unterschieden
- API-Tests: ML-basierte Algorithmen werden für Back-End-API-Tests verwendet
AI optimiert Testprozesse
Natürlich erfordern auch Testprozesse mit künstlicher Intelligenz eine gewisse Vorbereitung. So fokussieren sich die Tester zunächst auf risikobehaftete Software-Teile, welche mit AI identifiziert werden sollen – dieser Ansatz wird auch Risk-based Testing genannt. Bei der Testauswahl werden daher jene Testfälle bestimmt, die ein hohes Risiko – etwa wenn Menschenleben auf dem Spiel stehen – mit sich bringen. Während der Testfall-Generierung, aber auch bei der späteren Wartung, wird das so genannte AI Spidering verwendet. Mit Hilfe des AI Spiderings werden Testfälle für die Anwendung geschrieben.
Im nächsten Schritt erfolgt die automatische Erstellung und Wartung von Testscripts. Hier werden Testskripte automatisch an Änderungen angepasst, wodurch die automatisierten Tests wartbarer und zuverlässiger werden (self-healing Technology). AI-basierte Tools können Testfälle intelligent erstellen und einzelne Testschritte dokumentieren. Bei der Identifizierung und Auswahl der auszuführenden Tests helfen prädiktive Testauswahl-Algorithmen (Predictive Test Selection).
Die nun folgende Auswahl potenzieller Softwarefehler (Defects Triage) nutzt automatisierte Fehlerberichte. Allfällige Softwarefehler werden bei der anschliessenden Fehleranalyse bestätigt oder verworfen (Failure Determination). Die Verwendung von Predictive Analytics-Methoden erlaubt zudem eine automatisierte Fehlerverfolgung, womit tiefgehende Probleme von falsch gemeldeten, aber positiven Ergebnissen getrennt werdem. AI ersetzt hier die zeitraubende und mühsame manuelle Analyse der Fehlerlogs. Dadurch kann die Arbeit im Software Testing vereinfacht werden.
Den Anwendungen AI-basierter Testtools sind kaum Grenzen gesetzt. Der Nutzen liegt dabei klar auf der Hand: Eine höhere Software-Qualität dank automatisierter und verbesserter Testverfahren.
Der Experte
Slobodan Bozic
Slobodan Bozic war als Senior Testmanager bei bbv tätig. Einen besonderen Fokus legt er auf das Thema TestOps. Wenn Slobodan / Bob sich nicht gerade mit dem Testing beschäftigt, verbringt er Zeit mit seiner Familie.