आप Google मानचित्र "दिशा-निर्देश" सुविधा का परीक्षण कैसे करेंगे?


13

(मुझे लगता है कि यह एक अच्छा साक्षात्कार प्रश्न होगा , लेकिन मेरे मामले में यह उससे कहीं अधिक व्यावहारिक है।)

हमारे पास एक बड़ा और जटिल अनुप्रयोग है जो दर्जनों रासायनिक घटकों के बीच एक बहुत लंबी और परिष्कृत रासायनिक प्रतिक्रिया प्रक्रिया को मॉडल करता है। हम आवेदन के लिए स्वीकृति टेस्ट को डिजाइन करने के स्तर पर हैं, लेकिन हम परीक्षण करने के लिए संभावित रास्तों की सहज संख्या से कुछ हद तक भयभीत हैं। मेरे साथ यह हुआ कि हमारी स्थिति बहुत हद तक वैसी ही है जैसी Google मैप्स देव टीम को तब मिली होगी जब उनके "गेट डायरेक्शन्स" फीचर में रूट-प्लानिंग एल्गोरिदम का परीक्षण करने का समय आ गया था। जाहिर है कि वे हर संभावित मार्ग का परीक्षण (सत्यापन और सत्यापन) नहीं कर सकते थे। तो उन्हें विश्वास कैसे हुआ कि उनका आवेदन हर स्थिति में काम करेगा?

और जब से मुझे यह पता लगाने की उम्मीद नहीं है कि उन्होंने यह कैसे किया, मुझे आपसे पूछना चाहिए: आप पर्याप्त कोड कवरेज के साथ टेस्ट सूट डिजाइन करने के बारे में कैसे जाएंगे , खुद को संतुष्ट करने के लिए कि एक दिया गया आवेदन मजबूत है - जब यह सचमुच असंभव है प्रणाली के माध्यम से हर संभावित पथ की जांच करने के लिए?

मैं उन सिद्धांतों की तलाश कर रहा हूं, जिनका उपयोग आप एक छोटी, ट्रैक्टेबल टुकड़ों में एक अंतरंग समस्या को तोड़ने के लिए करेंगे, जिसके योग पूरे का एक संतोषजनक अनुमान प्रदान करते हैं: "मैं सब कुछ परीक्षण नहीं कर सकता, लेकिन मैं यह परीक्षण कर सकता हूं , यह और यह - और यह पर्याप्त है। " मैं एक ऐसे दृष्टिकोण की तलाश नहीं कर रहा हूं जो "सही रूप से सही" हो, बल्कि एक ऐसा जो विवेकपूर्ण हो , जिसे वास्तविक-विश्व बजट / समय की कमी के कारण दिया गया हो।

(मैं गूगल मैप्स उदाहरण का उपयोग कर रहा हूं, जो कि कुछ ऐसे फॉलों के रूप में है, जो उत्तर के रूप में विशिष्ट हैं।)


अतीत में Google मैप्स ने मुझे केवल सड़कों पर, गलत तरीके से वन-वे सड़कों पर, और उन चौराहों पर मोड़ने के लिए निर्देशित करने की कोशिश की है जो अस्तित्व में नहीं हैं (उदाहरण के लिए केवल एक ऑफ़्रैम्प के साथ एक फ्लाईओवर)। मेरा मानना ​​है कि उनके पास "गलत दिशाओं की रिपोर्ट" सुविधा है, लेकिन यह शायद ऐसी चीज नहीं है जो आपकी स्थिति में काम करेगी। उनके बारे में बिट का जवाब सब कुछ परीक्षण? उन्होंने ऐसा नहीं किया, और उन्हें वास्तव में इसकी आवश्यकता नहीं थी।
जॉन लियोन

हमेशा इस तरह के सवाल के साथ, मैं सलाह देता हूं कि आप नासिम निकोलस तालेब की किताबें और लेख पढ़ें। यहाँ एक तकनीकी लेख है जो गणित में मिलता है लेकिन मैं उसकी किताबें पढ़ने की सलाह देता हूँ।
23 फरवरी को jfrankcarr

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

