← नवीनतम पेपर
💻 computer science

Mutation-Guided Unit Test Generation with a Large Language Model

यह शोध पत्र MUTGEN को प्रस्तुत करता है, जो एक म्यूटेशन-गाइडेड लार्ज लैंग्वेज मॉडल दृष्टिकोण है जो प्रॉम्प्ट्स में म्यूटेशन फीडबैक को शामिल करता है और एक पुनरावृत्ति जनरेशन तंत्र का उपयोग करता है ताकि पारंपरिक कोड कवरेज के बजाय म्यूटेशन स्कोर द्वारा मापे गए उच्च दोष-पता लगाने की क्षमताओं वाले यूनिट टेस्ट उत्पन्न करने में EvoSuite जैसे मौजूदा उपकरणों से काफी बेहतर प्रदर्शन किया जा सके।

मूल लेखक: Guancheng Wang, Qinghua Xu, Lionel Briand, Kui Liu

प्रकाशित 2026-04-17
📖 6 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Guancheng Wang, Qinghua Xu, Lionel Briand, Kui Liu

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

कल्पना कीजिए कि आप एक शेफ हैं जिसने अभी-अभी चॉकलेट केक की एक नई रेसिपी बनाई है। दुनिया को परोसने से पहले, आपको यह सुनिश्चित करना होगा कि इसका स्वाद वास्तव में चॉकलेट जैसा ही हो और गलती से इसका स्वाद साबुन या नमक जैसा न हो जाए।

सॉफ्टवेयर की दुनिया में, इस "स्वाद परीक्षण" (taste test) को यूनिट टेस्टिंग (Unit Testing) कहा जाता है। डेवलपर्स यह जांचने के लिए छोटे चेक (टेस्ट) लिखते हैं कि उनका कोड काम कर रहा है या नहीं।

लंबे समय तक, उद्योग सफलता को इस बात से मापता था कि उनके टेस्ट ने कोड के कितने हिस्से को छुआ। यह ऐसा ही है जैसे कहना, "बहुत बढ़िया! आपने रसोई में हर एक सामग्री को छू लिया!" लेकिन यहाँ समस्या यह है कि आप हर सामग्री को छू सकते हैं और फिर भी यह चूक सकते हैं कि आपने चीनी की जगह नमक का उपयोग किया है। आपने कोड को कवर तो किया, लेकिन आप गलती पकड़ने में विफल रहे।

यह पेपर एक नया, अधिक स्मार्ट तरीका पेश करता है जिसे MUTGEN कहा जाता है। यहाँ बताया गया है कि यह कैसे काम करता है, सरल उपमाओं का उपयोग करते हुए।

समस्या: "नकली" सुरक्षा जाल (The "Fake" Safety Net)

कल्पना कीजिए कि आपके पास एक सुरक्षा गार्ड (टेस्टिंग टूल) है जिसका काम चोर (बग) को ढूंढना है।

  • पुराना तरीका (कवरेज): गार्ड इमारत के चारों ओर घूमता है और हर दरवाजे की जांच करता है। "मैंने सामने का दरवाजा, पिछला दरवाजा, बेसमेंट चेक कर लिया!" वह रिपोर्ट करता है। लेकिन उसने वास्तव में अंदर घुसने की कोशिश भी नहीं की। उसने बस हैंडल को छुआ।
  • वास्तविकता: एक चोर अभी भी बेसमेंट में छिपा हो सकता है क्योंकि गार्ड ने वास्तव में दरवाजा खोलने की कोशिश ही नहीं की कि क्या वह लॉक था।

सॉफ्टवेयर के संदर्भ में, उच्च "कोड कवरेज" (हर लाइन को छूना) का मतलब यह नहीं है कि टेस्ट बग खोजने में अच्छे हैं।

समाधान: "साबोटर" गेम (The "Saboteur" Game)

इसे ठीक करने के लिए, शोधकर्ताओं ने म्यूटेशन टेस्टिंग (Mutation Testing) नामक एक गेम पेश किया।
कल्पना कीजिए कि एक शरारती साबोटर (द "म्यूटेटर") आपकी रसोई में घुस आता है और आपकी रेसिपी में सूक्ष्म बदलाव करता है:

  • वे "2 कप चीनी" को "2 कप नमक" में बदल देते हैं।
  • वे "30 मिनट तक बेक करें" को "3 मिनट तक बेक करें" में बदल देते हैं।

यदि आपका टेस्ट करने वाला (टेस्ट सुइट) अच्छा है, तो वह केक खाएगा, नमक का स्वाद लेगा, और कहेगा, "अरे, यह गलत है!" इसे म्यूटेंट को मारना (killing the mutant) कहा जाता है।
यदि टेस्टर केक खाता है, नमक का पता नहीं लगा पाता, और कहता है, "स्वादिष्ट!", तो इसका मतलब है कि म्यूटेंट जीवित (survived) बच गया। इसका मतलब है कि आपका टेस्ट बेकार है।

लक्ष्य केवल कोड को छूना नहीं है; बल्कि साबोटर्स को मारना है।

पेश है MUTGEN: स्मार्ट जासूस

शोधकर्ताओं ने MUTGEN नामक एक टूल बनाया है जो एक सुपर-स्मार्ट AI (एक लार्ज लैंग्वेज मॉडल, या LLM) का उपयोग करता है ताकि वह अंतिम टेस्ट करने वाले के रूप में कार्य कर सके। लेकिन केवल अनुमान लगाने के बजाय, MUTGEN एक विशेष रणनीति का उपयोग करता है:

1. "साबोटर रिपोर्ट" (म्यूटेशन फीडबैक)

