Generative KI in der Testarbeit

KI im Softwaretest: wo Sprachmodelle beim Testen wirklich helfen

Der Gewinn liegt bei der Fleißarbeit, nicht bei der Entscheidung. Wer die Grenze kennt, spart Stunden, wer sie ignoriert, bekommt Tests, die immer grün sind.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Seit 1997 am Markt Kleine Gruppen Präsenz und Live-Online Zertifizierte Trainer
Worum es geht

Der Zeitgewinn wird an der falschen Stelle gesucht

Die naheliegende Idee lautet: Wenn ein Modell Code schreiben kann, dann kann es auch Tests schreiben, und dann geht die Abdeckung von selbst nach oben. In der Praxis kommt dabei etwas heraus, das aussieht wie eine Testsuite und sich verhält wie eine Bestätigungsmaschine. Das Modell leitet das erwartete Ergebnis nämlich aus dem vorhandenen Code ab, und damit prüft der erzeugte Test, dass der Code tut, was er tut. Ein Fehler in der Fachlogik wird auf diesem Weg mitzementiert statt gefunden.

Der zweite Fehlgriff ist das Vertrauen in erfundene Details. Sprachmodelle erzeugen plausibel klingende Bezeichner: Methodennamen, die es in der Bibliothek nicht gibt, Selektoren für Elemente, die auf der Seite nicht existieren, Feldnamen, die in der Schnittstelle anders heißen. Im Testcode fällt das schnell auf, weil er nicht läuft. In einem Testfallkatalog für manuelle Prüfung fällt es gar nicht auf, weil dort niemand ausführt, sondern liest.

Der dritte Punkt betrifft Daten. Der schnellste Weg zu brauchbaren Testdaten scheint zu sein, echte Daten in ein Modell zu geben und um Varianten zu bitten. Damit verlassen personenbezogene Daten die Umgebung, in der sie verarbeitet werden dürfen, und zwar meistens ohne dass jemand diese Entscheidung bewusst getroffen hätte. Das ist keine technische, sondern eine organisatorische Frage, und sie gehört vor den ersten Versuch.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Schritt für Schritt

Der Ablauf, Schritt für Schritt

Fünf Stationen von der Anforderung bis zum verankerten Arbeitsschritt. Die Reihenfolge ist nicht beliebig: Wer den Kontext erst nach den ersten Ergebnissen zusammenstellt, wirft die ersten Ergebnisse weg.

  1. 1

    Die Aufgaben auswählen und begrenzen

    Setz euch zusammen und geht die Testarbeit einer typischen Woche durch. Markiert die Aufgaben, bei denen das Prüfen eines Ergebnisses deutlich schneller geht als das Erstellen. In den meisten Teams sind das drei bis vier: Testideen aus einer Anforderung ableiten, eine Fehlermeldung sauber formulieren, ein Fehlerprotokoll zusammenfassen und Testdaten erzeugen. Alles andere lasst ihr zunächst weg.

    Geschafft, wenn: Eine kurze Liste von Aufgaben, für die der Einsatz vereinbart ist, und eine implizite Liste dessen, was nicht dazugehört.

  2. 2

    Den Kontext einmal zusammenstellen

    Legt an einer Stelle ab, was das Modell für diese Aufgaben braucht: das Fachvokabular mit euren Begriffen, die Schnittstellenbeschreibung, die Vorlage für Fehlermeldungen, zwei Beispiele für gute Testfälle aus eurem Projekt. Der Aufwand fällt einmal an und macht den Unterschied zwischen allgemeinen Antworten und Antworten, die zu eurem System passen.

    Geschafft, wenn: Eine Kontextsammlung, die sich in jede Anfrage einhängen lässt, ohne jedes Mal neu gesucht zu werden.

  3. 3

    Testideen erzeugen und dagegenhalten

    Gib die Anforderung samt Abnahmekriterien und lass dir Testideen erzeugen, ausdrücklich mit Randfällen, Negativfällen und Fällen, die die Anforderung offen lässt. Geh die Liste anschließend gegen die Verfahren durch, die du kennst: Sind alle Äquivalenzklassen abgedeckt, sind die Grenzwerte dabei, fehlt eine Zustandsübergang? Der Wert liegt weniger in den erzeugten Fällen als in den Lücken, die beim Vergleich auffallen.

    Geschafft, wenn: Eine Fallliste, die vollständiger ist als beide Quellen für sich, mit selbst gesetzten erwarteten Ergebnissen.

  4. 4

    Testdaten aus der Struktur erzeugen

    Beschreib das Datenmodell, die Formate, die erlaubten Bereiche und die Sonderfälle, die du brauchst, etwa Namen mit Sonderzeichen, sehr lange Werte, Grenzdaten am Monatsende. Lass daraus einen Datensatz erzeugen und prüf ihn gegen das Schema, bevor er in die Testumgebung geht. Produktivdaten bleiben außen vor, auch in gekürzter Form.

    Geschafft, wenn: Ein reproduzierbarer synthetischer Datensatz, der ohne datenschutzrechtliche Rückfragen benutzt werden darf.

  5. 5

    Ergebnisse durch dieselbe Prüfung schicken wie alles andere

    Erzeugter Testcode geht in einen Pull Request, wird ausgeführt und gegengelesen. Erzeugte manuelle Testfälle werden gegen die Anforderung geprüft, bevor sie in die Testfallverwaltung wandern. Eine erzeugte Fehlermeldung wird vom Melder verifiziert, weil sonst die Entwicklung Zeit mit einem Fehler verbringt, den es so nicht gibt.

    Geschafft, wenn: Kein Artefakt im Projekt, das ungeprüft aus einem Modell stammt.

