KI für die Testgenerierung: Wo sie hilft und wo sie täuscht
KI schreibt Tests schnell. Sie schreibt jedoch auch Tests, die echt aussehen, aber die falschen Dinge verifizieren. Die Testabdeckung mag steigen, aber Ihr Code bleibt fehlerhaft.
KI ist für bestimmte Aufgaben hervorragend geeignet. Nutzen Sie sie für:
- Extrapolation aus einem guten Beispiel. Wenn Sie einen perfekten Test schreiben, kann die KI zehn weitere in genau Ihrem Stil verfassen.
- Repetitive Tipparbeit erledigen. Nutzen Sie sie für Setup-Blöcke, Teardown und Factory-Helper.
- Erstellung eines initialen Gerüsts (Scaffolding). Das bringt Sie schneller zum Editor als eine leere Datei.
Die Gefahr beginnt, wenn Sie die KI entscheiden lassen, was der „Vertrag“ (Contract) ist.
Wenn Sie der KI eine Funktion geben und nach Tests fragen, liest sie den Code und testet das, was der Code aktuell tut. Sie testet nicht das, was der Code tun sollte. Dies erzeugt eine geschlossene Schleife. Die KI trifft eine Annahme, schreibt den Code und verfasst dann Tests, die genau dieser Annahme entsprechen.
Wenn Bugs in der Produktion auftreten, dann deshalb, weil die Testsuite auf der Seite des Bugs stand.
Achten Sie auf diese drei Fallen:
An der Implementierung orientierte Tests Die KI testet oft die Logikpfade anstatt der Geschäftsregeln. Wenn Sie ein kleines internes Detail ändern, schlagen die Tests fehl, selbst wenn das Ergebnis weiterhin korrekt ist. Das macht Refactoring zu einem Albtraum.
Oberflächliche Grenzfälle (Edge Cases) Die KI ist gut darin, Nullwerte, leere Strings und Nullen zu testen. Das ist offensichtlich. Sie kann keine „Domänen-Grenzfälle“ finden. Sie kennt weder Ihre spezifischen Zeitzonen-Bugs noch Ihre Datenbank-Eigenheiten oder Ihre einzigartigen Geschäftsregeln.
Instabile Mocks Die KI liebt es, alles zu mocken. Dies führt zu zwei Problemen:
- Der Mock ist falsch. Er ahmt eine gefälschte Version einer API nach, die nicht der Realität entspricht.
- Der Mock friert die Implementierung ein. Er testet, wie Ihr Code andere Funktionen aufruft, anstatt das Endergebnis zu prüfen.
So nutzen Sie KI korrekt:
Halten Sie die „Absicht“ (Intent) außerhalb der Reichweite der KI.
- Schreiben Sie zuerst den Vertrag. Schreiben Sie für jeden Test einen Satz in einfachem Englisch. Beispiel: „Expired codes must return the original amount.“
- Geben Sie diese Sätze an die KI weiter. Lassen Sie sie die Assertions schreiben, aber Sie geben die Bedeutung vor.
- Mocken Sie an den Grenzen. Mocken Sie nur externe APIs oder Datenbanken. Verwenden Sie echte Versionen Ihrer eigenen internen Module.
- Schreiben Sie einen Domänen-Grenzfall von Hand. Jedes Mal, wenn Sie eine Funktion fertiggestellt haben, notieren Sie die eine Sache, die Ihnen Sorgen bereitet. Nutzen Sie dies als Prompt für die KI.
KI ist ein Produktivitätswerkzeug, kein Ersatz für das Denken. Nutzen Sie sie, um den Körper des Tests zu schreiben, aber lassen Sie sie niemals entscheiden, wofür der Test eigentlich da ist.
Source: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm
Optional learning community: https://t.me/GyaanSetuAi
