A Comprehensive Study on Large Language Models for Mutation Testing
यह शोध पत्र एक व्यापक अनुभवजन्य अध्ययन प्रस्तुत करता है जो यह प्रदर्शित करता है कि जहाँ लार्ज लैंग्वेज मॉडल्स (LLMs) विविध, व्यवहारिक रूप से सटीक म्यूटेंट्स उत्पन्न करने में नियम-आधारित दृष्टिकोणों की तुलना में काफी बेहतर प्रदर्शन करते हुए 111.29% उच्च दोष पहचान दर प्राप्त करते हैं, वहीं वे साथ ही गैर-कंपाइलेबिलिटी (non-compilability), दोहराव और समकक्ष म्यूटेंट दरों के संदर्भ में अधिक लागत भी वहन करते हैं।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक सॉफ्टवेयर इंजीनियर हैं जो कोड के एक जटिल हिस्से में बग्स (गलतियाँ) खोजने की कोशिश कर रहे हैं। यह परीक्षण करने के लिए कि आपका सुरक्षा जाल (आपका टेस्ट सुइट) कितना अच्छा है, आप "फाइंड द फेक" (नकली को ढूँढो) का खेल खेलने का निर्णय लेते हैं। आप जानबूझकर कोड में छोटी, सूक्ष्म गलतियाँ पेश करते हैं ताकि यह देख सकें कि आपके टेस्ट उन्हें पकड़ पाते हैं या नहीं। सॉफ्टवेयर की दुनिया में, इन जानबूझकर की गई गलतियों को म्यूटेंट्स (mutants) कहा जाता है।
वर्षों तक, इंजीनियरों ने इन गलतियों को बनाने के लिए एक "नियम पुस्तिका" का उपयोग किया। यह एक रोबोट की तरह था जो एक सख्त चेकलिस्ट का पालन करता था: "हर प्लस (+) चिह्न को माइनस (-) चिह्न में बदलें," या "इस नंबर को शून्य से बदल दें।" यह तेज़ और विश्वसनीय था, लेकिन इसकी गलतियाँ अक्सर बहुत स्पष्ट होती थीं और वैसी नहीं दिखती थीं जैसी वास्तविक जीवन में होने वाली मानवीय गलतियाँ होती हैं।
हाल ही में, खेल में एक नया खिलाड़ी आया है: लार्ज लैंग्वेज मॉडल्स (LLMs)। इन्हें सुपर-स्मार्ट एआई असिस्टेंट के रूप में सोचें जिन्होंने अब तक लिखा गया लगभग हर कोड पढ़ा है। वे केवल एक नियम पुस्तिका का पालन नहीं करते; वे संदर्भ (context), तर्क (logic) और शैली (style) को समझते हैं। वे कोड को देख सकते हैं और कह सकते हैं, "आह, अगर मैं यहाँ इस वेरिएबल को बदल दूँ, तो यह बिल्कुल वैसा लगेगा जैसा एक थका हुआ डेवलपर गलती कर सकता है।"
यह पेपर एक विशाल "टेस्ट टेस्ट" है यह देखने के लिए कि नकली गलतियाँ बनाने में कौन बेहतर है: पुराने ज़माने के नियम पुस्तिका वाले रोबोट या ये नए एआई असिस्टेंट।
बड़ा प्रयोग
शोधकर्ताओं ने लोकप्रिय जावा सॉफ्टवेयर प्रोजेक्ट्स से 851 वास्तविक दुनिया के बग्स एकत्र किए। ये वास्तविक गलतियाँ थीं जिन्हें वास्तविक डेवलपर्स ने किया था और फिर ठीक किया था। इसके बाद उन्होंने दो समूहों से इन बग्स को फिर से बनाने के लिए कहा:
- द ट्रेडिशनलिस्ट्स (परंपरावादी): पुराने ज़माने के टूल्स (जैसे PIT और Major) जो सख्त नियमों का पालन करते हैं।
- द एआई टीम: विभिन्न लार्ज लैंग्वेज मॉडल्स (जैसे GPT-4o और DeepSeek) का उपयोग करते हुए विभिन्न "प्रॉम्प्ट्स" (निर्देशों) का उपयोग करना। इनमें से एक प्रॉम्प्ट लेखकों द्वारा बनाया गया एक नया डिज़ाइन था, जिसे LLMut कहा जाता है।
उन्होंने यह देखने के लिए 7,00,000 से अधिक नकली गलतियाँ (म्यूटेंट्स) उत्पन्न कीं कि वे वास्तविक बग्स की तुलना में कैसे प्रदर्शन करते हैं।
परिणाम: AI "रियलिज्म" (वास्तविकता) में जीत जाता है
निष्कर्ष स्पष्ट थे, लेकिन एक शर्त के साथ।
1. AI वास्तविक बग्स की नकल करने में बेहतर है
कल्पना कीजिए कि आप एक सुरक्षा गार्ड को चकमा देने की कोशिश कर रहे हैं।
- द ट्रेडिशनलिस्ट्स एक चोर का कार्डबोर्ड कटआउट (गत्ता का पुतला) रखते हैं। यह नकली है, लेकिन यह स्पष्ट रूप से नकली है। गार्ड (टेस्ट सुइट) इसे तुरंत पहचान लेता है, लेकिन यह आपको यह नहीं बताता कि एक असली चोर कैसे घुसपैकर सकता है।
- द एआई एक ऐसा चोर बनाता है जो बिल्कुल असली चोर की तरह दिखता है, चलता है और बात करता है। वह सही कपड़े भी पहनता है।
पेपर में पाया गया कि AI-जनरेटेड म्यूटेंट्स, पारंपरिक टूल्स की तुलना में टेस्ट को चकमा देने में 1.75 गुना बेहतर थे। विशेष रूप से:
- पारंपरिक टूल्स वास्तविक बग्स के लगभग 44% को पकड़ पाए।
- AI टूल्स लगभग 76% को पकड़ पाए।
AI-जनरेटेड म्यूटेंट्स वास्तविक बग्स के "व्यवहार के करीब" (behaviorally closer) थे। उन्होंने कोड को केवल स्पष्ट तरीकों से नहीं तोड़ा; उन्होंने इसे उन्हीं सूक्ष्म और भ्रमित करने वाले तरीकों से तोड़ा जैसे इंसान करते हैं। यह बहुत बड़ी बात है क्योंकि इसका मतलब है कि AI इंजीनियरों को उनके सॉफ्टवेयर के वास्तविक कमजोर स्थानों को खोजने में मदद कर रहा है।
2. AI अधिक रचनात्मक है
पारंपरिक टूल्स ज्यादातर बहुत छोटी, सरल बदलाव करते थे (जैसे एक नंबर को बदलना)। हालाँकि, AI एक रचनात्मक लेखक की तरह था। इसने तर्क और संरचना को पुनर्गठित करके जटिल बदलाव किए, जिन्हें नियम पुस्तिकाओं ने कभी सोचा भी नहीं था। इसने बहुत अधिक विविधता वाले "गलतियों" को पेश किया, जिससे अधिक क्षेत्र कवर हुआ।
पकड़: AI अव्यवस्थित है
हालाँकि AI वास्तविक बग्स बनाने में बेहतर था, लेकिन वह बहुत अव्यवस्थित भी था।
- कंपाइलेशन एरर्स (Compilation Errors): पारंपरिक टूल्स एक परफेक्ट प्रिंटर की तरह थे; लगभग हर कागज़ पढ़ने योग्य आता था। हालाँकि, AI एक निबंध लिखने वाले छात्र की तरह था: यह अक्सर टाइपो (वर्तनी की गलती) करता था या ब्रैकेट बंद करना भूल जाता था, जिसके परिणामस्वरूप ऐसा कोड बनता था जो रन (run) भी नहीं हो सकता था। AI के प्रयासों में से लगभग 32% "नॉन-कंपाइलेबल" (टूटा हुआ कोड) थे, जबकि पारंपरिक टूल्स में यह लगभग 0% था।
- डुप्लिकेट्स (Duplicates): AI कभी-कभी ऊब जाता या भ्रमित हो जाता और बिल्कुल एक ही गलती दोबारा उत्पन्न कर देता, या यहाँ तक कि एक ऐसी गलती बनाता जो मूल कोड जैसा ही दिखता (एक "डुप्लिकेट")। पारंपरिक टूल्स शायद ही कभी ऐसा करते थे।
- लागत (Cost): AI को एक सिंगल म्यूटेंट जेनरेट करने में पारंपरिक टूल्स की तुलना में अधिक समय लगा और अधिक "टोकन्स" (AI कंप्यूटिंग की मुद्रा) का उपयोग किया।
"सर्वाइविंग" (जीवित रहने वाले) म्यूटेंट्स
म्यूटेशन टेस्टिंग का एक मुख्य हिस्सा उन म्यूटेंट्स को देखना है जो सर्वाइव करते हैं (यानी टेस्ट उन्हें पकड़ नहीं पाते)।
- पारंपरिक टूल्स अक्सर ऐसे म्यूटेंट्स बनाते थे जो इतने सूक्ष्म थे कि बच निकले, लेकिन वे अक्सर कोड के उन हिस्सों में होते थे जिनका पहले से ही परीक्षण किया जा रहा था।
- AI टूल्स कोड के अनटेस्टेड (अनपरीक्षित) क्षेत्रों में म्यूटेंट्स बनाने की प्रवृत्ति रखते थे। यह इंजीनियरों के लिए सोने की खान है। यह AI द्वारा कमरे के अंधेरे कोनों की ओर टॉर्च दिखाने जैसा है और कहने जैसा है, "हे, अभी तक कोई इस हिस्से की जाँच नहीं कर रहा है। आपको इसके लिए एक टेस्ट लिखना चाहिए।"
फैसला
पेपर यह निष्कर्ष निकालता है कि LLMs सॉफ़्टवेयर टेस्टिंग के लिए एक शक्तिशाली नया उपकरण हैं। वे पहले से मौजूद किसी भी चीज़ की तुलना में कहीं अधिक यथार्थवादी और विविध म्यूटेंट्स बनाते हैं, जिससे इंजीनियरों को उनके सॉफ़्टवेयर में गहरे दोष खोजने में मदद मिलती है।
हालाँकि, वे अभी पूरी तरह से पुराने टूल्स को बदलने के लिए तैयार नहीं हैं। वे "टाइपो" (कंपाइलेशन एरर) करने के प्रति बहुत संवेदनशील हैं और धीमे भी हैं। पेपर के अनुसार, आदर्श भविष्य एक हाइब्रिड दृष्टिकोण है: यथार्थवादी, रचनात्मक बग्स बनाने के लिए AI का उपयोग करें, लेकिन कोड को साफ और वैध सुनिश्चित करने के लिए पारंपरिक टूल्स का उपयोग करें।
संक्षेप में: AI वह रचनात्मक जीनियस है जो शानदार, वास्तविक विचार लाता है लेकिन उसे व्याकरण ठीक करने के लिए एक संपादक की आवश्यकता होती है। पारंपरिक टूल्स वे भरोसेमंद संपादक हैं जो गलतियाँ कभी नहीं करते लेकिन उनमें रचनात्मकता की कमी होती है। साथ मिलकर, वे एक आदर्श टीम बनाते हैं।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।