Fünf Fragen vor jedem Einsatz

  1. 01 Geht das Prüfen des Ergebnisses schneller als das Erstellen? Sonst lohnt es sich nicht.
  2. 02 Hat das Modell Anforderung, Schema und Fachvokabular? Ohne Kontext erfindet es Details.
  3. 03 Kommt das erwartete Ergebnis von euch? Ein aus dem Code abgeleitetes Orakel prüft nichts.
  4. 04 Läuft das Ergebnis durch dasselbe Review wie anderer Code? Sonst wandern Fehler ungefiltert durch.
  5. 05 Verlassen personenbezogene Daten dabei ihre Umgebung? Dann ist es keine Werkzeugfrage mehr.
Was du mitnimmst

Die Regeln, mit denen der Einsatz trägt

Sechs Festlegungen, die ihr in einer Sitzung treffen könnt. Sie beantworten, welche Aufgaben ihr abgebt, was ihr an Kontext mitgeben müsst, was niemals ungeprüft übernommen wird und wo die Datenschutzgrenze liegt.

Nach dem Verhältnis von Prüfen zu Erstellen auswählen

Das ist die einzige Regel, die alle Fälle abdeckt. Wenn du in dreißig Sekunden beurteilen kannst, ob das Ergebnis brauchbar ist, und das Erstellen dich zwanzig Minuten gekostet hätte, ist die Aufgabe geeignet. Wenn die Prüfung genauso lange dauert wie die Erstellung, hast du nichts gewonnen und ein zusätzliches Risiko eingekauft.

Kontext mitgeben statt Wissen zu erwarten

Ein Modell kennt eure Anforderung nicht, euer Fachvokabular nicht und eure Schnittstellenbeschreibung nicht. Wenn ihr diese drei Dinge mitgebt, wird das Ergebnis brauchbar. Wenn ihr sie weglasst, bekommt ihr eine allgemeine Antwort mit erfundenen Details. Für wiederkehrende Aufgaben lohnt es sich, den Kontext in einer festen Vorlage abzulegen, statt ihn jedes Mal neu zusammenzusuchen.

Testideen erzeugen, Testorakel selbst setzen

Die Frage, welche Fälle es zu prüfen gibt, lässt sich gut abgeben. Die Frage, welches Ergebnis richtig ist, nicht. Nimm die erzeugten Testideen als Liste von Kandidaten, streich die unpassenden, ergänz die fehlenden und trag das erwartete Ergebnis selbst ein. Genau in dieser Aufteilung liegt der Zeitgewinn, und sie ist auch der Grund, warum ihr die Testverfahren trotzdem beherrschen müsst.

Nichts übernehmen, was nicht ausgeführt oder gegengelesen wurde

Erzeugter Testcode kommt in einen Pull Request und durch dasselbe Review wie jeder andere Code. Erzeugte Testfälle für manuelle Prüfung werden von einer Person gegen die Anforderung gehalten. Erzeugte Fehlermeldungen werden vom Melder geprüft, bevor sie an die Entwicklung gehen. Ohne diese drei Regeln wandert die Fehlerquote des Modells ungefiltert in eure Artefakte.

Testdaten synthetisch erzeugen, nicht echte Daten hineingeben

