AI-जनरेटेड टेस्ट का ऑडिट करें: ग्रीन CI का आधा हिस्सा कुछ भी साबित नहीं करता

एक पास होने वाला टेस्ट सबूत जैसा लगता है। लेकिन यह आमतौर पर आपकी सोच से कहीं कम होता है।

एक टेस्ट यह दावा करता है कि कोड वही करता है जिसकी टेस्ट अपेक्षा करता है। यदि एक ही लेखक कोड और अपेक्षा (expectation) दोनों लिखता है, तो अपेक्षा कोड के अनुसार ही ढल जाती है। टेस्ट इसलिए पास हो जाता है क्योंकि उसे पास होने के लिए ही लिखा गया था।

एक ग्रीन टिक मार्क यह साबित करता है कि आपके टेस्ट कोड से सहमत हैं। यह यह साबित नहीं करता कि कोड सही है।

यह समस्या तब और बढ़ जाती है जब AI एजेंट्स पूरे के पूरे pull requests भेजते हैं। वे इम्प्लीमेंटेशन और टेस्ट दोनों एक साथ लिख देते हैं। लेखक बदलने से टिक मार्क की विश्वसनीयता नहीं बढ़ती।

मैंने इस कमी को खोजने के लिए mirror_audit.py बनाया है। यह AST का उपयोग करके टेस्ट सोर्स को पढ़ता है। यह कोड को कभी रन नहीं करता है। यह तीन सामान्य पैटर्न की तलाश करता है:

  • द रीकंप्यूट (The Recompute): टेस्ट कोड के समान ही फॉर्मूला का उपयोग करता है। यह केवल एक भेष बदलकर लिखा गया f(x) == f(x) है।
  • द गोल्डन लिटरल (The Golden Literal): टेस्ट पिछले रन से कॉपी किए गए किसी नंबर का उपयोग करता है। यह टेस्ट को उसी चीज़ से बांध देता है जो कोड ने पहले दिन किया था, जिसमें बग्स भी शामिल हो सकते हैं।
  • द स्मोक टेस्ट (The Smoke Test): टेस्ट केवल यह चेक करता है कि परिणाम None नहीं है, लेकिन इसमें वास्तविक एसर्शन (assertion) की कमी होती है।

मैंने इसे दो सूट्स (suites) पर चलाया।

पहला सूट इम्प्लीमेंटेशन को मिरर करने के लिए डिज़ाइन किया गया था। इसका मिरर-रेशियो (mirror-ratio) 50.0% रहा। CI फेल हो गया। आधे टेस्ट में कोई स्वतंत्र संकेत (independent signal) नहीं था।

दूसरा सूट ईमानदार था। इसमें नेगेटिव केसेस और स्वतंत्र अपेक्षाओं का उपयोग किया गया था। इसका स्कोर 0.0% रहा। CI पास हो गया।

मिरर-रेशियो आपकी बग दर (bug rate) को नहीं मापता है। यह गायब स्वतंत्र संकेत को मापता है। यह आपको बताता है कि आपका ग्रीन CI कितना हिस्सा केवल कोड के साथ सहमति जताने वाला (nodding along) है।

यदि कोई टेस्ट इम्प्लीमेंटेशन की तरह ही वही गलत परिणाम निकालता है, तो टेस्ट ग्रीन ही रहता है। यदि कोई टेस्ट वास्तविक कॉन्ट्रैक्ट (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