2
@ जोजस: आप जो कुछ भी बता रहे हैं वह डेटाबेस की त्रुटियां हैं, वास्तव में Google की दिशा एल्गोरिथ्म की समस्या नहीं है। आज सुबह मेरे समनव ने मुझे एक अनचाही सड़क पर ले जाने की कोशिश की। दूसरी ओर, जब इसने मुझे एक सड़क के बारे में एक लेन बंद करने की सलाह दी, जो मैं एक वास्तविक बग को छोड़ने वाला था। (सलाहकार स्पष्ट रूप से केवल उस सड़क पर दिखता है जो आप पर हैं, न कि वह मार्ग जिसका वह अनुसरण कर रहा है।)
लोरेन Pechtel

1
इसे "बीटा" कहें। किया हुआ। Google तरीका टिस करें।
Paystey

जवाबों:


10

मैंने एक दशक पहले कार नेविगेशन क्षेत्र में काम किया था।

चरण ए) एक संदर्भ पैकेज का उपयोग करें और एक बड़ा नमूना सेट चुनें, ए / बी परीक्षण चलाएं। सटीकता की तलाश में नहीं, आउटलेर्स की तलाश में - संदर्भ सेट ने 1234 को 10.34 किमी के रूप में दिखाया, और हमने 77 किमी की गणना की।

चरण बी) - हमारे सॉफ़्टवेयर और संदर्भ सॉफ़्टवेयर को परिष्कृत करें - अधिक नमूने जोड़ें और सहनशीलता को कम करें।

चरण सी) - वैश्विक डेटा सेटों में स्थानीय ज्ञान का उपयोग करके घर में परीक्षण।

स्टेप डी) यूएटी ... "उपयोगकर्ता स्वीकृति परीक्षण" के रूप में "इस सामान को बेचें और देखें कि ग्राहक सबसे अधिक क्या शिकायत करते हैं"

यदि आपने कभी भी 1990 के मध्य में 2000 के मध्य में मैपिंग उत्पादों का उपयोग किया है, तो आप जानते हैं कि मेरा क्या मतलब है, हम में से जो अभी भी हर बार बारी दिशाओं द्वारा मोड़ की जांच करते थे।

वापस आप उदाहरण के लिए सवाल। आपसे जो पूछा जा रहा है, वह यह साबित करने का तरीका है कि सॉफ्टवेयर का एक टुकड़ा सही है। यदि आप गणितीय प्रमाण चाहते हैं, तो यह दिखाया गया है कि - सरल सॉफ़्टवेयर के लिए एक कीमत पर जो किसी भी यथार्थवादी बजट से अधिक हो, एक जटिल सॉफ़्टवेयर पैकेज के लिए, ठीक है, यह अभी भी शोध है .... नासा के पास अत्यधिक विश्वसनीय सॉफ़्टवेयर लिखने के लिए मॉडल हैं आर्थिक रूप से प्रबंधनीय कीमतों के भीतर, DoD और विमानन उद्योग के रूप में - हालांकि अभी भी बहुत अधिक भुगतान करने के लिए तैयार हैं। अंत में, यह नीचे आता है कि आप भुगतान करने के लिए कितने तैयार हैं .....

संपादित करें: मैं अभी आपको ओपी पढ़ता हूं। ऐसा लगता है कि आप जिस चीज की तलाश कर रहे हैं, वह एक जटिल और सॉफ्टवेयर के गुणवत्ता परीक्षण के लिए एक त्वरित और सस्ता तरीका है। आप गुणवत्ता में परीक्षण नहीं कर सकते। आपको एक मजबूत प्रक्रिया होने की आवश्यकता है ताकि आप जान सकें कि क्या सही तरीके से बनाया गया है। यदि आपको यह सोचने के लिए मिला है कि यह कैसे सही साबित होगा और आपके पास पहले से ही "बड़े और जटिल अनुप्रयोग" हैं, तो आपको बहुत देर हो चुकी है।


5

हम Google के प्रतियोगियों में से एक हैं। हमारा जवाब? मूल रूप से दो।