अधिकांश AI उपकरण केवल कहते हैं, "इस कोड के लिए एक टेस्ट लिखें।"
MUTGEN कहता है, "यहाँ कोड है, और यहाँ उन साबोटर्स की सूची है जिन्हें आपने पिछली बार छोड़ दिया था। उनमें से एक ने चीनी को नमक में बदल दिया था। अब एक ऐसा टेस्ट लिखें जो उस विशिष्ट गलती को पकड़ सके!" यह AI को पिछली विफलताओं की सटीक रिपोर्ट देता है, जिससे AI को कमजोर बिंदुओं पर ध्यान केंद्रित करने के लिए मजबूर किया जाता है।

2. रेसिपी की सफाई (कोड समराइजेशन)

कभी-कभी, मूल कोड में भ्रमित करने वाली टिप्पणियाँ या नोट्स होते हैं जो AI को धोखा दे सकते हैं। यह एक ऐसी रेसिपी की तरह है जो निर्देशों के बीच में कहती है, "आपको एक फंक्शन लिखना होगा..." द बीच में। AI भ्रमित हो सकता है और रेसिपी को टेस्ट करने के बजाय उसे फिर से लिखने की कोशिश कर सकता है।
MUTGEN में एक चरण है जहाँ यह AI से पहले कोड को सारांशित (summarize) करने के लिए कहता है, जिससे भ्रमित करने वाले शोर को हटाकर AI को पता चल सके कि उसे वास्तव में क्या टेस्ट करना है।

3. "फिक्स-इट" वर्कशॉप (The "Fix-It" Workshop)

कभी-कभी, AI एक टेस्ट लिखने की कोशिश करता है, लेकिन वह कोई टाइपो या छोटी गलती कर देता है, और टेस्ट क्रैश हो जाता है।
पुराने टूल्स उस टेस्ट के लिए हार मान लेते थे।
MUTGEN में एक फिक्सिंग स्टेप (Fixing Step) है। यह टूटे हुए टेस्ट को लेता है, एरर मैसेज दिखाता है, और कहता है, "आपने यहाँ गलती की है। कृपया इसे ठीक करें।" शोधकर्ताओं ने पाया कि MUTGEN अपनी लगभग 50% गलतियों को खुद ठीक कर सकता है, जिससे टूटे हुए टेस्ट काम करने वाले टेस्ट में बदल जाते हैं।

4. "दोबारा प्रयास" लूप (इटरेटिव जनरेशन)

यदि AI किसी साबोटर को मिस कर देता है, तो MUTGEN रुकता नहीं है। यह कहता है, "ठीक है, आपने नमक को मिस कर दिया। फिर से कोशिश करें।" यह विफलताओं के फीडबैक का उपयोग करके बेहतर और बेहतर टेस्ट बनाने के लिए लूप में चलता रहता है जब तक कि वह किसी भी बचे हुए साबोटर को न मार दे।

परिणाम: खेल में कौन जीता?

शोधकर्ताओं ने MUTGEN का परीक्षण दो अन्य प्रसिद्ध टूल्स के विरुद्ध किया:

  1. EvoSuite: पुराना "डोर-चेकर" जो बस जितना संभव हो सके कोड को छूने की कोशिश करता है।
  2. Vanilla AI: एक मानक AI जो बिना किसी विशेष मदद के एक साधारण प्रॉम्प्ट प्राप्त करता है।

स्कोरबोर्ड:

  • EvoSuite ने लगभग हर लाइन को छुआ (उच्च कवरेज), लेकिन "चीनी में नमक" जैसे कई बग्स को मिस कर दिया।
  • Vanilla AI बेहतर था लेकिन फिर भी कई सूक्ष्म जाल (traps) को मिस कर गया।
  • MUTGEN स्पष्ट विजेता था। इसने केवल कोड को नहीं छुआ; इसने छिपे हुए जाल खोज निकाले। इसने 89% साबोटर्स को पकड़ा, जबकि अन्य केवल 60-70% ही पकड़ पाए।

यह क्यों मायने रखता है?

वास्तविक दुनिया में, सॉफ्टवेयर बग खतरनाक हो सकते हैं (जैसे कि सेल्फ-ड्राइविंग कार या बैंकिंग ऐप)।

  • पुराना तरीका: "हमने 100% कोड की जांच की, इसलिए हम सुरक्षित हैं!" (लेकिन हमने महत्वपूर्ण बग मिस कर दिया)।
  • MUTGEN तरीका: "हमने 100 अलग-अलग तरीकों से कोड को तोड़ने की कोशिश की, और हमारे टेस्ट ने 89% टूटों को पकड़ा। हम बहुत अधिक सुरक्षित हैं।"

निष्कर्ष (The Takeaway)

यह पेपर दिखाता है कि टेस्ट लिखने के लिए AI का उपयोग करना बेहतरीन है, लेकिन केवल तभी जब आप AI को सिखाएं कि क्या देखना है। पिछले "विफलताओं" (म्यूटेशन फीडबैक) को दिखाकर और इसे अपनी गलतियों को ठीक करने देने से, हम ऐसा सॉफ्टवेयर बना सकते हैं जो टूटने के प्रति बहुत अधिक सुरक्षित हो।

यह एक ऐसे सुरक्षा गार्ड के बीच का अंतर है जो केवल गलियारों में घूमता है और एक ऐसे सुरक्षा गार्ड के बीच का अंतर है जो कमजोरी खोजने के लिए सक्रिय रूप से इमारत में घुसने की कोशिश करता है। MUTGEN वही प्रोएक्टिव (सक्रिय) गार्ड है।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →