Blog

ChatGPT: The Next Level of (Automation) Testing? 

20 Feb, 2023
Xebia Background Header Wave
 
Bild von DALL·E 2 erstellt – der selbe Entwickler wie ChatGPT

ChatGPT ist zurzeit in aller Munde. Egal ob es gerade Prüfungen von Rechts- und Wirtschaftsschulen besteht, auf Social Media wie Instagram und TikTok kleine Webseiten für Entwickler schreibt, ein Job-Interview als Scrum-Master durchlebt oder von Elite-Universitäten in Frankreich blockiert wird. 

Es gibt derzeit kaum Bereiche, in denen ChatGPT nicht verwendet wird. Vor allem technisch kann es einiges hergeben, aber gilt das auch für automatisierte Tests? Wir haben uns das mal genauer angeschaut. 

Über KI 

Künstliche Intelligenzen sind nichts Neues. Wir hatten schon 2019 einen Faktencheck über KIs und wo sie schon überall eingesetzt werden. Und obwohl sich seitdem einiges getan hat, konnte bisher keine KI den Turing-Test überstehen. (= 30-minütige Methode zur Überprüfung, ob eine maschinelle Konversation so gut wie eine menschliche ist. Gut hier erklärt.)  

Agilität 

Auch agile-seitig wurde sich im Netz mit Chat GPT sehr schnell befasst. Von Interesse sind dabei die Aspekte, wie durch ChatGPT Ideen generiert werden können, aber auch wie sich die Entwicklung auf die Existenz von Scrum Master auswirkt. Scrum.org veröffentlichte einen Blogbeitrag, bei welchem ChatGPT klassische Scrum Master Interviewfragen beantworten sollte. Je spezifischer die Fragen wurde, umso mehr strauchelte die AI. Trotzdem ist das Thema im Netz heiss diskutiert. Das Interesse wie sehr die Scrum Master Rolle von der Entwicklung AI-basierter Systeme beeinflusst werden könnte oder ob sie vielleicht sogar eine Bedrohung darstellen würde, beschäftigt sich deshalb auch Joshua Partogi in der Folge dieses Videopodcasts (Ep. 19 Is the Scrum Master "finished" because of ChatGPT? ).  

Schon nach zwei Minuten sagt er als kurzes Fazit, dass Scrum Master und Agile Coaches allein aus dem Aspekt, dass sie Servant Leader sind, nicht von einem Chatbot ersetzt werden können, der weder Kontext versteht, noch menschlich ist. Anschliessend gibt er noch ein paar weitere Gedankenanstösse, warum das Verstehen der Theorie nur einen Bruchteil des Agile Coachings ausmacht. “The fact is, we need more humble leaders to serve in our society” erwähnt Joshua mehrmals- schaut doch mal rein.

Es wird sich aber auch damit auseinandergesetzt, wie man durch ChatGPT Ideen generieren kann für eine Retro. Denn viele der Antworten von ChatGPT sind tatsächlich für Gedankenanstösse sehr hilfreich, auch wenn sich manche Antworten wiederholen.

Nutzt du als Scrum Master bzw. Agile Coach auch schon ChatGPT oder hast du sogar Bedenken, wenn du über die Entwicklung nachdenkst? Schreib uns gerne in die Kommentare! 

QE: Rest-API 

Nun zum Praxis-Test! Für diesen Praxis-Test haben wir uns entschieden eine API mittels Hilfe von ChatGPT zu testen. Alles basierend auf der Dokumentation der API.  

Wir nehmen in diesem Fall die offene und simple Rest-Countries-API

Zuerst soll ChatGPT ein paar Tests definieren. Dann soll der Code zum Ansprechen der API geschrieben werden und anschliessend die jeweiligen Testfälle dazu. Zusätzlich soll noch die Funktionalität der API in einer Jira-Ticket-Form abgebildet werden.  

Bei der Rest-Countries-API handelt es sich um eine RESTful API, die Informationen über Länder und ihre Geographie bereitstellt. Dabei können die Nutzer des Rest-Endpoints Zugriff auf Informationen wie die Bevölkerung, die Hauptstadt, die Amtssprache, die Währung und die Fläche eines Landes erhalten. 

Ich habe die gesamte „API ENDPOINTS V3“-Dokumentation von der Webseite genommen und bat damit als Input Chat-Gpt eine Anbindung daran in C# dafür zu schreiben und prompt legte es los: 

Der Code passte syntaktisch, allerdings hatte sich die Syntax von RestSharp in den letzten Jahren verändert und das wurde nicht beachtet. Der Code musste angepasst werden. Ausserdem waren die erzeugten Methoden sehr generisch, sprich, es wurden die komplette API-Antworten zurückgegeben und nicht bearbeitet durch z.B. Models: 

Methode generiert durch ChatGpt, die einfach nur die Antwort der API zurück gibt. 
Methode ebenfalls generiert durch ChatGpt, aber diesmal wird die Antwort von der API verarbeitet. 

Nachdem ich ChatGpt bat, dass es mir eine Testklasse zu diesen erzeugten Methoden erzeugt, waren die meisten Tests in diesem Stil:

Man sieht, die Testklassen sind sehr generisch, und es wird nicht detailliert Funktionales getestet; also nur ob eine Antwort vom API kommt. Der Inhalt dieser Antwort wird überhaupt nicht validiert. 

Allerdings ist ChatGpt bei der Lieferung in ganzen Sätzen stark und lieferte einige valide Antworten: 

Erzeugung von funktionalen Tests: 

Erzeugung von Jira-Tickets nach der Funktionalität:

Und da sind wir auch schon beim Fazit. 

Fazit

Es wird eine super Basis geliefert, eine Art Grundgerüst in dem die nervige Konfiguration wie Anbindung an das API, Authentifizieren, usw. schon erledigt wurde. Selbst die Testklassen wurden bereits erstellt. Ab da aber braucht es einen Menschen, denn der Inhalt der Tests gibt qualitätsmässig relativ wenig her. Der Code war meistens zu generisch. Um wirklich hilfreiche Tests zu erhalten, gilt es als Input sehr detailliert zu beschreiben, was alles inkludiert werden soll. 

Je detaillierter die Beschreibung, desto öfters brach die Antwort mitten drinnen ab und musste neu gestartet werden: 

Teilweise konnten die Antworten auch gar nicht mehr fertig gestellt werden oder es wurde der Kontext der vorherigen Antworten nicht mehr inkludiert, so dass in einer Anfrage dann so viel Input benötigt wird, dass die Beantwortung noch fehlerhafter wurde. 

Allerdings, wenn nur bestimmte Code-Snippets und nicht ganze Konzept generiert wurden, dann wurde dies meistens erfolgreicher erledigt: 

Chat GPT lieferte öfters gute Testdaten, vor allem eine gute Basis auf die dann weiter getestet werden kann. Dieses wurde SwissQ-intern auch mit weiteren APIs durchgeführt. Es brauchte aber immer eine manuelle Anpassung, damit der Code auch wirklich erfolgreich und sinnvoll die API testen konnte. Es kann einiges an Zeit damit eingespart werden (= generieren einer Testbasis, Einlesen und Verarbeiten von Testdaten, etc.) damit sich der/die TesterIn auf das Wesentliche fokussieren kann: Tests schreiben. Aber: Sehr viele Antworten hatten auch semantische Fehler, oder wurden wegen missinterpretierten Fragen falsch beantwortet. Und diese falsch beantwortete Fragen werden mit einem sehr starken Selbstbewusstsein vertreten. Deswegen muss immer der generierte Inhalt nach Korrektheit überprüft werden. ChatGpt kam aber auch erst vor Kurzem raus. In grossen und ganzen kann vor allem am Anfang, wenn du noch wenig Infrastruktur oder Code vorhanden ist, einiges an Zeit erspart werden und je komplexer die Solution ist, desto weniger hilfreicher werden die generierten Antworten. 

Man sieht, dass das Menschliche nicht ersetzt werden kann. Umso wichtiger ist es eine Person dabei zu haben, die das ganze produzierte und bestehende reviewed. Wie schaut die Zukunft von AI aus? Wir bleiben gespannt und am Thema dran! 

Möchten Sie die Vorteile von künstlicher Intelligenz nutzen, um nicht nur ihr Testing, sondern auch Ihre Geschäftsprozesse zu automatisieren und zu optimieren? Kontaktieren Sie uns, um Ihre Anforderungen zu besprechen und gemeinsam eine massgeschneiderte Lösung für Ihr Unternehmen zu entwickeln. Wir freuen uns darauf, Ihnen zu helfen, Ihre Ziele zu erreichen! 

Dieser Artikel ist eine Gemeinschaftsarbeit von Manuel Hintermayr und Teresa Schrempp, SwissQ Consulting, Februar 2023. 

Questions?

Get in touch with us to learn more about the subject and related solutions