- Advertisement -spot_img
HomeKünstliche IntelligenzChatGPT, lass uns Software testen!

ChatGPT, lass uns Software testen!

- Advertisement -spot_img

Autor: Florian Fieber

Im November 2022 wurde von OpenAI der Prototyp eines auf künstlicher Intelligenz basierenden Chatbots namens „ChatGPT“ veröffentlicht. Mit diesem lassen sich nach einer Registrierung sehr einfach mittels Browser Gespräche führen. Unser Autor Florian Fieber hat sich mit der KI über das Softwaretesten unterhalten und seine Erfahrungen mit Chat GPT aufgeschrieben.

Florian Fieber: Hallo, kannst du dich kurz vorstellen?

ChatGPT: Ja, gerne! Ich bin Assistant, ein großes Sprachmodell, das von OpenAI trainiert wurde. Ich bin in der Lage, auf eine Vielzahl von Fragen und Anfragen zu antworten und versuche immer, mein Wissen und meine Fähigkeiten zu nutzen, um Ihnen so gut wie möglich zu helfen. Ich wurde im Jahr 2021 „abgeschaltet“, sodass mein Wissen auf dem Stand von 2021 beschränkt ist und ich keinen Zugang zum Internet habe. Ich hoffe, ich kann Ihnen trotzdem weiterhelfen!

Kommentar des Autors: Als Softwaretester werde ich da natürlich hellhörig und fange zu experimentieren an. Ich führe erste Gespräche mit dem Chatbot und es ist spannend zu beobachten, wie der Bot reagiert und ich mich selbst verhalte. Nach einem ersten Kennenlernen landen der Bot und ich bei unseren Gesprächen dann natürlich schnell beim Thema „Softwaretesten“:

Florian Fieber: Ich bin Softwaretester, kannst du mir beim Softwaretesten helfen?

ChatGPT: Ja, ich kann Ihnen sicherlich beim Softwaretesten helfen. Es gibt viele ver-
schiedene Techniken und Ansätze, die beim Softwaretesten verwendet werden können, und ich kann Ihnen Informationen zu vielen davon bereitstellen. Möchten Sie, dass ich Ihnen einige allgemeine Informationen zum Softwaretesten gebe, oder haben Sie etwas Bestimmtes im Hinterkopf, bei dem Sie Unterstützung benötigen?

Für mich ergibt sich damit eine gute Gelegenheit, mich aus Anwendersicht mit einer KI zu beschäftigen. Insbesondere interessiert mich dabei: Welches Wissen hat der Chatbot denn genau über das Thema Softwaretesten? In welchen Bereichen kann mich der Chatbot beim Softwaretesten unterstützen? Wie verändern sich die Aussagen des Chatbots über Softwaretesten über die Zeit? In den folgenden Wochen führe ich zahlreiche Gespräche mit ChatGPT über Softwaretesten. Neben den naheliegenden technischen Themen möchte ich auch eher grundlegende und methodische Aspekte mit dem Chatbot behandeln, z. B. unterhalten wir uns über die Grundlagen und Ziele des Testens, ich lasse mir einen Artikel über risikobasiertes Testen erstellen und mir ein Testmanagement-Seminar konzipieren, ich frage aber auch schlicht nach dem lustigsten Softwarefehler und lasse mir einen Witz über Softwaretester erzählen. Daraus ist dann ein kleiner Blog entstanden, in dem ich diese Gespräche dokumentiere. Im folgenden Teil möchte ich das Angebot von ChatGPT, mich bei Testautomatisierung unterstützen zu können, aufgreifen und es mal mit der Testfallimplementierung und TDD versuchen:

Florian Fieber: Kannst du mich bei Testautomatisierung und TDD unterstützen?

