Efficient Black-Box Fault Localization for System-Level Test Code Using Large Language Models
यह शोध पत्र एक पूर्णतः स्टैटिक, ब्लैक-बॉक्स दृष्टिकोण प्रस्तुत करता है जो टेस्ट केस को निष्पादित किए बिना जटिल सिस्टम-लेवल टेस्ट कोड में दोषों (faults) को स्थानीयकृत करने के लिए लार्ज लैंग्वेज मॉडल्स का लाभ उठाता है, जिससे मौजूदा विधियों की तुलना में उच्च सटीकता प्राप्त होती है और इन्फरेंस समय एवं टोकन उपयोग में काफी कमी आती है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक विशाल, हाई-टेक वीडियो कॉन्फ्रेंसिंग सिस्टम के मैनेजर हैं। एक दिन, एक महत्वपूर्ण मीटिंग के दौरान सिस्टम क्रैश हो जाता है। आपके पास दो मुख्य संदिग्ध हैं:
- सिस्टम (SUT): वास्तविक वीडियो कॉन्फ्रेंसिंग सॉफ्टवेयर (जो "इंजन" है)।
- टेस्ट स्क्रिप्ट (TC): वह ऑटोमेटेड रोबोट जिसे आपने इंजन के काम करने की जाँच करने के लिए बनाया है (जो "इंस्पेक्टर" है)।
आमतौर पर, जब कोई टेस्ट फेल होता है, तो डेवलपर्स मान लेते हैं कि इंजन खराब है और समस्या खोजने के लिए उसे घंटों तक खंगालते रहते हैं। लेकिन अक्सर, इंजन ठीक होता है! समस्या यह होती है कि इंस्पेक्टर रोबोट के पास गलत चेकलिस्ट होती है या वह गलत चीज़ को देख रहा होता है। यह बिल्कुल वैसा ही है जैसे कोई सुरक्षा गार्ड मोशन सेंसर को बंद करना भूल गया हो और इसलिए चिल्ला रहा हो "घुसपैठिया आया!" जबकि वास्तव में वहां कोई घुसपैठिया नहीं है।
यह पेपर एक नया, सुपर-स्मार्ट तरीका पेश करता है जिससे यह पता लगाया जा सके कि क्या इंस्पेक्टर रोबोट ने गलती की है, और वह भी बिना टेस्ट को बार-बार चलाए (क्योंकि बार-बार टेस्ट चलाना महंगा, धीमा, या असंभव हो सकता है यदि क्रैश रैंडमली होता है)।
यहाँ उनके समाधान का सरल उपमाओं (analogies) के साथ विवरण दिया गया है:
1. समस्या: "ब्लैक बॉक्स" का रहस्य
वास्तविक दुनिया में, टेस्टर्स के पास अक्सर "इंजन" के आंतरिक ब्लूप्रिंट (सोर्स कोड) तक पहुँच नहीं होती है। वे केवल बाहरी हिस्से को देख पाते हैं। जब रोबोट इंस्पेक्टर फेल हो जाता है, तो उन्हें एक लॉग फ़ाइल मिलती है—जो हुआ उसका एक लंबा, उलझा हुआ ट्रांसक्रिप्ट है।
- पुराना तरीका: बग खोजने के लिए, आपको आमतौर पर टेस्ट को 100 बार चलाना पड़ता है, "अच्छे" रन की तुलना "बुरे" रन से करनी पड़ती है, और देखना पड़ता है कि क्या बदला है। लेकिन क्या होगा अगर एक टेस्ट चलाने की लागत $1,000 हो? या क्या होगा अगर क्रैश दस लाख कोशिशों में से केवल एक बार होता है? आप ऐसा नहीं कर सकते।
- नया तरीका: लेखक एक लार्ज लैंग्वेज मॉडल (LLM) का उपयोग करते हैं—इसे एक सुपर-इंटेलिजेंट डिटेक्टिव (जासूस) समझें जिसने दुनिया की हर कोडिंग किताब पढ़ रखी है। यह जासूस उस उलझे हुए ट्रांसक्रिप्ट और रोबोट के कोड को देखकर कह सकता है, "आह, मुझे दिख गया कि समस्या ठीक यहाँ है," बिना टेस्ट को दोबारा चलाए।
2. चुनौती: बहुत अधिक शोर (Noise)
समस्या यह है कि रोबोट का कोड बहुत बड़ा और जटिल है। यह सिस्टम के सैकड़ों अलग-अलग हिस्सों से बात करता है। यदि आप पूरे कोड (हजारों लाइनें) जासूस को दे देंगे, तो वह अभिभूत (overwhelmed) हो जाएगा। यह एक जासूस से घास के ढेर में सुई खोजने के लिए कहने जैसा है जबकि उसकी आँखों पर पट्टी बंधी हो। इसके अलावा, इतना सारा टेक्स्ट पढ़ने में बहुत समय लगता है और इसमें काफी पैसा (AI की मुद्रा यानी "टोकन्स" के रूप में) खर्च होता है।
3. समाधान: "प्रूनिंग" (छंटाई) का कमाल
लेखकों ने एक चतुर तीन-चरणीय प्रक्रिया बनाई है जो जासूस को केवल महत्वपूर्ण हिस्सों पर ध्यान केंद्रित करने में मदद करती है। वे इसे एग्जीक्यूशन ट्रेस एस्टीमेशन (Execution Trace Estimation) कहते हैं।
टेस्ट कोड को एक "चूज़-योर-ओन-एडवेंचर" (अपनी पसंद का रास्ता चुनें) किताब की तरह समझें।
- चरण 1: सुराग की खोज (Log Matching): जासूस "फेलियर ट्रांसक्रिप्ट" (लॉग) को देखता है। वह कोड में उन विशिष्ट वाक्यों को ढूंढता है जो ट्रांसक्रिप्ट के वाक्यों से मेल खाते हैं।
- उपमा: यदि लॉग कहता है "Test 1 passed!" और कोड में एक लाइन है
print("Test 1 passed!"), तो जासूस जानता है कि किताब का वह विशिष्ट पन्ना पढ़ा गया था।
- उपमा: यदि लॉग कहता है "Test 1 passed!" और कोड में एक लाइन है
- चरण 2: खाली जगहों को भरना (The "Fill-in-the-Gaps" Algorithm): जासूस सुरागों के बीच के पन्नों को देखता है। यदि किताब तार्किक रूप से पेज 1 से पेज 10 तक चलती है, और हमें पता है कि पेज 1 और पेज 10 पढ़े गए थे, तो जासूस मान लेता है कि बीच के पन्ने भी पढ़े गए थे।
- चरण 3: शाखाओं को काटना (CFG Analysis): यह सबसे स्मार्ट हिस्सा है। जासूस "If/Else" के रास्तों (forks in the road) को देखता है।
- उपमा: यदि लॉग कहता है "हमने बायां रास्ता लिया," तो जासूस जानता है कि "दायां रास्ता" वाले पन्ने कभी पढ़े ही नहीं गए। वे उन पन्नों को भौतिक रूप से काटकर निकाल देते हैं।
- वे यह भी देखते हैं कि क्या रोबोट ने किसी हेल्पर फंक्शन को कॉल किया है। यदि कोई हेल्पर फंक्शन कभी कॉल नहीं किया गया, तो वे वह पूरा चैप्टर भी काट देते हैं।
परिणाम: वे एक 1,000 पन्नों की किताब को काटकर केवल उन 300 पन्नों में बदल देते हैं जो वास्तव में क्रैश में शामिल थे।
4. जासूस का फैसला
अब, जासूस (AI) को केवल उन 300 पन्नों को ही पढ़ना होगा।
- तेज़: छोटी किताब पढ़ने में बहुत कम समय लगता है।
- सस्ता: इसे प्रोसेस करने के लिए कम "टोकन्स" खर्च होते हैं।
- स्मार्ट: क्योंकि किताब छोटी है, जासूस अप्रासंगिक जानकारी से विचलित नहीं होता और बग को अधिक सटीकता से ढूंढ पाता है।
5. परिणाम: यह क्यों मायने रखता है
लेखकों ने वास्तविक औद्योगिक डेटा (Huawei जैसी कंपनी से) पर इसका परीक्षण किया।
- सटीकता: उनका "प्रून्ड" (छंटा हुआ) वर्जन इतना अच्छा था कि AI ने बग को उतनी ही अच्छी तरह से खोज निकाला जितना कि पूरी किताब पढ़ने पर मिलता। वास्तव में, इसने अपने टॉप 3 अनुमानों में 81% बार बग खोज लिया।
- गति: बेकार कोड को काटकर, उन्होंने AI को 34% तेज़ बना दिया।
- लागत: उन्होंने AI द्वारा प्रोसेस किए जाने वाले डेटा की मात्रा को 93% तक कम कर दिया।
बड़ी तस्वीर (The Big Picture)
कल्पना कीजिए कि आप एक 500 पन्नों के उपन्यास में टाइपो (लिखने की गलती) खोजने की कोशिश कर रहे हैं, लेकिन आपके पास केवल एक नोट है जिसमें लिखा है "पेज 400 पर एक टाइपो है।"
- पुराना तरीका: आप पूरी किताब को 10 बार पढ़ते हैं ताकि देख सकें कि कहानी कहाँ गलत हो रही है।
- इस पेपर का तरीका: आप एक स्मार्ट असिस्टेंट का उपयोग करते हैं जो नोट को देखता है, यह समझता है कि कहानी केवल पेज 400 तक ही है, और फिर आप पेज 401 से 500 को फाड़कर निकाल देते हैं। अब आपको टाइपो खोजने के लिए केवल पहले 400 पन्नों को ही पढ़ना होगा।
संक्षेप में: यह पेपर हमें सिखाता है कि कैसे AI का उपयोग करके हमारे टेस्टिंग टूल्स (न कि केवल सॉफ्टवेयर खुद) में बग ढूंढे जा सकते हैं, और वह भी बुद्धिमानी से उन हिस्सों को अनदेखा करके जो वास्तव में रन (run) नहीं हुए थे। यह डेवलपर्स के लिए समय, पैसा और हताशा बचाता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।