Is this Build Failure Related to my Patch? An Empirical Study of Unrelated Build Failures in Continuous Integration
यह अनुभवजन्य अध्ययन सात अपाचे (Apache) परियोजनाओं में 77,354 सीआई (CI) बिल्ड विफलताओं का विश्लेषण करता है ताकि असंबंधित विफलताओं पर बर्बाद किए गए डेवलपर के प्रयास को मापा जा सके और यह प्रदर्शित किया जा सके कि अर्ध-पर्यवेक्षित पॉजिटिव एंड अनलेबल (PU) लर्निंग मॉडल, सीआई (CI) विलंबता और त्रुटि पैटर्न जैसे फीचर्स का उपयोग करते हुए, ऐसे गैर-कार्रवाई योग्य विफलताओं की प्रभावी ढंग से भविष्यवाणी कर सकते हैं ताकि डेवलपर्स को उनके डिबगिंग प्रयासों को प्राथमिकता देने में मदद मिल सके।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक बहुत ही व्यस्त, अराजक रसोई (यह एक कंटीन्यूअस इंटीग्रेशन वातावरण है) में काम करने वाले एक शेफ हैं। हर कुछ मिनटों में, एक नया ऑर्डर आता है (एक कोड पुश) और रसोई स्वचालित रूप से यह देखने के लिए एक टेस्ट मील (परीक्षण भोजन) बनाना शुरू कर देती है कि क्या नए सामग्रियां काम कर रही हैं।
कभी-कभी, वह टेस्ट मील जल जाता है या उसका स्वाद बहुत खराब होता है। आमतौर पर, इसका मतलब होता है कि जिस शेफ ने अभी नई सामग्रियां डाली हैं, उससे कोई गलती हुई है। लेकिन कभी-कभी, अलार्म इसलिए बज उठता है क्योंकि पिछले शेफ ने चूल्हा चालू छोड़ दिया था, या ओवन टूट गया था, या किसी और ने बगल के कमरे में ट्रे गिरा दी थी। इसे ही पेपर में "अनरिलेटेड बिल्ड फेलियर" (Unrelated Build Failure) कहा गया है।
समस्या यह है कि जिस शेफ ने अभी नई सामग्रियां डाली हैं, उसे यह पता नहीं होता कि भोजन क्यों खराब हुआ। वे घंटों (पेपर कहता है कि औसतन 4 घंटे) तक अपने मसालों और चाकूओं की जांच करने में बिता देते हैं, यह साबित करने की कोशिश करते हुए कि, "इसमें मेरी गलती नहीं है!" इससे बहुत समय बर्बाद होता है और तनाव भी होता है।
शोधकर्ताओं ने क्या किया
लेखकों (शोधकर्ताओं की एक टीम) ने इस रसोई की अराजकता की जांच करने का निर्णय लिया। उन्होंने 77,354 " जले हुए भोजन" (बिल्ड फेलियर) को देखा जो 7 बड़े ओपन-सोर्स सॉफ्टवेयर प्रोजेक्ट्स (जैसे Apache Hadoop और HBase) से आए थे।
- जासूसी कार्य: उन्होंने डेवलपर्स द्वारा विफलता के बाद छोड़ी गई हजारों टिप्पणियों (comments) को मैन्युअल रूप से पढ़ा। उन्होंने "यह मेरे बदलाव से संबंधित नहीं है" या "अनरिलेटेड" जैसे वाक्यांशों को खोजा। उन्हें लगभग 10,300 ऐसे मामले मिले जहां डेवलपर्स ने स्पष्ट रूप से कहा था, "यह विफलता मेरी गलती नहीं थी।"
- इंटरव्यू: उन्होंने इन "मेरी गलती नहीं है" वाले मामलों में से एक छोटा, प्रतिनिधि नमूना 371 चुना और एक जासूस की तरह अपराध स्थल का विश्लेषण किया। उन्होंने पूछा: डेवलपर्स ने ऐसा क्यों कहा कि यह उनकी गलती नहीं थी?
- निष्कर्ष: सबसे आम कारण थे:
- अनरिलेटेड टेस्ट्स (Unrelated Tests): वह टेस्ट जो विफल हुआ, वास्तव में रसोई के किसी दूसरे हिस्से की जांच कर रहा था, न कि नई सामग्री की।
- बाहरी हस्तक्षेप (External Interference): रसोई के बाहर कुछ बदल गया था (जैसे किसी सप्लायर ने सभी के लिए खराब आटा डिलीवर कर दिया)।
- नॉन-रिप्रोड्यूसेबल (Non-reproducible): आग एक बार लगी, लेकिन जब उन्होंने भोजन को फिर से बनाने की कोशिश की, तो यह ठीक था (शायद कोई रैंडम पावर सर्ज था)।
- "अनस्पेसिफाइड" ग्रुप (The "Unspecified" Group): एक बड़ा हिस्सा (35%) का मामला था जहाँ डेवलपर्स ने बिना कारण बताए बस "यह मेरी गलती नहीं है" कहा।
- निष्कर्ष: सबसे आम कारण थे:
समाधान: एक "स्मार्ट असिस्टेंट"
चूंकि डेवलपर्स हमेशा तुरंत यह नहीं समझा पाते कि विफलता क्यों अनरिलेटेड है, इसलिए शोधकर्ताओं ने उनके लिए अनुमान लगाने के लिए एक स्मार्ट असिस्टेंट (एक मशीन लर्निंग मॉडल) बनाया।
उन्होंने एक विशेष तकनीक का उपयोग किया जिसे PU लर्निंग (पॉजिटिव-अनलेबल लर्निंग) कहा जाता है।
- उपमा (Analogy): कल्पना कीजिए कि आप एक कुत्ते को एक विशिष्ट प्रकार की गेंद खोजने के लिए सिखाने की कोशिश कर रहे हैं। आपके पास कुछ गेंदें हैं जिन्हें आप जानते हैं कि वे सही प्रकार की हैं (पॉजिटिव उदाहरण)। लेकिन आपके पास मिश्रित गेंदों का एक बड़ा ढेर है जहाँ आप नहीं जानते कि कौन सी सही हैं और कौन सी गलत (अनलेबल ढेर)। आप यह नहीं कह सकते कि "बाकी सब गलत गेंदें हैं" क्योंकि उनमें से कुछ वास्तव में सही गेंदें हो सकती हैं, बस आपने अभी तक उन्हें चेक नहीं किया है।
- यह कैसे काम करता है: शोधकर्ताओं ने अपने मॉडल को "ज्ञात अनरिलेटेड फेलियर्स" और "अनजान ढेर" को खिलाया। मॉडल उन पैटर्न को पहचानना सीख गया जो संकेत देते हैं कि विफलता के अनरिलेटेड होने की संभावना अधिक है, भले ही स्पष्ट लेबल मौजूद न हो।
असिस्टेंट कितना अच्छा था?
मॉडल का परीक्षण उन्हीं 7 प्रोजेक्ट्स पर किया गया।
- यह प्रिसिजन (Precision) में बहुत अच्छा था (जब इसने कहा "यह आपकी गलती नहीं है," तो यह आमतौर पर सही था, लगभग 70% से 88% बार)।
- यह रिकॉल (Recall) में भी अच्छा था (इसने अधिकांश अनरिलेटेड फेलियर्स को ढूंढ लिया, हालांकि यह कुछ को मिस कर गया)।
- इसने रैंडम गेसिंग या साधारण नियमों की तुलना में काफी बेहतर प्रदर्शन किया।
वे "सुराग" जिनका मॉडल ने उपयोग किया
शोधकर्ताओं ने तीन मुख्य सुराग पाए जो मॉडल को यह तय करने में मदद करते थे कि क्या कोई विफलता अनरिलेटेड है:
- टाइम गैप (CI Latency): यदि किसी डेवलपर ने कोड पुश किया और बिल्ड को ट्रिगर करने से पहले लंबा इंतजार किया, तो इसकी अधिक संभावना है कि इस बीच किसी और ने रसोई खराब कर दी।
- "डेजा वू" एरर (The "Deja Vu" Error): यदि एरर मैसेज हाल ही में हुई किसी त्रुटि जैसा बिल्कुल वैसा ही दिखता है, तो यह पुराने समस्या का दोहराव होने की संभावना है, न कि वर्तमान शेफ के कारण हुई नई समस्या।
- चैटर (The Chatter): यदि विफलता से पहले इश्यू (issue) पर बहुत सारी टिप्पणियाँ हैं, तो यह सुझाव देता है कि समस्या जटिल है और इसमें अन्य लोगों के काम के शामिल होने की संभावना अधिक है।
निचोड़ (The Bottom Line)
पेपर यह निष्कर्ष निकालता है कि इस "स्मार्ट असिस्टेंट" का उपयोग करके, डेवलपर्स को एक त्वरित संकेत मिल सकता है: "इस बात की उच्च संभावना है कि यह विफलता आपकी गलती नहीं है।"
इसका मतलब यह नहीं है कि वे समस्या को अनदेखा कर दें, बल्कि यह उन्हें बताता है, "अपना 4 घंटे कोड चेक करने में बर्बाद न करें। शायद ओवन या दूसरे शेफ को चेक करें।" यह उन्हें झूठे अलार्म पर समय बर्बाद करने से रोकने और तेजी से वापस खाना पकाने (कोडिंग करने) में मदद करता है।
महत्वपूर्ण नोट: यह पेपर पूरी तरह से सॉफ्टवेयर प्रोजेक्ट्स में इन विफलताओं की पहचान करने पर केंद्रित है। यह दावा नहीं करता है कि यह तरीका मेडिकल डायग्नोसिस, फाइनेंशियल ट्रेडिंग, या सॉफ्टवेयर डेवलपमेंट के बाहर के किसी अन्य क्षेत्र में काम करता है। यह विशेष रूप से सॉफ्टवेयर टीमों के लिए अपने स्वयं के "किचन" की अराजकता को प्रबंधित करने का एक टूल है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।