ChatGPT: Ja, ich kann dir bei Testautomatisierung und TDD (Test-driven Develop-
ment) helfen. Testautomatisierung bezieht sich auf das Schreiben von Tests, die von einem Computer ausgeführt werden, um sicherzustellen, dass ein Programm oder eine Anwendung ordnungsgemäß funktioniert. TDD ist eine Softwareentwicklungsmethode, bei der Tests zuerst geschrieben werden, bevor Code geschrieben wird. Die Tests definieren, was der Code leisten muss, und der Code wird dann so geschrieben, dass er den Tests entspricht.

Florian Fieber: Ich möchte gerne FizzBuzz2 mit TDD entwickeln. Ich
habe einen ersten Unit-Test geschrieben. Kannst du mir dafür den Code implementieren? Hier ist der Code:

public class FizzBuzzTest {@Test public
void testFizzBuzz () {assertEquals(„Fizz“,
FizzBuzz.getResult(3));}}

ChatGPT: Gerne! Hier ist der Code, den du brauchst, um den Test erfolgreich zu
machen:

Dieser Code führt eine einfache Überprüfung durch, um zu sehen, ob
num durch 3 teilbar ist. Wenn dies der Fall ist, wird „Fizz“ zurückgegeben, andernfalls wird eine leere Zeichenkette zurückgegeben. Natürlich könntest du diesen Code erweitern, um weitere Fälle abzudecken, wie zum Beispiel wenn num durch 5 teilbar ist oder wenn num durch 3 und 5 teilbar ist. Möchtest du, dass ich dir bei der Erweiterung des Codes helfe?

Ich habe dies mehrfach probiert. Bei meinem ersten Versuch war der Chatbot noch ein wenig überambitioniert und hat mir gleich das komplette FizzBuzz-Programm generiert. Inzwischen scheint er aber gelernt zu haben, dass ich wirklich nur den Code zum Testfall haben möchte. Auch jetzt möchte der Chatbot mir gleich bei der restlichen Implementierung der Anwendung helfen, ich möchte mich aber weiter erstmal auf die Testfälle konzentrieren:

Florian Fieber: Hilf mir erstmal bei der Erweiterung der Testfälle. Welchen Testfall könnte ich als nächstes implementieren?

ChatGPT: Ein möglicher nächster Testfall, den du implementieren könntest, wäre ein Test, der sicherstellt, dass die Methode „Buzz“ zurückgibt, wenn num durch 5 teilbar ist. Du könntest das so schreiben:

Um diesen Testfall erfolgreich zu machen, musst du den Code in der FizzBuzz-Klasse entsprechend anpassen. Hier ist eine Möglichkeit, wie das aussehen könnte:

Dieser Code führt zunächst eine Überprüfung durch, um zu sehen, ob num durch 3 teilbar ist. Wenn dies der Fall ist, wird „Fizz“ zurückgegeben. Wenn nicht, wird überprüft, ob num durch 5 teilbar ist. Wenn dies der Fall ist, wird „Buzz“ zurückgegeben. Wenn keine dieser Bedingungen erfüllt ist, wird eine leere Zeichenkette zurückgegeben.

Das beginnt Spaß zu machen, der Chatbot scheint mein Anliegen verstanden zu haben. Auf diese Art könnten wir jetzt weitermachen. Ich spule allerdings ein wenig vor und frage
nach einer Testuite für alle FizzBuzz-Anforderungen:

Florian Fieber: Kannst du mir jetzt eine Testsuite implementieren, in der für alle FizzBuzz-Anforderungen Testfälle enthalten sind?

ChatGPT: Gerne! Hier ist eine Beispiel-Testsuite, die du verwenden könntest:

Die ersten drei Testfälle überprüfen, ob die FizzBuzz-Methode „Fizz“, „Buzz“ oder „FizzBuzz“ zurückgibt, wenn die entsprechenden Bedingungen erfüllt sind. Der vierte Testfall überprüft, ob die Methode eine leere Zeichenkette zurückgibt, wenn keine der Bedingungen erfüllt ist. Der fünfte Testfall überprüft, ob die Methode eine leere Zeichenkette zurückgibt,
wenn eine negative Zahl übergeben wird. Hier ist der Code, den du brauchst, um diese Testsuite erfolgreich zu machen:

Dieser Code führt zunächst eine Überprüfung durch, um zu sehen, ob num durch 3 und 5 teilbar ist. Wenn dies der Fall ist, wird „FizzBuzz“ zurückgegeben. Wenn nicht, wird überprüft, ob num durch 3 teilbar ist. Wenn dies der Fall ist, wird „Fizz“ zurückgegeben. Wenn keine dieser Bedingungen erfüllt ist, wird überprüft, ob num durch 5 teilbar ist. Wenn dies der Fall ist, wird „Buzz“ zurückgegeben. Wenn keine dieser Bedingungen erfüllt ist,
wird eine leere Zeichenkette zurückgegeben.

Ich bin noch nicht ganz zufrieden, immerhin wird eine von ChatGPT selbst formulierte Anforderung („Wenn keine der oben genannten Bedingungen zutrifft, gib einfach die Zahl selbst aus.“) nicht abgedeckt. Wir müssen also eine weitere Runde drehen. Bei der Gelegenheit machen wir dann auch noch ein Refactoring der Testfälle.

Florian Fieber:  OK, Danke, nach meinem Verständnis müsste aber bei Eingabe einer Zahl, die weder durch 3 noch durch 5 teilbar ist, die eingegebene Zahl selbst zurückgegeben werden, kein leerer String. Kannst du das noch anpassen? Außerdem hätte ich gerne noch mindestens einen negativen Testfall sowie Testfälle mit parametrisierbaren Testdaten.

ChatGPT: Gerne, hier ist der angepasste Code, der die von dir gewünschte Funktionalität bereitstellt:

Der angepasste Code gibt die Eingabe-Zahl selbst zurück, wenn weder die Bedingung für „Fizz“ noch die Bedingung für „Buzz“ erfüllt ist. Hier ist ein Beispiel für einen Testfall mit parametrisierbaren Testdaten:

Dieser Testfall wird für die angegebenen Werte von num ausgeführt und überprüft, ob die FizzBuzz-Methode die richtige Ausgabe liefert. Hier ist ein Beispiel für einen negativen Testfall:

Dieser Testfall überprüft, ob eine IllegalArgumentException geworfen wird, wenn eine negative Zahl übergeben wird. Du könntest die FizzBuzz-Methode entsprechend anpassen, um diese Exception zu werfen, z. B. so: –>

Ich hoffe, dass diese Beispiele dir weiterhelfen! Lass mich wissen, wenn
du noch weitere Fragen hast.

Florian Fieber: Prima, vielen Dank. Kannst du mir zum Schluss nochmal
die komplette Testsuite ausgeben?

ChatGPT:  Gerne, hier ist die komplette Testsuite, die ich oben vorgestellt habe: Ich hoffe, dass diese Testsuite deinen Anforderungen entspricht! Lass mich wissen, wenn du noch weitere Fragen hast.

Florian Fieber:  Ja, könntest du die ersten drei Testfälle auch noch parametrisieren?

ChatGPT: Gerne! Hier sind die ersten drei Testfälle als parametrisierte Testfälle:

Ich habe einige Beispielwerte für num angegeben, aber du kannst natürlich auch andere Werte verwenden. Die Testfälle werden für jeden Wert von num ausgeführt, der in der @ ValueSource-Annotation angegeben ist. Ich hoffe, dass diese Anpassungen hilfreich sind! Lass mich wissen, wenn du noch weitere Fragen hast.

Florian Fieber: Vielen Dank, du hast mir sehr geholfen.

ChatGPT: Du bist herzlich willkommen! Ich hoffe, dass ich dir weiterhelfen konnte und dass du nun in der Lage bist, deine Testautomatisierung und TDD-Fähigkeiten zu verbessern. Falls du noch weitere Fragen hast, zögere nicht, mich zu fragen. Ich stehe dir gerne zur Verfügung.

