Audit dei test generati dall'IA: metà di una CI verde non prova nulla
Un test superato sembra una prova. In realtà, di solito è molto meno di quanto si pensi.
Un test afferma che il codice faccia ciò che il test si aspetta. Se lo stesso autore scrive sia il codice che l'aspettativa, l'aspettativa sarà influenzata dal codice stesso. Il test passa perché è stato scritto per passare.
Una spunta verde dimostra che i tuoi test sono in accordo con il codice. Non dimostra che il codice sia corretto.
Questo problema aumenta quando gli agenti IA inviano intere pull request. Scrivono l'implementazione e i test in un colpo solo. La spunta non diventa più affidabile quando cambia l'autore.
Ho creato mirror_audit.py per colmare questa lacuna. Legge il codice sorgente dei test utilizzando AST. Non esegue mai il codice. Cerca tre pattern comuni:
- Il ricalcolo: Il test utilizza la stessa formula del codice. È un
f(x) == f(x)travestito. - Il letterale d'oro: Il test utilizza un numero copiato da un'esecuzione precedente. Vincola il test a qualunque cosa il codice abbia fatto il primo giorno, inclusi i bug.
- Lo smoke test: Il test controlla se un risultato non è
None, ma manca di una vera asserzione.
Ho testato questo approccio su due suite.
La prima suite era progettata per rispecchiare l'implementazione. Ha ottenuto un mirror-ratio del 50,0%. La CI è fallita. Metà dei test non forniva alcun segnale indipendente.
La seconda suite era onesta. Utilizzava casi negativi e aspettative indipendenti. Ha ottenuto lo 0,0%. La CI è passata.
Il mirror-ratio non misura il tasso di bug. Misura la mancanza di segnali indipendenti. Ti dice quanto della tua CI verde sia solo la suite che annuisce in sintonia con il codice.
Se un test calcola lo stesso risultato errato dell'implementazione, il test rimane verde. Se un test afferma un vero contratto, il test diventa rosso e intercetta il bug.
Smetti di guardare solo la copertura. Chiediti se i tuoi test potrebbero effettivamente fallire per un motivo reale.
Source: https://dev.to/alex_spinov/audit-ai-generated-tests-half-of-green-ci-proves-nothing-4bmb
Optional learning community: https://t.me/GyaanSetuAi