Formuliert die Struktur, die ihr braucht, also Felder, Formate, Wertebereiche, Verteilungen, Sonderfälle, und lasst das Modell daraus Daten erzeugen. Was nicht hineingehört, sind Auszüge aus dem Produktivbestand. Klärt vorher schriftlich, welches Werkzeug ihr benutzen dürft, wo es die Daten verarbeitet und ob es sie zum Training verwendet.

Den Einsatz an einer Stelle verankern, nicht überall zulassen

Wählt zwei oder drei konkrete Aufgaben, für die der Einsatz vereinbart ist, und schreibt sie in eure Arbeitsanweisung. Ein diffuses Erlaubtsein führt dazu, dass jeder etwas anderes macht und niemand sagen kann, welcher Teil eines Artefakts wie entstanden ist. Bei Fehlermeldungen und Testfällen hilft ein Vermerk, wie sie entstanden sind, mehr als jede Richtlinie.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt

Warum das Testorakel die Grenze ist

Ein Test besteht aus zwei Teilen: der Eingabe und dem erwarteten Ergebnis. Der zweite Teil heißt in der Testlehre Testorakel und ist der Grund, warum Testerzeugung ein hartes Problem bleibt. Ein Sprachmodell kann Eingaben in großer Zahl erzeugen, aber es weiß nicht, was bei eurem Rabattsystem für einen Bestandskunden im dritten Jahr herauskommen soll. Es leitet das erwartete Ergebnis aus dem ab, was es sieht, und das ist meistens euer Code.

Daraus folgt die wichtigste Konsequenz für die Praxis: Erzeugte Tests, die aus dem Code abgeleitet wurden, sind Regressionsschutz und keine Fehlersuche. Sie stellen sicher, dass sich das Verhalten nicht unbemerkt ändert, und das ist ein echter Wert. Sie finden aber keinen Fehler, der schon vorher da war, denn sie halten ihn für das gewünschte Verhalten.

Der Umkehrschluss ist nützlich: Wenn ihr das erwartete Ergebnis aus der Anforderung nehmt und nicht aus dem Code, dann funktioniert die Arbeitsteilung. Das Modell liefert die Fälle, ihr liefert die Erwartung. Und wenn ihr für einen Fall keine Erwartung formulieren könnt, habt ihr einen Befund gefunden, der wertvoller ist als der Test selbst, nämlich eine unklare Anforderung.

Wo der Zeitgewinn tatsächlich anfällt

Der größte und unstrittigste Gewinn liegt bei Fehlermeldungen. Aus einer knappen Notiz, einem Screenshot und einem Protokollauszug wird eine Meldung mit Vorbedingungen, Schritten, erwartetem und beobachtetem Verhalten. Das ist genau die Fleißarbeit, die unter Zeitdruck als Erstes wegfällt und die der Entwicklung anschließend die meiste Zeit kostet. Die Prüfung dauert Sekunden, weil du weißt, was du gesehen hast.

Der zweite Bereich ist das Zusammenfassen. Ein Fehlerprotokoll mit zehntausend Zeilen, ein Bericht über einen fehlgeschlagenen Nachtlauf, eine Änderungsliste zwischen zwei Ständen: Daraus die relevanten Stellen zu ziehen, ist eine Aufgabe, bei der sich das Ergebnis unmittelbar am Original prüfen lässt. Für lange Dokumente lohnt sich ein Aufbau, bei dem das Modell auf eure eigenen Unterlagen zugreift, statt sie in die Anfrage zu kopieren.

Der dritte Bereich ist die Übersetzung zwischen Sprachwelten. Aus einer fachlichen Beschreibung eine Liste prüfbarer Abnahmekriterien machen, aus einem Testfall eine Beschreibung, die der Fachbereich versteht, aus einem Verhaltensmuster eine Formulierung in der Sprache eures Testrahmens. Diese Aufgaben sind gut definiert, das Ergebnis ist leicht zu beurteilen, und der Zeitgewinn ist über die Woche gerechnet erheblich.

Der vierte Bereich ist die Durchsicht bestehender Tests. Eine Suite auf Doppelungen prüfen, benannte Muster in der Struktur vorschlagen, unklare Testnamen umformulieren: Das sind Aufgaben, die niemand macht, weil sie sich nie lohnen, und die durch die Unterstützung erstmals in ein Zeitbudget passen.

Was ihr niemals ungeprüft übernehmt