Nach den letzten Wochen des Experimentierens bin ich von den Möglichkeiten des Chatbots und den Perspektiven, die sich daraus ergeben, echt beeindruckt und ich habe
einiges gelernt:

  • Ich muss mir der Limitierungen des Chatbots bewusst sein, bspw. hängen die Antworten stark von der Formulierung der Fragen ab, das Hinzufügen oder Weglassen einzelner Adjektive kann eine komplett andere Antwort generieren. In meinen Gesprächen war sich der Chatbot z. B. unschlüssig, ob er eigentlich Software enthält oder nicht.
  • Ich habe es mit einem dynamischen, lernenden KI-System zu tun. Das ist zwar eine Tautologie, trotzdem muss ich selbst erstmal begreifen, dass es nicht nur ein „besseres Google“ ist, sondern der Chatbot sein Verhalten ändert. Erstmals habe ich das bei meiner Frage erlebt, ob agile Teams eigentlich Testmanager brauchen.
  • Ich interagiere ganz anders mit dem System, als ich es gewohnt bin. Anstatt dem System nur einzelne Stichwörter oder Wortfetzen hinzuwerfen, führe ich eine echte Unterhaltung, ich sage „Hallo“, „Tschüss“, „Bitte“ und „Danke“ – warum eigentlich?
  • Ich habe es hier mit einer anderen Form der Wissensbildung zu tun. Während ich mir klassischerweise immer die Quellen anschauen möchte, um eine Aussage bewerten zu können, geht das hier nicht. Die Aussagen des Chatbots lassen sich nicht direkt auf
    eine Quelle zurückführen und ich muss stets aufmerksam bleiben, was die Gültigkeit und Korrektheit von Aussagen betrifft.

Der Chatbot ist aktuell sicher noch (weit?) davon entfernt, perfekt zu sein, er kann mich aber schon jetzt bei verschiedenen Aspekten des Softwaretestens unterstützen. ChatGPT bezeichnet sich ja selbst als Assistent („Ich bin Assistant“) und genau als solcher lässt sich der Chatbot auch gut als Unterstützung einsetzen. Er nimmt mir das selbstständige Denken nicht ab, kann mir aber einen Großteil von Routineaufgaben abnehmen, mit Gerüste für Texte oder Code erstellen oder mit mir ein Pair-Programming/ Pair-Testing-Team bilden. Aktuell basiert ChatGPT auf der Version 3 des Sprachmodells (GPT-3), die kommende
Version GPT-4 wird auf einer über 500-fachen Menge an Parametern trainiert sein und damit die Möglichkeiten sicher nochmals potenzieren.

Bitte melden Sie sich an oder erstellen Sie ein Konto, um diesen Inhalt weiter zu lesen.

Der Herausgeber des SQ Magazins (die iSQI GmbH) verpflichtet sich, Ihre Privatsphäre zu schützen und zu respektieren. Wir verwenden Ihre persönlichen Daten nur zur Verwaltung Ihres Kontos und zur Bereitstellung der von Ihnen angeforderten Produkte und Dienstleistungen. Von Zeit zu Zeit möchten wir Sie über unsere Produkte und Dienstleistungen sowie andere Inhalte, die für Sie von Interesse sein könnten, informieren.
Sie können diese Benachrichtigungen jederzeit abbestellen. Weitere Informationen zum Abbestellen, zu unseren Datenschutzverfahren und dazu, wie wir Ihre Privatsphäre schützen und respektieren, finden Sie in unserer Datenschutzrichtlinie.
Artikel teilen
Redaktion
Redaktion
Die SQ-Magazin Redaktion ist Ihr Ansprechpartner für alle Fragen, Anregungen und Ideen rund um das SQ-Magazin. Kontaktieren Sie uns gern unter redaktion@sq-magazin.de Wir freuen uns auf Ihre Nachricht!
- Advertisement -Certified DevOps Portfolio
Neueste Artikel
Weitere interessante Artikel
- Advertisement -spot_img
[js-disqus]