Blog

Von der Forschung in die Realität – Advanced Intelligence For Testing

Gefördert von der Österreichischen Forschungsförderungsgesellschaft (FFG) hat ein Team von Automatisierungs- und KI-Experten an der Vision eines voll automatisierten Test Life Cycle geforscht. Ihr Ziel: QA-bezogene Prozesse umfassender, skalierbarer, schneller und vor allem intelligenter zu machen.

Im Softwareengineering hat sich die Automatisierung von Tests bewährt und trägt zu kürzeren und effizienteren Entwicklungszyklen bei. Viele Teams integrieren automatisierte Tests bereits in ihren Entwicklungspipelines und führen schon beim Einchecken von neuem oder geänderten Sourcecode Testfälle auf mehreren Teststufen aus. Aus Sicht der Qualitätssicherung könnte man meinen, damit ein zufriedenstellendes Qualitätsniveau erreicht zu haben?

Die Realität sieht leider doch oft anders aus. Die aufwendig und mühsam erkämpften Fortschritte bringen neue und vorher oft nicht bedachte Herausforderungen mit sich, wie folgendes Beispiel-Szenario veranschaulicht:

Tom, unser UI Entwickler, hat die neuen Designs am Log-In für unsere Web- Anwendung umgesetzt. Die Smoke Tests sind fehlerfrei und somit checkt er den Code ein. Er kann leider die komplette automatisierte Test-Suite nicht ausführen lassen, da bereits ein sehr umfangreiches Testset implementiert ist. Der komplette Durchlauf der Tests benötigt 10 Stunden und läuft in der darauffolgenden Nacht.

Nun heißt es, auf den Testdurchlauf zu warten …
Am nächsten Mittag stellt Bernd, unser Back-End-Entwickler, fest, dass im Nightly Testrun ca. 40 Testfälle nicht erfolgreich durchgelaufen sind.

Mal eben schnell die Log Files analysieren
Nach zwei Stunden zeitraubender Analyse der Log-Files, um den wirklichen Fehler herauszufinden und ein ernsthaftes Gespräch mit Tom, hat Bernd die zwei Zeilen gefunden und geändert, die zu den Fehlern geführt haben.

Es hat 24 Stunden gedauert, um zwei Zeilen trivialen Code zu korrigieren …

Die geschilderte Situation ist für die meisten Softwareentwickler nicht bloß graue Theorie. Die heute existierende Testautomatisierung hilft die Softwarequalität zu erhöhen. In unserer vorhin beschriebenen Geschichte wäre sonst der Fehler nicht aufgefallen. Dennoch sind viele Prozesse rund um die Testautomatisierung immer noch manuell und aufwendig. 

Abb. 1:  Die automatische Testdurchführung ist lediglich ein kleiner Bestandteil im Test Life Cycle. Die verbleibenden Schritte sind meist noch manuell und wiederkehrende Aufgaben 

 

 

 

 

Die Vision: Ein voll automatisierter Test Life Cycle

Gefördert von der Forschungsförderungsgesellschaft Österreich (FFG) hat das Technologieunternehmen Nagarro gemeinsam mit dem Technikum Wien in 2019 ein Forschungsprojekt gestartet: AI4T – Advanced Intelligence for Testing. Durch den Einsatz von Machine Learning und Artificial Intelligence will man der Vision eines voll automatisierten Test Life Cycles ein Stück näherkommen.

Bereits im ersten Jahr des Forschungsprojektes konnten u.a. drei erfolgsversprechende Ansätze entwickelt werden. 

  1. Smart Test Selection

Smart Test Selection beantwortet die Frage, welche Teilmenge der Testfälle ausgeführt werden muss, so dass die Laufzeit reduziert wird, aber trotzdem möglichst alle relevanten Fehler gefunden werden. Dabei werden mit AI-Methoden Charakteristika vergangener Testdurchläufe analysiert und aus diesen Daten eine Teilmenge der Testfälle ausgewählt. Wichtige Faktoren sind hierbei:

  • Testfälle, die in der Vergangenheit häufig fehlgeschlagen sind, werden häufiger ausgewählt. 
  • Testfälle, die bereits lange nicht mehr ausgeführt wurden, werden wahrscheinlicher ausgewählt.
  • Testfälle, die für gerade geänderte Codefragmente relevant sind, werden wahrscheinlicher ausgewählt.
  • Testfälle, die eine lange Laufzeit haben, werden weniger wahrscheinlich ausgewählt.

Die ausgewählte Teilmenge der Testfälle muss im Zielbereich eine ähnlich vollständige Testabdeckung haben, wie die vollständige Testsuite. 

2. Self-Healing Test Automation

Bei Self-Healing Test Automation beschäftigt man sich mit der Fragestellung, wie Testfälle bei Änderungen im Quellcode (semi-)automatisch angepasst werden können. Somit Warten und Pflegen sich die Testfälle automatisch und es wird der Aufwand der Anpassung der Testfälle stark reduziert. Einfache UI Änderungen können oftmals sogar vollautomatisch geändert werden. Bei komplexeren Änderungen ist es wichtig, dem Programmierer die Änderungen zu zeigen und bestätigen zu lassen. Technologisch lässt sich dieses Problem mit AI-basierten Methoden, wie z.B. Graph Matching lösen. Dabei wird der ursprüngliche UI Graph mit dem neuen UI Graph verglichen und ein Mapping zwischen den Komponenten hergestellt. 

3. Automatic Fail Analysis

Die Automatic Fail Analysis beschäftigt sich mit Methoden, um aus Log-Einträgen den wahren Fehler zu extrahieren. Hierfür stehen zahlreiche Algorithmen und Verfahren im Bereich Machine Learning zur Verfügung. Eine Methode ist das Clustern von Log-Files. Die Entwicklerteams legen sinnvolle Kategorien fest, in die fehlerhafte Testfälle anhand der produzierten Log-Einträge kategorisiert werden. Die Wahl der Kategorien hängt von der Anwendung ab. Nach einer Zeit der manuellen Annotation durch Entwickler werden diese Kategorien automatisch mittels Machine Learning zugeordnet. Durch gezieltes Feedback der Entwickler zu den Vorschlägen, kann die AI dann mit jedem weiteren Testlauf dazulernen. Somit wird die Zuordnung kontinuierlich verbessert. 

Erste Erfolge und vielversprechende Aussichten

Die drei beschriebenen AI4T-Use Cases hätten für Bernd und Tom in unserer Geschichte eine große Zeitersparnis und Produktionssteigerung bedeutet. Wir werden den Menschen beim Testen niemals ersetzen können und dies ist auch gar nicht das Ziel von AI4T. Aber es zeigt sich, dass durch den Einsatz von intelligenten Technologien viele, ständig wiederkehrende Aufgaben (teil-)automatisiert werden können. So bleibt mehr Zeit, um sich auf die komplexeren Fragestellungen zu fokussieren, die mehr Spaß machen! 

 

Über die Autoren

Jan Nößner ist Experte für AI und Machine Learning bei Nagarro. Er leitete zahlreiche und Machine Learning und Datenintegrationsprojekte Projekte in verschiedensten Unternehmen. 

Matthias Würthele ist Software Test Consultant bei Nagarro. Er bringt über 8 Jahre Erfahrung in der IT-Projektleitung mit und hat zahlreiche Testprojekte erfolgreich begleitet. 

Leave a Comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.