Keine Zusicherung, die ihr nicht selbst begründen könnt. Ein erzeugter Test mit einem erwarteten Wert, den niemand nachgerechnet hat, ist schlimmer als kein Test, weil er Sicherheit vortäuscht. Wenn du im Review nicht sagen kannst, warum an dieser Stelle genau dieser Wert stehen muss, gehört die Zeile nicht in die Suite.

Keinen Bezeichner, der nicht existiert. Modelle erzeugen Methodennamen, Selektoren, Feldnamen und Konfigurationsschlüssel, die plausibel klingen und in eurem System nicht vorkommen. Im ausführbaren Code fällt das beim ersten Lauf auf. In einem Testfallkatalog, in einer Dokumentation oder in einer Fehlermeldung fällt es niemandem auf, bis jemand danach sucht.

Und keine Aussage über Abdeckung. Wenn ein Modell schreibt, dass eine Liste von Testfällen die Anforderung vollständig abdeckt, ist das eine Formulierung und keine Analyse. Vollständigkeit lässt sich nur gegen ein Modell der Anforderung prüfen, und dieses Modell müsst ihr aufstellen. Genau dafür gibt es die Verfahren des Testentwurfs, und genau deshalb ersetzt keine Unterstützung durch KI die Grundausbildung im Test.

Testdaten, Datenschutz und die Frage nach dem Werkzeug

Der attraktivste Anwendungsfall ist zugleich der heikelste. Realistische Testdaten sind in vielen Projekten der Engpass, und ein Modell erzeugt sie in Sekunden. Der Fehler entsteht dort, wo jemand einen Auszug aus dem Produktivbestand als Vorlage mitschickt. Damit werden personenbezogene Daten an einen Verarbeiter übermittelt, und ob das zulässig ist, hängt vom Vertrag, vom Verarbeitungsort und vom Zweck ab, nicht vom guten Willen.

Der saubere Weg ist die Beschreibung statt der Vorlage. Ihr formuliert die Struktur, die Formate, die Wertebereiche und die Sonderfälle, die euch wichtig sind, und lasst daraus Daten erzeugen. Das Ergebnis ist meistens sogar besser als ein anonymisierter Auszug, weil ihr die Randfälle gezielt anfordern könnt, statt zu hoffen, dass sie im Bestand vorkommen.

Zur Werkzeugfrage gehört eine schriftliche Festlegung, welches Angebot benutzt werden darf, wo es verarbeitet, ob Eingaben zum Training verwendet werden und ob es eine Betriebsvereinbarung braucht. Diese Klärung ist unbequem und einmalig. Ohne sie entsteht Schatten-IT, und die ist im Test besonders unangenehm, weil dort Daten aus allen Fachbereichen zusammenlaufen.

Zwei Themen, die regelmäßig verwechselt werden

Das eine ist der Einsatz generativer KI als Werkzeug in der eigenen Testarbeit, also alles, was auf dieser Seite steht. Das andere ist das Testen von Systemen, die selbst KI enthalten, und das ist eine ganz andere Aufgabe. Dort geht es um nicht deterministische Ausgaben, um die Bewertung von Modellgüte, um Verzerrungen in Trainingsdaten und um die Frage, wie man ein System abnimmt, das auf dieselbe Eingabe nicht immer dieselbe Antwort gibt.

Das ISTQB führt für beide Themen eigene Module. Für den Einsatz generativer KI in der Testarbeit gibt es Testing with Generative AI, das auf dem Foundation Level aufsetzt und Prompt-Techniken, Risiken wie Halluzination und Verzerrung sowie den Aufbau mit Zugriff auf eigene Unterlagen behandelt. Für das Prüfen von Systemen mit KI-Anteil gibt es ein separates Modul zum Testen von KI-Systemen. Wer das falsche bucht, ist danach für die andere Aufgabe nicht besser aufgestellt.

Für die Einordnung im Team hilft eine einfache Frage: Steht KI in eurem Produkt oder in eurem Werkzeugkasten? Wenn beides zutrifft, braucht ihr beides, aber nicht in derselben Person und nicht zur selben Zeit. Fangt mit dem an, was näher an eurem aktuellen Engpass liegt.

Dazu passende Kurse

Weil der Nutzen an der Beurteilungsfähigkeit hängt und nicht am Werkzeug, gehören Kurse zu KI-Werkzeugen in der Testarbeit in dieselbe Planung wie die Grundausbildung im Test.

