The Quality of Claude AI-authored Python Tests Is Not Weaker Than Human-authored Tests
यह अध्ययन प्रदर्शित करता है कि हाल के क्लॉड एआई (Claude AI) मॉडलों द्वारा जनरेट किए गए पायथन टेस्ट, वास्तविक टूल आउटपुट्स, विभिन्न फॉल्ट-इंजेक्शन प्रोटोकॉल के तहत व्यक्तिगत टेस्ट स्कोरिंग और एक गुणात्मक डिजाइन रूब्रिक का उपयोग करते हुए किए गए कठोर मूल्यांकन के आधार पर, Django और Pandas जैसे स्थापित ओपन-सोर्स प्रोजेक्ट्स के मानव-लिखित टेस्ट के गैर-निम्न (non-inferior) हैं।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
सॉफ्टवेयर टेस्टिंग डिजिटल दुनिया का एक शांत संरक्षक है। किसी फोन ऐप या बैंकिंग वेबसाइट की कोई नई विशेषता उपयोगकर्ता तक पहुँचने से पहले, उसे गलतियों को पकड़ने के लिए डिज़ाइन किए गए जाँचों के एक कठिन दौर (गांटलेट) से गुजरना पड़ता है। ये जाँच, जिन्हें टेस्ट कहा जाता है, कंप्यूटर द्वारा स्वयं से पूछे जाने वाले प्रश्नों की एक श्रृंखला की तरह हैं: "यदि मैं इस बटन को दबाता हूँ, तो क्या स्क्रीन वैसे ही बदलती है जैसा उसे बदलना चाहिए?" "यदि मैं गलत पासवर्ड डालता हूँ, तो क्या सिस्टम मुझे बाहर कर देता है?" दशकों से, ये प्रश्न मानव इंजीनियरों द्वारा लिखे जाते रहे हैं। लेकिन जैसे-जैसे आर्टिफिशियल इंटेलिजेंस (AI) कोड लिखने में अधिक सक्षम हुआ है, एक नया प्रश्न उभरा है: क्या ये मशीनें अपने ही काम की जाँच करने के लिए प्रश्न भी लिख सकती हैं? यदि कोई AI एक प्रोग्राम लिखता है, तो क्या वह उस सुरक्षा जाल (सेफ्टी नेट) को भी लिख सकता है जो यह सुनिश्चित करे कि वह प्रोग्राम बाद में खराब न हो जाए? यह केवल एक तकनीकी जिज्ञासा नहीं है; यह एक व्यावहारिक आवश्यकता है। यदि हम AI की मदद से जटिल प्रणालियाँ बनाना चाहते हैं, तो हमें यह जानना होगा कि क्या AI द्वारा बनाए गए सुरक्षा जाल उन गलतियों को पकड़ने के लिए पर्याप्त मजबूत हैं जो वह खुद कर सकता है।
ट्रिनिटी कॉलेज डबलिन के एक शोधकर्ता ने AI द्वारा लिखे गए टेस्ट्स को मानव-लिखित टेस्ट्स के साथ आमने-सामने रखकर इस प्रश्न का उत्तर देने का प्रयास किया। उन्होंने पायथन (Python) पर ध्यान केंद्रित किया, जो डेटा और वेब अनुप्रयोगों के लिए एक लोकप्रिय भाषा है, और एक विशिष्ट उन्नत AI मॉडल परिवार द्वारा लिखे गए टेस्ट्स की तुलना दो विशाल, प्रसिद्ध सॉफ्टवेयर प्रोजेक्ट्स—जेंगो (Django), जो वेबसाइट बनाने के लिए एक फ्रेमवर्क है, और पांडास (Pandas), जो डेटा का विश्लेषण करने का एक टूल है—के लिए मानव द्वारा लिखे गए टेस्ट्स से की। शोधकर्ता ने AI को शून्य में कोड के एक अलग टुकड़े के लिए टेस्ट लिखने के लिए नहीं कहा, जैसा कि अधिकांश पिछले अध्ययनों में किया गया था। इसके बजाय, उन्होंने एक वास्तविक दुनिया के परिदृश्य को देखा जहाँ एक AI ने कई हफ्तों में शुरू से एक पूरा टूल बनाया। इस परिदृश्य में, AI ने खुद तय किया कि उसे कब टेस्ट लिखना है, बिना यह कहे कि उसे ऐसा करना चाहिए, ठीक वैसे ही जैसे एक मानव इंजीनियर करता है। फिर शोधकर्ता ने इन हजारों टेस्ट्स को यह देखने के लिए कठोर जांच के दौर से गुजारा कि वे कैसा प्रदर्शन करते हैं।
पहला तरीका जिसका शोधकर्ता ने उपयोग किया, वह समय यात्रा (टाइम ट्रैवल) का एक रूप था। उन्होंने एक ऐसा टेस्ट लिया जो एक विशिष्ट बग को ठीक करने के लिए लिखा गया था और फिर घड़ी को पीछे घुमा दिया, उस सुधार (फिक्स) को हटा दिया जिसे टेस्ट को पकड़ना था। यदि टेस्ट अच्छा था, तो उसे तुरंत विफल हो जाना चाहिए क्योंकि बग वापस आ गया था। यदि टेस्ट कमजोर था, तो वह पास होता रहता, यह पहचानने में विफल रहता कि कोड में गिरावट आई है। इस जाँच में, AI-लिखित टेस्ट्स उल्लेखनीय रूप से अच्छा प्रदर्शन करते रहे। उन्होंने वास्तविक दुनिया के बग्स को लगभग उतनी ही बार पकड़ा जितने मानव-लिखित टेस्ट्स ने पकड़े। वास्तव में, शोधकर्ता ने पाया कि कोई सांख्यिकीय प्रमाण नहीं था कि AI टेस्ट कमजोर थे। वे कोड के गलत होने पर उसे पकड़ने में उतने ही प्रभावी थे।
गहराई से समझने के लिए, शोधकर्ता ने म्यूटेशन टेस्टिंग (mutation testing) नामक तकनीक का उपयोग किया। कल्पना कीजिए कि आप कोड के एक टुकड़े को लेते हैं और उसमें जानबूझकर छोटे, कृत्रिम दोष (एरर) डाल देते हैं, जैसे कि प्लस साइन को माइनस साइन में बदलना या एक नंबर को बदलना। एक अच्छा टेस्ट इन बदलावों को नोटिस करना चाहिए और विफल होना चाहिए। शोधकर्ता ने कोड में सैकड़ों ऐसे कृत्रिम दोष पेश किए और देखा कि क्या टेस्ट उन्हें पकड़ पाते हैं। उन्होंने इसे दो तरीकों से किया: पहले, केवल उन विशिष्ट लाइनों को बदलकर जो मूल अपडेट में बदली गई थीं, और दूसरे, कोड के किसी भी हिस्से को बदलकर जिसे टेस्ट वास्तव में छूता है। दोनों मामलों में, AI-लिखित टेस्ट्स ने त्रुटियों को पकड़ने की दर में मानव-लिखित टेस्ट्स के समान ही प्रदर्शन किया। AI टेस्ट उन सूक्ष्म गलतियों को नहीं चूक रहे थे जिन्हें मानव टेस्ट पकड़ लेते थे।
शोधकर्ता ने केवल यह नहीं देखा कि टेस्ट पास होते हैं या फेल, बल्कि उन्होंने टेस्ट के डिज़ाइन को भी देखा। उन्होंने स्पष्टता, क्या टेस्ट सही चीज़ की जाँच कर रहा है, और क्या यह बहुत जटिल है, जैसी चीजों का मूल्यांकन करने के लिए एक विस्तृत चेकलिस्ट का उपयोग किया। उन्होंने पाया कि हालांकि AI टेस्ट पूर्ण नहीं थे, लेकिन गंभीर खामियों की संख्या बहुत कम और मानव-लिखित टेस्ट्स के बराबर थी। अधिकांश टेस्ट, चाहे वे मशीन द्वारा लिखे गए हों या व्यक्ति द्वारा, अच्छी तरह से संरचित थे और अपना काम कर रहे थे। जो कुछ कमियां मौजूद थीं, वे अक्सर मामूली मुद्दे थे, जैसे कि एक टेस्ट जो थोड़ा बहुत व्यापक था या एक कमेंट जो कोड से पूरी तरह मेल नहीं खाता था। महत्वपूर्ण रूप से, शोधकर्ता ने पाया कि AI टेस्ट उस विशिष्ट प्रकार की विफलता के प्रति संवेदनशील नहीं थे जहाँ वे कोड टूटने के बावजूद पास हो जाते थे, जो कि पिछले छोटे अध्ययनों में रिपोर्ट की गई एक समस्या थी।
अध्ययन ने अन्य बड़े सॉफ्टवेयर प्रोजेक्ट्स को भी देखा जहाँ AI ने टेस्ट लिखने में मदद की थी, जिसमें एक कंटेनर रजिस्ट्री और एक ऑटोमेशन टूल शामिल थे। यहाँ भी, इन अधिक जटिल वातावरणों में, जहाँ AI की भूमिका शुरू से बनाए गए टूल की तुलना में कम स्पष्ट थी, टेस्ट टिके रहे। वे उसी प्रोजेक्ट में मानव-लिखित टेस्ट्स की तरह ही त्रुटियों को पकड़ने में अच्छे थे। शोधकर्ता ने नोट किया कि यह उच्च गुणवत्ता इस बात पर निर्भर करती थी कि AI का कौन सा संस्करण उपयोग किया जा रहा है। पुराने मॉडलों ने अधिक खामियों वाले टेस्ट बनाए, लेकिन नए, अधिक उन्नत मॉडल्स ने मानव विशेषज्ञों के स्तर का काम किया।
यह कार्य इस सुझाव को पुख्ता करता है कि AI-जनित कोड के असुरक्षित होने का डर, क्योंकि इसमें उचित टेस्टिंग की कमी है, निराधार हो सकता है। यहाँ मूल्यांकित किए गए AI मॉडल्स ने केवल कोड ही नहीं बनाया; उन्होंने उस कोड को सत्यापित करने के लिए आवश्यक सुरक्षा जाँच भी बनाई। वे यह पहचानने में सक्षम थे कि क्या टेस्ट किया जाना चाहिए और उन्होंने स्वयं टेस्ट लिखे, अक्सर बिना किसी स्पष्ट निर्देश के। परिणाम संकेत देते हैं कि जैसे-जैसे आर्टिफिशियल इंटेलिजेंस विकसित हो रहा है, यह न केवल सॉफ्टवेयर बनाने बल्कि अपनी विश्वसनीयता सुनिश्चित करने में भी सक्षम हो रहा है। इन मशीनों द्वारा बनाए गए सुरक्षा जाल मानवों द्वारा बनाए गए जाल से कमजोर नहीं हैं; कई मायनों में, वे उतने ही मजबूत हैं। इसका मतलब यह नहीं है कि मानवीय निरीक्षण की अब आवश्यकता नहीं है, लेकिन यह यह भी सुझाव देता है कि सुरक्षित, विश्वसनीय सॉफ्टवेयर बनाने के उपकरण अब उन मशीनों को भी शामिल करने के लिए विस्तारित हो रहे हैं जो अपना स्वयं का गुणवत्ता नियंत्रण (क्वालिटी कंट्रोल) लिख सकती हैं।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।