Audit AI-gegenereerde tests: de helft van een groene CI bewijst niets
Een geslaagde test voelt als bewijs. Meestal is het minder dan je denkt.
Een test stelt dat code doet wat de test verwacht. Als dezelfde auteur zowel de code als de verwachting schrijft, wordt de verwachting gevormd door de code. De test slaagt omdat hij zo is geschreven dat hij slaagt.
Een groen vinkje bewijst dat je tests overeenkomen met de code. Het bewijst niet dat de code correct is.
Dit probleem wordt groter wanneer AI-agents volledige pull requests indienen. Ze schrijven de implementatie en de tests in één keer. Het vinkje wordt niet betrouwbaarder wanneer de auteur verandert.
Ik heb mirror_audit.py gebouwd om dit gat te vinden. Het leest de broncode van de test met behulp van AST. Het voert de code nooit uit. Het zoekt naar drie veelvoorkomende patronen:
- De herberekening: De test gebruikt dezelfde formule als de code. Het is
f(x) == f(x)in een vermomming. - De Golden Literal: De test gebruikt een getal dat is gekopieerd van een eerdere run. Het legt de test vast aan wat de code op dag één deed, inclusief bugs.
- De Smoke Test: De test controleert of een resultaat niet
Noneis, maar mist een echte assertie.
Ik heb dit getest op twee suites.
De eerste suite was ontworpen om de implementatie te spiegelen. Deze behaalde een mirror-ratio van 50,0%. De CI faalde. De helft van de tests leverde geen onafhankelijk signaal.
De tweede suite was eerlijk. Deze gebruikte negatieve gevallen en onafhankelijke verwachtingen. Deze behaalde 0,0%. De CI slaagde.
De mirror-ratio meet niet je foutpercentage. Het meet het ontbreken van een onafhankelijk signaal. Het vertelt je hoeveel van je groene CI slechts de suite is die instemmend knikt met de code.
Als een test hetzelfde foutieve resultaat berekent als de implementatie, blijft de test groen. Als een test een echt contract afdwingt, wordt de test rood en wordt de bug ontdekt.
Stop met alleen naar coverage kijken. Vraag jezelf af of je tests daadwerkelijk om een echte reden zouden kunnen falen.
Source: https://dev.to/alex_spinov/audit-ai-generated-tests-half-of-green-ci-proves-nothing-4bmb
Optional learning community: https://t.me/GyaanSetuAi