Wenn der Zugriff auf eigene Unterlagen dazukommen soll, wird aus der Werkzeugfrage eine Entwicklungsaufgabe, und dafür gibt es KI-Kurse für Entwicklungsteams .

Wissen prüfen

Wie sicher bist du beim Thema wirklich?

Lesen fühlt sich schnell nach Können an. Ein kurzer Test zeigt dir, was davon schon sitzt und wo sich ein Kurs lohnt. Kostenlos, ohne Anmeldung, mit einer Erklärung zu jeder Antwort.

Sehr umfangreicher Überblick über Zusammenhänge und Anwendungsbereiche. Sehr zu empfehlen.
Einführung in die Programmierung für Programmiereinsteiger
Effektives, gemeinsames Erarbeiten der Aufgaben mit vielen praktischen Tipps.
Groovy Grundkurs
Sehr guter Trainer und gute Aufbereitung der Inhalte und auch eingehen auf Fragen der Beteiligten.
Unreal Engine Kurs für Einsteiger

Häufige Fragen

Kann ein Modell unsere Testabdeckung erhöhen?
Die Zahl ja, die Sicherheit nur bedingt. Aus dem Code abgeleitete Tests durchlaufen zuverlässig mehr Zeilen und erzeugen damit eine höhere Abdeckungsquote. Sie prüfen aber, dass der Code tut, was er tut, und finden deshalb keinen bestehenden Fehler. Wenn ihr echte Absicherung wollt, muss das erwartete Ergebnis aus der Anforderung kommen, und dann wird die Erhöhung langsamer, aber sie ist etwas wert.
Dürfen wir unseren Quellcode in ein Sprachmodell geben?
Das ist keine technische, sondern eine vertragliche Frage, und sie gehört vor den ersten Versuch geklärt. Zu klären ist, welches Angebot ihr benutzen dürft, wo verarbeitet wird, ob Eingaben zum Training verwendet werden und ob euer Code Rechte Dritter enthält. Viele Unternehmen lösen das über eine Unternehmensvariante mit entsprechendem Vertrag. Ohne Klärung entsteht Schatten-IT, und die Antwort lautet dann faktisch ja, nur ohne Kontrolle.
Ersetzt das die ISTQB-Ausbildung?
Im Gegenteil, es setzt sie voraus. Der Nutzen entsteht dort, wo du das Ergebnis schnell beurteilen kannst, und beurteilen kann nur, wer die Verfahren kennt. Wer nicht weiß, was eine Äquivalenzklasse ist, erkennt nicht, dass in einer erzeugten Fallliste eine ganze Klasse fehlt. Das ISTQB-Modul zu generativer KI im Test setzt deshalb ausdrücklich den Foundation Level voraus.
Wie gehen wir mit erzeugtem Testcode im Review um?
Genau wie mit jedem anderen Code, mit einer Ergänzung: Prüft ausdrücklich die Zusicherungen, nicht nur die Struktur. Erzeugter Testcode sieht in der Regel gut aus, ist sauber benannt und gut gegliedert, und genau das verführt dazu, ihn zu überfliegen. Die Frage im Review lautet nicht, ob der Test lesbar ist, sondern warum er genau diesen Wert erwartet. Ein Test ohne beantwortbare Antwort darauf kommt nicht durch.
Lohnt sich ein eigener Aufbau mit Zugriff auf unsere Unterlagen?
Sobald ihr regelmäßig gegen eigene Anforderungen, Fachkonzepte oder Schnittstellenbeschreibungen arbeitet, ja. Ein Aufbau, der die passenden Stellen aus euren Dokumenten heraussucht und mitgibt, liefert deutlich brauchbarere Ergebnisse als das Einfügen von Textauszügen von Hand, und er löst nebenbei das Problem, dass niemand mehr weiß, welche Fassung eines Dokuments gerade gilt. Für einzelne Aufgaben im Monat lohnt der Aufwand nicht.
Persönlich für dich da

Deine Ansprechpartner

Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Hilft dir, aus dem Programmierung-Programm den passenden Kurs für deinen Stand zu finden.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant mit dir Inhouse-Trainings, die auf eure Abläufe und euren Datenbestand zugeschnitten sind.

Den Einsatz an echten Testaufgaben durchspielen

Bei cmt gibt es dafür zwei Wege: den zertifizierenden Kurs entlang des ISTQB-Lehrplans zu generativer KI im Test und einen zweitägigen Kurs, in dem an konkreten Aufgaben gearbeitet wird, von Testideen über Fehleranalyse bis zur Auswertung großer Dokumente.