KI-generierte Tests auditieren: Ein grünes CI beweist oft gar nichts
Ein bestandener Test fühlt sich wie ein Beweis an. Meistens ist er jedoch weniger wert, als man denkt.
Ein Test behauptet, dass der Code das tut, was der Test erwartet. Wenn derselbe Autor sowohl den Code als auch die Erwartung schreibt, wird die Erwartung durch den Code geprägt. Der Test besteht, weil er so geschrieben wurde, dass er besteht.
Ein grünes Häkchen beweist nur, dass Ihre Tests mit dem Code übereinstimmen. Es beweist nicht, dass der Code korrekt ist.
Dieses Problem verschärft sich, wenn KI-Agenten ganze Pull Requests liefern. Sie schreiben die Implementierung und die Tests in einem Rutsch. Das Häkchen wird nicht vertrauenswürdiger, nur weil sich der Autor ändert.
Ich habe mirror_audit.py entwickelt, um diese Lücke zu finden. Es liest den Test-Quellcode mittels AST. Es führt den Code niemals aus. Es sucht nach drei gängigen Mustern:
- Das Recompute: Der Test verwendet dieselbe Formel wie der Code. Es ist
f(x) == f(x)in Verkleidung. - Das Golden Literal: Der Test verwendet eine Zahl, die aus einem vorherigen Durchlauf kopiert wurde. Er fixiert den Test auf das, was der Code am ersten Tag getan hat – inklusive Bugs.
- Der Smoke Test: Der Test prüft lediglich, ob ein Ergebnis nicht
Noneist, lässt aber eine echte Assertion vermissen.
Ich habe dies an zwei Test-Suites getestet.
Die erste Suite war darauf ausgelegt, die Implementierung zu spiegeln. Sie erreichte eine Mirror-Ratio von 50,0 %. Die CI schlug fehl. Die Hälfte der Tests lieferte kein unabhängiges Signal.
Die zweite Suite war ehrlich. Sie verwendete Negativfälle und unabhängige Erwartungen. Sie erreichte 0,0 %. Die CI war erfolgreich.
Die Mirror-Ratio misst nicht Ihre Fehlerrate. Sie misst das Fehlen eines unabhängigen Signals. Sie zeigt Ihnen, wie viel Ihres grünen CI lediglich daraus besteht, dass die Test-Suite dem Code einfach nur zustimmt.
Wenn ein Test dasselbe fehlerhafte Ergebnis berechnet wie die Implementierung, bleibt der Test grün. Wenn ein Test einen echten Vertrag (Contract) behauptet, wird der Test rot und findet den Bug.
Hören Sie auf, nur auf die Coverage zu schauen. Fragen Sie sich stattdessen, ob Ihre Tests tatsächlich aus einem echten Grund fehlschlagen könnten.
Source: https://dev.to/alex_spinov/audit-ai-generated-tests-half-of-green-ci-proves-nothing-4bmb
Optional learning community: https://t.me/GyaanSetuAi
