In der schnelllebigen Welt der agilen Softwareentwicklung suchen Teams immer nach neuen Möglichkeiten, um ihre Effizienz zu steigern und die täglichen Herausforderungen optimal zu bewältigen. Künstliche Intelligenz (KI) spielt dabei eine entscheidende Rolle, insbesondere, wenn es darum geht, den gesamten Testprozess zu optimieren und Entwickelnde aktiv zu unterstützen. Aus diesem Grund nehmen unsere Xperten heute unterschiedliche KI-Tools zur Testgenerierung genauer unter die Lupe.
Historie und Ausprägungen
Bevor wir nun näher auf die Beispiele eingehen, möchten wir einen kurzen Überblick der KI-Forschung zur besseren Einordnung geben. Anfangs existierten noch keine konkreten Anwendungen, nur der Wunsch, Computer zu erschaffen, die in der Lage sind, menschliches Denken nachzuahmen. Der Begriff „Künstliche Intelligenz“ wurde erstmals auf der sogenannten Dartmouth-Konferenz 1956 gebraucht, die als Geburtsstunde der KI gilt.
Nach einer ersten Hochphase stagnierte die Entwicklung jedoch ab etwa Mitte der 1970er-Jahre, da die Realität hinter den Ergebnissen zurückblieb. Angetrieben durch LISP-Maschinen sowie Expertensysteme erlebte die KI-Forschung in den 1980er-Jahren wieder einen Aufschwung. Die euphorische Aufbruchsstimmung ebbte jedoch 1987 wieder ab und das Feld erholte sich langsam über die 1990er-Jahre. Machine Learning brachte erste Anwendungen mit vielfältigen Nutzungsmöglichkeiten wie bspw. Suchmaschinen oder Spamfilter. Hier wird durch intensives Training mit Erfahrungen, also Daten, eine kontinuierliche Verbesserung der Systeme erzielt.
Nach 2000 kam es mittels Deep Learning schließlich zu einem Durchbruch in der Objekterkennung durch Computerprogramme. Diese Systeme werden mit äußerst komplexen tiefen neuronalen Netzwerken trainiert (KNN). Der nächste große Schritt erfolgte 2014 mit dem Aufkommen der Generative Adversarial Networks (GAN). GANs sind in der Lage, neue Daten zu generieren, die praktisch nicht mehr von echten Daten zu unterscheiden sind. Mit der Geburt der auf Large Language Models (LLM) basierenden Anwendungen wie bspw. ChatGPT sind wir vorerst in der Zukunft angekommen.
Worauf die KI-Entwicklung hinsteuern wird, ist jedoch nicht mit Sicherheit vorherzusagen. Auf bisherige Höhepunkte folgten immer wieder Rückschläge. Auch wenn derzeit nahezu überall KI implementiert wird, bleibt unklar, welche Auswirkungen dies für die KI-Forschung als auch uns Menschen haben wird. Sicher scheint nur, dass, wer in Zukunft wettbewerbsfähig agieren möchte, nicht an dem Gebrauch von KI-Tools vorbeikommen wird – auch nicht in der IT-Branche. Siehe dazu unser Xperten-Interview sowie unseren Blogbeitrag Help me, AI is taking my job.
VisualAI
Diese KI-Form ist speziell darauf ausgerichtet, visuelle Informationen zu verstehen bzw. zu generieren. VisualAI besitzt die Fähigkeit, Objekte zu identifizieren und Muster zu erkennen und wird daher in zahlreichen Branchen eingesetzt (bspw. Medizin, Automobilindustrie, Einzelhandel, Sicherheit). Ihre Eigenschaften machen sie aber auch für die Qualitätssicherung in der Softwareentwicklung attraktiv. Beliebte Anwendungen sind u. a. AskUI, Haelenium, Eggplant, Maestro sowie Applitools.
Beispiel Google Maps
Der zunehmende Einsatz von Canvas-Objekten bereitet im Frontend Testing immer größere Probleme, die mit herkömmlichen Testmethoden auf Dauer nicht mehr beherrschbar sind. Diese Tests basieren meist auf einer Durchsuchung des DOM-Baums, der in Canvas jedoch nicht existiert. Grafiken werden hier auf Pixel-Ebene gezeichnet und nicht als einzelne DOM-Elemente dargestellt. Mit dem Einsatz eines VisualAI-Tools gelingt es, diese Canvas-Objekte zu identifizieren. Bspw. lässt man den Screenshot einer Anwendung von AskUI analysieren. Mithilfe von Deep Learning erkennt das Tool Muster und segmentiert anschließend die Objekte. Daraus lassen sich GUI-Maps erstellen und man kommt damit so nah wie derzeit technisch möglich an eine Mensch-Computer-Interaktion heran. Auch Code-Selektoren werden nicht mehr benötigt, da sich auf rein visuelle Features bezogen wird.
Schreiben von Test Cases
Das Schreiben von Code ist für viele Entwickelnde eine kreative Herausforderung. Doch wenn es darum geht, den geschriebenen Code anschließend auch zu testen, wird das Schreiben von Tests mitunter als repetitiv und monoton wahrgenommen. Genau hier kann GPT aus Sicht unserer Xperten unterstützend wirken. Für weniger anspruchsvolle Arbeiten wie bspw. Unit Tests können KI-Tools eine ganze Menge Vorarbeit leisten. Entwickelnde sparen somit Zeit und steigern ihre Effizienz.
Doch wie sieht das nun in der Umsetzung aus?
Grundsätzlich stellt man GPT eine Anfrage (Prompt), einen Unit Test zu schreiben und übermittelt dabei auch den dazugehörigen HTML- und JavaScript-Code. Mit einem Framework wie bspw. LangChain kann der Code auch direkt an GPT übermittelt werden. Neuer Code wird eingecheckt und mittels Pipeline-artiger Struktur direkt an GPT weitergegeben. Anschließend werden die Ergebnisse abgeholt und in einen Branch gepusht. Entwickelnde bzw. Testende können dann die automatisch generierten Tests im Rahmen des bewährten 4-Augen-Prinzips reviewen.
XRay Test Cases zur Qualitätssicherung
In der agilen Softwareentwicklung sind einzelne Teams oftmals mit bürokratischen Herausforderungen konfrontiert. Das ständige Hin- und Herschieben der Tickets sowie die Pflege umfangreicher Ticketbeschreibungen können äußerst zeitintensiv sein. Einarbeitung, Kommentare, Dokumentation sowie Reports ans Management, die Liste scheint endlos. Manchmal kommen auch noch Admintasks sowie Berechtigungsprobleme hinzu. Die gute Nachricht: Der agile Prozess bietet eine Vielzahl an Möglichkeiten, KI-Tools in unterschiedlichen Projektphasen zu implementieren und diesen somit zu optimieren.
Wer mit Jira arbeitet, ist womöglich auch mit dem Testmanagement XRay vertraut. Wird dieses an den richtigen Stellen mit KI-Tools wie GPT kombiniert, lassen sich damit in der Regel deutliche Prozessverbesserungen sowie Effizienzsteigerungen erreichen. Nachfolgende Grafik bildet einen durch GPT unterstützten Prozessablauf ab.
Nachdem die Requirements durch das Requierements Engineering spezifiziert wurden, wird die Story von der testenden Person auf „Ready for Test“ gesetzt, um die Anforderungen zu evaluieren. An diesem Punkt kommt Azure Functions mit einem Hook auf Jira zum Einsatz. Der Hook erfasst die Änderungen und reicht die Story mit einem entsprechenden Prompt an GPT weiter. Die Qualität der generierten Ergebnisse hängt jedoch stark vom Prompt Engineering ab. Dieses stellt sicher, dass die Antworten vergleichbar und qualitativ hochwertig sind. Mittlerweile lassen sich viele Anleitungen im Netz finden, wie starke und zielführende Prompts erstellt werden können.
Basierend auf dem Prompt generiert GPT Antworten, die als einzelne Test Cases dienen. Diese können entweder direkt über die XRay/Jira-API angelegt oder vorerst nur als Kommentare zur Story hinzugefügt werden.
Schließlich werden die generierten Test Cases am Ende direkt im Jira-Ticket angezeigt. Hierbei empfehlen wir, die gesamte Automatisierung mithilfe von Stichworten zu steuern, bspw. durch das Hinzufügen von Tags wie „ai-generated-tests“. Diese Tags machen deutlich sichtbar, dass auch maschinengenerierte Tests involviert sind. So haben Nutzende die Kontrolle darüber, ob eine automatische Generierung stattfinden soll.
Fazit
Anhand unserer Beispiele zeigt sich, dass zum derzeitigen Entwicklungsstand keine Gefahr besteht, dass Testende durch den KI-Einsatz ihre Jobs verlieren. Vielmehr wird deutlich, dass KI-Tools Testende dabei unterstützen, ihre Aufgaben immer besser und schneller zu erledigen. Es ist wichtig, die jeweiligen Stärken zu erkennen und miteinander zu kombinieren. Während der Mensch über Fähigkeiten wie bspw. Intuition verfügt, sind KI-Tools äußerst schnell und ermüdungsfrei, besitzen zudem auch ein enormes Allgemeinwissen. Nichtsdestotrotz ist es wichtig, bei der Arbeit mit KI-Systemen auf Datenschutzkonformität zu achten, gerade wenn es sich um personenbezogene Daten handelt. Neben personenbezogenen Daten sind auch IP- und Urheberrechtsschutz ein wichtiges Thema und sollten in jedem Fall berücksichtig werden. Aktuell befinden wir uns in der KI-Entwicklung in der kollaborativen Phase und das bedeutet, dass ein Mensch und eine Maschine mit sehr hoher Wahrscheinlichkeit ein besseres Ergebnis erzielen als eine Maschine oder ein Mensch alleine.
Softwareentwicklung
Erfahren Sie mehr über unsere Leistungen