Audit des tests générés par l'IA : la moitié d'un CI au vert ne prouve rien
Un test réussi ressemble à une preuve. C'est généralement moins que ce que l'on pense.
Un test affirme que le code fait ce que le test attend. Si le même auteur écrit à la fois le code et l'attente, l'attente est façonnée par le code. Le test réussit parce qu'il a été écrit pour réussir.
Une coche verte prouve que vos tests sont en accord avec le code. Elle ne prouve pas que le code est correct.
Ce problème s'accentue lorsque des agents d'IA soumettent des pull requests entières. Ils écrivent l'implémentation et les tests en une seule fois. La coche ne devient pas plus fiable lorsque l'auteur change.
J'ai conçu mirror_audit.py pour identifier cet écart. Il lit le code source des tests en utilisant l'AST. Il n'exécute jamais le code. Il recherche trois modèles courants :
- Le recalcul : le test utilise la même formule que le code. C'est du
f(x) == f(x)déguisé. - Le littéral doré : le test utilise un nombre copié d'une exécution précédente. Il fige le test sur ce que le code a produit le premier jour, y compris les bugs.
- Le test de fumée : le test vérifie si un résultat n'est pas
None, mais manque d'une véritable assertion.
J'ai testé cela sur deux suites.
La première suite a été conçue pour refléter l'implémentation. Elle a obtenu un mirror-ratio de 50,0 %. Le CI a échoué. La moitié des tests n'apportait aucun signal indépendant.
La seconde suite était honnête. Elle utilisait des cas négatifs et des attentes indépendantes. Elle a obtenu un score de 0,0 %. Le CI a réussi.
Le mirror-ratio ne mesure pas votre taux de bugs. Il mesure l'absence de signal indépendant. Il vous indique quelle proportion de votre CI au vert n'est qu'une suite qui acquiesce en même temps que le code.
Si un test calcule le même résultat erroné que l'implémentation, le test reste au vert. Si un test affirme un véritable contrat, le test passe au rouge et détecte le bug.
Arrêtez de ne regarder que la couverture. Demandez-vous si vos tests pourraient réellement échouer pour une véritable raison.
Source : https://dev.to/alex_spinov/audit-ai-generated-tests-half-of-green-ci-proves-nothing-4bmb
Communauté d'apprentissage optionnelle : https://t.me/GyaanSetuAi