सबसे पहले, हम पूर्ण पता-से-पता समाधान की गणना करते हैं। हाँ, यह एक बड़ा मैट्रिक्स है। इससे भी बदतर, हम दिन के सभी समय, सप्ताह के सभी दिनों के लिए ऐसा करते हैं। मध्यवर्ती परिणामों को कैश करने के लिए इनपुट डोमेन में पर्याप्त समानता है, जो समस्या को सुगम बनाता है। फिर भी, हार्डडिस्क पर एक थोक दर प्राप्त करने का प्रयास करें।

ध्यान दें कि यह ऑफ़लाइन गणना एक अलग एल्गोरिथ्म का उपयोग करके की जाती है। यह एल्गोरिथ्म की तुलना में कहीं अधिक मेमोरी का उपयोग करता है जिसे हम परीक्षण करना चाहते हैं, लेकिन रैखिक रूप से अधिक नहीं (यानी यह एक हजार मार्गों को शांत करते समय 1000 से अधिक मेमोरी कम उपयोग करता है)।

दूसरे, भाग लेने वाले उपयोगकर्ता हमें वास्तविक दुनिया के परिणाम प्रदान करते हैं। हम संचालित लाखों मार्गों को मान्य करते हैं। क्या वास्तविक मार्ग उतनी ही तेजी से अनुमानित हैं?

और यकीन है, आप इस तरह से कीड़े पाते हैं। सभी समय। उदाहरण के लिए, "स्थानीय ट्रैफ़िक ज़ोन" * द्वारा सड़क के एक हिस्से को दोनों तरफ से बांधा गया है। केवल एक ही रास्ता है;) जिसे आप परीक्षण में ढूंढने जा रहे हैं, और जब आप उस विशेष सड़क के लिए एक मार्ग की योजना बनाते हैं।

* "लोकल ट्रैफ़िक ओनली ज़ोन" का उपयोग केवल तभी किया जा सकता है जब आप ऐसे ज़ोन में रूट शुरू या समाप्त कर रहे हों। बीच में खिंचाव इसलिए मुख्य रोड्न नेटवर्क से डिस्कनेक्ट हो गया है। यह या तो ज़ोनिंग है या मैप फॉल्ट है।


3

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

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


मुझे यकीन है कि आपने जो कुछ भी सुझाया है वह सटीक है, लेकिन मैं मदद नहीं कर सकता लेकिन महसूस करता हूं कि यह अभी भी पर्याप्त रूप से कठोर नहीं है। "मार्गों का एक स्वस्थ नमूना चुनना" ऐसा लगता है जैसे मैं कॉलेज अवधि की परियोजना के लिए क्या कर सकता हूं, इससे अधिक कि विश्व स्तरीय विकास टीम क्या करेगी। और जब मैं 3-पैर बनाम 3000-पैर मार्गों के बारे में आपके अवलोकन से सहमत हूं, तो 3-पैर मार्गों के एक बड़े अंश का परीक्षण अभी भी काफी महत्वाकांक्षी लगता है। मुझे लगता है कि हम अभी भी यहां कुछ मौलिक याद कर रहे हैं।
किमी

@kmote: "लेकिन मैं मदद नहीं कर सकता, लेकिन यह महसूस कर सकता हूं कि यह अभी भी पर्याप्त रूप से कठोर नहीं है" क्यों नहीं, इसकी पीढ़ी के लिए सॉफ्टवेयर उद्योग के लिए काम किया, और कोई भी वास्तविक संकेत नहीं है कि यह जल्द ही किसी भी समय समाप्त हो जाएगा। हमें उस कोड को लिखने के लिए भुगतान किया जाता है जो पैसा बनाता है, न कि उस कोड को लिखने के लिए जो एकदम सही है। चिकित्सा, इंजीनियरिंग और वस्तुतः सभी व्यवसायों में इसका उपयोग करने के बारे में सोचें। यह उन उद्योगों को पर्याप्त रूप से अच्छी तरह से करने के लिए लगता है।
मटनज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.