AI-జనరేటెడ్ టెస్ట్లను ఆడిట్ చేయండి: సగం గ్రీన్ CI ఏమీ నిరూపించదు
ఒక టెస్ట్ పాస్ అయినప్పుడు అది ఒక సాక్ష్యంలా అనిపిస్తుంది. కానీ అది మీరు అనుకున్నదానికంటే చాలా తక్కువ.
కోడ్ తాను ఆశించిన విధంగానే పనిచేస్తుందని ఒక టెస్ట్ నిర్ధారిస్తుంది. ఒకవేళ కోడ్ మరియు ఆ అంచనా (expectation) రెండింటినీ ఒకే వ్యక్తి రాస్తే, ఆ అంచనా కోడ్ ద్వారానే ప్రభావితమవుతుంది. టెస్ట్ పాస్ అవ్వడానికి వీలుగానే అది రాయబడింది కాబట్టి అది పాస్ అవుతుంది.
గ్రీన్ చెక్మార్క్ మీ టెస్ట్లు కోడ్తో ఏకీభవిస్తున్నాయని నిరూపిస్తుంది. కానీ కోడ్ సరైనదని అది నిరూపించదు.
AI ఏజెంట్లు పూర్తి pull requestsలను పంపినప్పుడు ఈ సమస్య మరింత పెరుగుతుంది. అవి ఇంప్లిమెంటేషన్ మరియు టెస్ట్లను ఒకేసారి రాస్తాయి. రచయిత మారినంత మాత్రాన ఆ చెక్మార్క్ మరింత నమ్మదగినదిగా మారదు.
ఈ లోపాన్ని గుర్తించడానికి నేను mirror_audit.pyని రూపొందించాను. ఇది AST ఉపయోగించి టెస్ట్ సోర్స్ను చదువుతుంది. ఇది కోడ్ను ఎప్పుడూ రన్ చేయదు. ఇది మూడు సాధారణ పద్ధతులను (patterns) వెతుకుతుంది:
- ది రీకంప్యూట్ (The Recompute): టెస్ట్ కోడ్లో ఉన్న అదే ఫార్ములాను ఉపయోగిస్తుంది. ఇది కేవలం వేషం మార్చిన f(x) == f(x) లాంటిది.
- ది గోల్డెన్ లిటరల్ (The Golden Literal): టెస్ట్ మునుపటి రన్ నుండి కాపీ చేసిన నంబర్ను ఉపయోగిస్తుంది. ఇది మొదటి రోజు కోడ్ చేసిన పనిని (బగ్స్తో సహా) టెస్ట్కు కట్టివేస్తుంది.
- ది స్మోక్ టెస్ట్ (The Smoke Test): ఫలితం 'None' కాదని టెస్ట్ తనిఖీ చేస్తుంది కానీ, అందులో నిజమైన అసర్షన్ (assertion) ఉండదు.
నేను దీనిని రెండు సూట్లపై (suites) పరీక్షించాను.
మొదటి సూట్ ఇంప్లిమెంటేషన్ను ప్రతిబింబించేలా (mirror) రూపొందించబడింది. ఇది 50.0% mirror-ratio స్కోరు సాధించింది. CI ఫెయిల్ అయింది. సగం టెస్ట్లు ఎటువంటి స్వతంత్ర సంకేతాన్ని (independent signal) అందించలేదు.
రెండవ సూట్ నిజాయితీగా ఉంది. ఇది నెగటివ్ కేస్లు మరియు స్వతంత్ర అంచనాలను ఉపయోగించింది. ఇది 0.0% స్కోరు సాధించింది. CI పాస్ అయింది.
mirror-ratio మీ బగ్ రేటును కొలవదు. ఇది లోపించిన స్వతంత్ర సంకేతాన్ని (missing independent signal) కొలుస్తుంది. మీ గ్రీన్ CIలో ఎంత భాగం కేవలం కోడ్తో పాటు తలూపుతూ (nodding along) వెళ్తుందో ఇది మీకు చెబుతుంది.
ఒక టెస్ట్ ఇంప్లిమెంటేషన్ లాగే తప్పుగా ఉన్న ఫలితాన్నే లెక్కిస్తే, ఆ టెస్ట్ గ్రీన్ స్టే అవుతుంది. ఒక టెస్ట్ నిజమైన కాంట్రాక్ట్ను (real contract) నిర్ధారిస్తే, ఆ టెస్ట్ రెడ్ అవుతుంది మరియు బగ్ను పట్టుకుంటుంది.
కేవలం కవరేజీని మాత్రమే చూడటం ఆపండి. మీ టెస్ట్లు నిజమైన కారణం వల్ల విఫలం కావగలవా అని ప్రశ్నించుకోండి.
Source: https://dev.to/alex_spinov/audit-ai-generated-tests-half-of-green-ci-proves-nothing-4bmb
Optional learning community: https://t.me/GyaanSetuAi
