An Upper Bound on the Probability That a User Encounters an Undiscovered Defect
यह शोध पत्र इस बात के लिए एक वितरण-मुक्त ऊपरी सीमा (distribution-free upper bound) प्रस्तावित करता है कि किसी उपयोगकर्ता को एक अनदेखे सॉफ़्टवेयर दोष का सामना करना पड़ेगा, यह प्रदर्शित करते हुए कि बीटा परीक्षण के दौरान ठीक एक बार रिपोर्ट किए गए दोषों का अंश () एक रूढ़िवादी, मॉडल-स्वतंत्र अनुमान के रूप में कार्य करता है जो रिलीज़ संबंधी निर्णयों के लिए उपयुक्त है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
द ग्रेट बग हंट: केवल बग्स को गिनना काफी क्यों नहीं है
कल्पना कीजिए कि आप एक शेफ हैं जो हजारों मेहमानों के लिए एक विशाल भोज (banquet) परोसने वाले हैं। दरवाजे खोलने से पहले, आपके पास स्वाद चखने वालों की एक टीम (आपके बीटा टेस्टर्स) है जिन्होंने खाना खाया है और चिल्ला रहे हैं, "अरे, यह सूप बहुत नमकीन है!" या "इस केक में तो पत्थर है!" आप उन समस्याओं को ठीक करते हैं जो वे ढूंढते हैं। लेकिन यहाँ डरावना सवाल यह है: यदि आप अभी दरवाजे खोल देते हैं, तो इस बात की क्या संभावना है कि अंदर आने वाला कोई भी रैंडम मेहमान उस पत्थर से टकरा जाएगा जिसे आपने मिस कर दिया है?
यह कंप्यूटर विज्ञान की एक समस्या का केंद्र है जिसे "सॉफ्टवेयर रिलायबिलिटी" (software reliability) कहा जाता है। दशकों से, डेवलपर्स ने इसे गिनकर जवाब देने की कोशिश की है। वे पूछते हैं, "रसोई में कितने पत्थर बचे हैं?" वे छिपे हुए बग्स की कुल संख्या का अनुमान लगाने के लिए जटिल गणित का उपयोग करते हैं। लेकिन इसमें एक पेंच है: यह जानना कि दस पत्थर बचे हैं, आपको यह नहीं बताता कि वे सभी पेंट्री के पीछे वाले हिस्से में हैं (जहाँ शायद ही कोई उन्हें ढूंढेगा) या एक विशाल चट्टान सामने के दरवाजे पर बैठी है (जहाँ हर कोई उससे टकरा जाएगा)। पुराने तरीके अक्सर पत्थरों को गिनने में उलझ कर रह जाते हैं, और इस बात को नजरअंदाज कर देते हैं कि कुछ पत्थर अन्य की तुलना में बहुत अधिक खतरनाक होते हैं क्योंकि वे कहाँ स्थित हैं।
इसे हल करने के लिए, हमें पत्थर गिनना बंद करना होगा और लोगों को गिनना शुरू करना होगा। हमें यह जानने की जरूरत है कि एक रैंडम व्यक्ति के किसी समस्या से टकराने की कितनी संभावना है। यह पेपर ठीक इसी सवाल से निपटता है: "कितने बग्स बचे हैं?" पूछने के बजाय, यह पूछता है, "एक यूजर के ऐसे बग से टकराने की क्या संभावना है जिसे उसने पहले कभी नहीं देखा?" यह पता चलता है कि इसका अनुमान लगाने का एक आश्चर्यजनक रूप से सरल तरीका है, जो इस ट्रिक का उपयोग करता है कि टेस्टर एक ही बग को एक से अधिक बार कितनी बार पाते हैं।
पेपर का बड़ा विचार: "वन-टाइम वंडर" नियम
लेखक, कार्लोस एम. हर्नांडेज़-सुआरेज़ और कार्ला हर्नांडेज़-कुएवास, एक चतुर शॉर्टकट का प्रस्ताव देते हैं। वे सुझाव देते हैं कि छिपे हुए बग के जोखिम का अनुमान लगाने के लिए, आपको यह जानने की आवश्यकता नहीं है कि कुल कितने बग्स हैं, सॉफ्टवेयर कैसे बना है, या कितने लोग इसका उपयोग कर रहे हैं। आपको बस अपनी बग रिपोर्ट्स को देखना है और कुछ बहुत विशिष्ट गिनना है: वे बग्स जिन्हें ठीक एक बार रिपोर्ट किया गया था।
आइए एक उपमा (analogy) का उपयोग करें। कल्पना कीजिए कि आप एक जासूस हैं जो यह पता लगाने की कोशिश कर रहे हैं कि आपके शहर में कितने अलग-अलग प्रकार की एलियन प्रजातियां आ रही हैं। आपके पास मुलाकातों का एक लॉगबुक है।
- यदि आप "ज़ोग" (Zog) को 50 बार देखते हैं, तो आप जानते हैं कि ज़ोग एक आम एलियन है।
- यदि आप "ज़िल" (Xyl) को 3 बार देखते हैं, तो ज़िल थोड़ा दुर्लभ है।
- लेकिन यदि आप "ब्लोर्प" (Blorp) को ठीक एक बार देखते हैं, और फिर कभी नहीं, तो यह आपको क्या बताता है?
पेपर का तर्क है कि ये "ब्लोर्प्स"—जो बग्स ठीक एक बार देखे गए थे—ही कुंजी हैं। वे इन एकल मुलाकातों () को कुल मुलाकातों () के अनुपात को एक "कंजर्वेटिव अपर बाउंड" (conservative upper bound) कहते हैं। सरल भाषा में: बग्स का प्रतिशत जिन्हें ठीक एक बार रिपोर्ट किया गया था, एक नए, अनदेखे बग से टकराने वाले यूजर्स के प्रतिशत के लिए एक सुरक्षित, "वर्स्ट-केस" (सबसे खराब स्थिति) अनुमान है।
यह क्यों काम करता है (द "क्लोज्ड डोर" लॉजिक)
आप सोच सकते हैं, "क्या होगा अगर बग्स दूसरे बग्स के पीछे छिपे हों? जैसे किसी बंद दरवाजे के पीछे एक गुप्त कमरा?" लेखक इस शानदार तर्क के साथ इसका समाधान करते हैं।
कल्पना कीजिए कि सॉफ्टवेयर एक विशाल हवेली है जिसमें कई कमरे हैं। कुछ बग्स गलियारे में हैं (ढूंढना आसान है)। कुछ एक बंद दरवाजे के पीछे गुप्त कमरे में हैं (ढूंढना कठिन है)।
- यदि कोई यूजर बंद दरवाजे (एक बग) से टकराता है, तो वह उसके पीछे के गुप्त कमरे में नहीं जा सकता।
- इसलिए, गुप्त कमरे तक पहुँचने वाले लोगों की संख्या हमेशा बंद दरवाजे से टकराने वाले लोगों की संख्या के बराबर या उससे कम होगी।
लेखक दिखाते हैं कि इस "नेस्टेड" (एक के भीतर एक) संरचना के कारण, आपको छिपे हुए कमरों की चिंता करने की ज़रूरत नहीं है। जो "सिंगल-रिपोर्ट" बग्स आपने पाए हैं, वे पहले से ही छिपे हुए बग्स के जोखिम को कवर करते हैं। यदि कोई बग एक बार रिपोर्ट किया जाता है, तो वह एक "दरवाजे" के रूप में कार्य करता है जो उसके पीछे की हर चीज़ के जोखिम को सीमित करता है। इसलिए, सिंगल रिपोर्ट्स को गिनना पूरे घर को कवर करने के लिए पर्याप्त है।
उन्होंने क्या किया और क्या पाया
लेखकों ने केवल अनुमान नहीं लगाया; उन्होंने "कैनोनिकल फॉर्म" (इसे रंगीन गेंदों से भरे एक विशेष प्रकार के बर्तन या जार के रूप में सोचें) नामक एक गणितीय मॉडल बनाया। उन्होंने गणितीय रूप से सिद्ध किया कि यदि आप अपनी बग रिपोर्ट्स को इस जार से गेंदें निकालने की तरह मानते हैं, तो केवल एक बार दिखने वाली गेंदों का अंश () "मिसिंग मास" (अनदेखे बग्स) के लिए सटीक मैक्सिमम-लाइक्लीहुड एस्टीमेट (exact maximum-likelihood estimate) है।
महत्वपूर्ण रूप से, उन्होंने दिखाया कि यह अनुमान कंजर्वेटिव (conservative) है। इसका मतलब है कि यह वास्तविक जोखिम को कम बताने के बजाय उसे ओवरएस्टीमेट (अधिक आंकना) करने की प्रवृत्ति रखता है।
- यह क्यों अच्छा है: यदि आप एक डेवलपर के रूप में सॉफ्टवेयर रिलीज करने का निर्णय ले रहे हैं, तो आप सुरक्षित रहना चाहते हैं। यदि गणित कहता है "बग होने की 5% संभावना है," और वास्तविक संभावना 3% है, तो आप सुरक्षित हैं। यदि गणित ने 3% कहा और वास्तविक संभावना 5% थी, तो आप मुसीबत में पड़ जाएंगे। यह विधि सुनिश्चित करती है कि आप हमेशा सावधानी बरतते हुए सुरक्षित पक्ष में रहें।
उन्होंने इस विचार का परीक्षण कंप्यूटर सिमुलेशन (ज्ञात उत्तरों के साथ नकली बग आबादी बनाना) का उपयोग करके किया।
- 20 बग्स वाले एक परीक्षण में, उन्होंने पाया कि जैसे-जैसे उन्होंने अधिक यूजर्स का "टेस्ट" किया (सैंपल साइज को 25 से बढ़ाकर 400 करना), उनका अनुमान () हमेशा अनदेखे बग्स की वास्तविक संख्या से अधिक या उसके बराबर था।
- उदाहरण के लिए, 100 टेस्ट यूजर्स के साथ, वास्तविक अनदेखा जोखिम 0.0059 था, और उनका अनुमान 0.0063 था। अनुमान थोड़ा अधिक (कंजर्वेटिव) था, लेकिन कभी भी बहुत कम नहीं था।
यह क्या नहीं है (खेल के नियम)
पेपर इस बारे में बहुत स्पष्ट है कि यह विधि क्या नहीं कर सकती है, और इसे सही ढंग से समझना महत्वपूर्ण है:
- यह बग्स गिनने के लिए नहीं है। यह आपको यह नहीं बताता कि "50 बग्स बचे हैं।" यह आपको बताता है कि "एक यूजर के बग से टकराने की 2% संभावना है।"
- यह सार्वजनिक बग लिस्ट के लिए नहीं है। लेखकों ने स्पष्ट रूप रूप से सार्वजनिक बग डेटाबेस (जैसे इंटरनेट पर मौजूद) पर इसका उपयोग करने से मना किया है। क्यों? क्योंकि उन सूचियों में, एक बग को आमतौर पर एक व्यक्ति द्वारा रिपोर्ट किया जाता है, भले ही 1,000 लोगों ने उसे पाया हो। यहाँ "काउंट" (गिनती) खो जाती है। इस विधि का उपयोग करने के लिए, आपको ऐसे डेटा की आवश्यकता है जो कहता हो, "इस बग को 50 अलग-अलग यूजर्स ने हिट किया," न कि केवल "इस बग को रिपोर्ट किया गया।"
- यह भविष्य के लिए कोई जादुई क्रिस्टल बॉल नहीं है। यह जोखिम का एक स्नैपशॉट देता है। यदि आप बग्स को ठीक करते हैं और फिर से टेस्ट करते हैं, तो आपको इसे फिर से कैलकुलेट करना होगा।
निष्कर्ष
यह पेपर रिलीज के निर्णय के लिए एक सीधा, बिना किसी तामझाम वाला जवाब प्रदान करता है। यह कहता है: "अंधेरे में छिपे बग्स के बारे में चिंता न करें। बस यह देखें कि आपके टेस्टर्स ने कितने बग्स को ठीक एक बार पाया। वह संख्या, आपकी कुल टेस्टिंग के भाग के रूप में, आपके लिए एक सुरक्षित, अपर-लिमिट गेस है कि कितने यूजर्स उस बग पर अटक जाएंगे जिसे आपने मिस कर दिया है।"
यह एक ऐसा टूल है जो एक जटिल, डरावनी अनिश्चितता को एक सरल, सुरक्षित संख्या में बदल देता है, यह सुनिश्चित करता है कि जब सॉफ्टवेयर शिप हो, तो डेवलपर्स के पास अपने यूजर्स के जोखिम का एक स्पष्ट और कंजर्वेटिव दृष्टिकोण हो।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।