2008-09-03 21 views
6

मैं एक ऐप के लिए एक स्वचालित रिग्रेशन टेस्ट सूट पर काम कर रहा हूं जिसे मैं बनाए रखता हूं। स्वचालित प्रतिगमन परीक्षण के विकास के दौरान, मैं कुछ व्यवहार में भाग गया जो लगभग निश्चित रूप से एक बग है। तो, अभी के लिए, मैंने विफलता दर्ज न करने के लिए स्वचालित रिग्रेशन परीक्षण को संशोधित किया है - यह जानबूझकर इस बुरे व्यवहार को जाने की इजाजत दे रहा है, मेरा मतलब है।क्या मुझे एक विफलता पंजीकृत करना जारी रखना चाहिए?

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


@Paul Tomblin,

बस स्पष्ट होना - मैं परीक्षण को हटाने पर विचार कभी नहीं; जब भी मैं परीक्षण चलाता हूं, मैं अपने चेहरे में फेंकने के बिना विफलता की अनुमति देने के लिए पास/असफल स्थिति को संशोधित करने पर विचार कर रहा था।

मैं ज्ञात कारणों से बार-बार विफलताओं के बारे में चिंतित हूं, अंत में सी ++ में चेतावनियों की तरह व्यवहार किया जा रहा है। मैं उन डेवलपर्स को जानता हूं जो अपने सी ++ कोड में चेतावनियां देखते हैं और उन्हें अनदेखा करते हैं क्योंकि उन्हें लगता है कि वे सिर्फ बेकार शोर हैं। मुझे डर है कि रिग्रेशन सूट में एक ज्ञात विफलता छोड़ने से लोगों को अन्य संभवतः अधिक महत्वपूर्ण, असफलताओं को अनदेखा करना शुरू हो सकता है।

बीटीडब्ल्यू, शायद मुझे गलत समझा जाए, मैं मजबूत कोड तैयार करने में सी ++ में चेतावनियों पर विचार करता हूं लेकिन अन्य सी ++ डेवलपर्स से निर्णय लेता हूं, मुझे लगता है कि मैं अल्पसंख्यक हूं।

उत्तर

1

मैं कहूंगा "नरक हाँ!"। साधारण तथ्य यह है कि यह असफल रहा है? हाँ! फिर यह लॉग होना चाहिए। असफल परीक्षण पास करने की अनुमति देकर आप अपने परीक्षण से काफी समझौता कर रहे हैं।

एक चीज जो मुझे व्यक्तिगत रूप से चिंता करेगी, यह है कि अगर मैंने ऐसा किया, और बस के नीचे चला गया, तो "पैच" हटाया नहीं जा सकता है, जिसका मतलब है कि "बगफिक्स" बग के बाद भी बग हो सकता है।

उस में छोड़ दो, अपनी परियोजना नोट अद्यतन करते हैं, शायद यह भी (यदि संभव हो) गंभीरता नीचे ले जाने के लिए, लेकिन निश्चित रूप से न बात यह है कि टूटी हुई बातों के लिए जाँच कर रहा है तोड़;)

5

यदि आप इसका परीक्षण करना बंद कर देते हैं, तो यह कैसे तय किया जा रहा है कि यह कब तय किया गया है, और सबसे महत्वपूर्ण बात यह है कि आप कैसे जान जाएंगे कि यह फिर से टूट गया है या नहीं? मैं परीक्षण करने के खिलाफ हूं, क्योंकि आप इसे फिर से जोड़ना भूल जाते हैं।

1

यह एक विफलता रहना चाहिए यदि यह नहीं है क्या उम्मीद की जा रही थी।

अन्यथा, इसे अनदेखा करना बहुत आसान है। चीजों को सरल रखें - यह काम करता है या नहीं। असफल या सफलता :)

- केविन फेयरचाइल्ड

0

एक असफल परीक्षण के बाद एक तरह से झंझरी है। टूटी हुई कोड और अधूरा कोड के बीच एक अंतर है, और क्या परीक्षण तुरंत संबोधित किया जाना चाहिए इस पर निर्भर करता है कि इस असफल परीक्षण का कौन सा परिस्थिति सामने आता है।

यदि यह टूटा हुआ है, तो आपको इसे जल्द से जल्द ठीक करना चाहिए। यदि यह अधूरा है, तो आपके पास समय होने पर इसका सामना करें।

किसी भी मामले में, स्पष्ट रूप से आप इसके साथ बुरी तरह से व्यवहार कर सकते हैं (अब के लिए), इसलिए जब तक समस्या लॉग हो, तब तक आप इसे ठीक करने के लिए समय तक नहीं कर सकते हैं।

1

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

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

4

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

1

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

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

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

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

संबंधित मुद्दे