जब उत्पादन में बग पाया जाता है तो क्या मुझे जानबूझकर निर्माण को तोड़ना चाहिए?


410

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

मेरे कई सहयोगियों ने यह कहते हुए असहमति जताई है कि एक असफल इकाई परीक्षण की जांच नहीं की जानी चाहिए। मैं इस दृष्टिकोण के साथ सामान्य TDD प्रथाओं के संदर्भ में सहमत हूं, लेकिन मुझे लगता है कि उत्पादन कीड़े को अलग तरह से संभाला जाना चाहिए - आखिरकार आप क्यों अनुमति देना चाहते हैं ज्ञात दोषों के साथ सफल होने के लिए एक निर्माण?

क्या इस परिदृश्य को संभालने के लिए किसी और की रणनीति साबित हुई है? मैं समझता हूं कि निर्माण को तोड़ना टीम के अन्य सदस्यों के लिए विघटनकारी हो सकता है, लेकिन यह पूरी तरह से इस बात पर निर्भर करता है कि आप शाखाओं का उपयोग कैसे कर रहे हैं।


75
+1; बहुत उत्तेजक सवाल। मैं दोनों पक्षों को देख सकता हूं।
कार्ल मैनस्टर

28
आप "परीक्षण" को शामिल करने के लिए "बिल्ड" शब्द का उपयोग करते हैं, जो एक सार्वभौमिक समझ नहीं है।
जे बज्जुई

19
यदि आपका कर TDD आप फेलिंग टेस्ट लिखेंगे, तो कोड को ठीक करें और फिर चेक-इन करें । इस प्रकार आप टूटे हुए निर्माण से बचें।
आहारबुध

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

जवाबों:


412

हमारी रणनीति है:

एक असफल परीक्षा में जाँच करें, लेकिन इसके साथ एनोटेट करें @Ignore("fails because of Bug #1234")

इस तरह, परीक्षण वहाँ है, लेकिन निर्माण नहीं टूटता है।

बेशक आप बग db में नजरअंदाज किए गए परीक्षण को नोट करते हैं, इसलिए @Ignoreपरीक्षण तय होने के बाद हटा दिया जाता है। यह बग फिक्स के लिए एक आसान चेक के रूप में भी कार्य करता है।

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

बेशक, बग अभी भी तय किया जाना चाहिए। लेकिन फिक्स को शेड्यूल करना एक व्यावसायिक निर्णय है, और इस प्रकार वास्तव में देव की चिंता नहीं है ... मेरे लिए, एक बार बग डीबी में दाखिल होने के बाद, यह अब मेरी समस्या नहीं है, जब तक कि ग्राहक / उत्पाद के मालिक मुझे यह नहीं बताते कि वे इसे तय करना चाहते हैं। ।


150
+1 मुझे लगता है कि आपने "फिक्सिंग एक व्यापार निर्णय है" के साथ नाखून को सिर पर मार दिया - एक डेवलपर के रूप में यह तय करने के लिए मेरा निर्णय कॉल नहीं है कि क्या कोई बग बिल्ड को तोड़ता है।
मत्तीदेवी

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

14
"मेरे लिए, एक बार बग डीबी में एक बार दाखिल होने के बाद, यह अब मेरी समस्या नहीं है" ... +1
जेक बर्गर

20
टोयोटा पर @anon Exept। एक लाइन कार्यकर्ता एक दोष देखता है, फिर andon कॉर्ड को खींचता है और पूरा संयंत्र रुक जाता है और प्रबंधन खत्म हो जाता है और समस्या के ठीक होने तक लाइन को फिर से चालू नहीं किया जाता है। Google Andon कॉर्ड। यह एक नई अवधारणा नहीं है। देखें: startuplessonslearned.com/2008/09/…
क्रिस्टोफर महान

4
@AndresJaanTack: यह निश्चित रूप से आपकी कार्यप्रणाली पर निर्भर करेगा, लेकिन सामान्य तौर पर मैं असहमत होता। कम से कम व्यवसाय सेटिंग में, शेड्यूलिंग कार्य एक व्यावसायिक निर्णय है - और इसमें बग फिक्सिंग भी शामिल है । कभी-कभी, एक नई सुविधा (या एक निश्चित तिथि पर जारी) एक (मामूली) बग को ठीक करने की तुलना में अधिक मूल्यवान हो सकती है - उस स्थिति में बग फिक्स को स्थगित किया जाना चाहिए। "अब बग को ठीक करना" उस स्थिति में अनुचित होगा, क्योंकि यह अधिक महत्वपूर्ण काम में देरी करता है।
20

106

आप एक निर्माण को ज्ञात दोषों के साथ सफल होने की अनुमति क्यों देना चाहेंगे?

क्योंकि कभी-कभी, आपके पास समय की कमी होती है। या बग इतना मामूली है कि यह यूनिट परीक्षण के लिए आवश्यक कुछ दिनों के लिए उत्पाद के शिपमेंट में देरी करने और इसे ठीक करने के लायक नहीं है।

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


मैं आपकी बात देखता हूं, और आम तौर पर मैं सहमत हूं - लेकिन इस मामले में हम एक गंभीर बग के बारे में बात कर रहे हैं जिसने इसे उत्पादन में बनाया है और अंत उपयोगकर्ताओं द्वारा सामना किया गया है: s
मैटडावी

3
मेरे उत्तर का दूसरा पैराग्राफ देखिए।
आर्सेनी मूरज़ेंको

8
मैं समझता हूं, मुझे लगता है कि बिंदु को आपके पहले पैराग्राफ में संक्षेपित किया गया है - यह बग की गंभीरता को आंकने के लिए डेवलपर पर निर्भर नहीं है, या यह शो-स्टॉपर है या नहीं, यह व्यापक व्यवसाय के लिए एक निर्णय है।
मैटवेवी

4
सवाल यह है कि इस बग की प्राथमिकता क्या है? यह एक OMG FIX IT हो सकता है अब यह Yea हो सकता है जो हमें परेशान कर सकता है हमें इसे किसी बिंदु पर ठीक करना चाहिए यह बीच में कुछ हो सकता है। लेकिन सभी कीड़े उस स्पेक्ट्रम पर एक ही जगह पर नहीं टकराएंगे।
ज़ाक्रि के

55

परीक्षण यह सुनिश्चित करने के लिए हैं कि आप (पुनः) समस्याओं का परिचय न दें। असफल परीक्षण की सूची बग ट्रैकिंग सिस्टम का विकल्प नहीं है। पीओवी में कुछ वैधता है कि विफल परीक्षण केवल बग का संकेत नहीं हैं, वे विकास प्रक्रिया की विफलता (लापरवाही से बुरी तरह से पहचानी गई निर्भरता) का भी संकेत हैं।


20
"असफल परीक्षणों की सूची बग ट्रैकिंग सिस्टम का विकल्प नहीं है" +1, एक बहुत अच्छी बात है :)
MattDavey

1
मेरा सुझाव है कि प्रतिगमन इकाई परीक्षण पहले बग के भाग के रूप में कोड आधार दर्ज करें, पहले नहीं।
यरक

6
@ यारेक: प्रतिगमन परीक्षण किसी भी समय कोडबेस में जा सकते हैं, उन्हें केवल बग को ठीक करने तक अनदेखा करने की आवश्यकता होती है। मैं आमतौर पर समस्या का निदान करते समय उन्हें विकसित करता हूं, क्योंकि वे तब डिबगिंग सहायता के रूप में दोगुना हो सकते हैं।
सलके

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

@ArrenP, कभी-कभी अन्य मुद्दे भी होते हैं, लेकिन आइए स्पष्ट हो, लापरवाही ही पहला कारण है जो विराम का निर्माण करती है। यदि आप जानते हैं कि कुछ निर्माण को तोड़ता है, तो इसे क्यों जांचें?
एपीग्रामग्राम

23

"बिल्ड तोड़ो" का अर्थ है किसी निर्माण को सफलतापूर्वक पूरा करने से रोकना । एक असफल परीक्षण ऐसा नहीं करता है। यह एक संकेत है कि बिल्ड में ज्ञात दोष हैं, जो बिल्कुल सही है।

अधिकांश बिल्ड सर्वर समय के साथ परीक्षणों की स्थिति को ट्रैक करते हैं, और एक परीक्षण के लिए एक अलग वर्गीकरण असाइन करेंगे जो असफल हो गया है क्योंकि यह एक प्रतिगमन बनाम जोड़ा गया था (परीक्षण जो गुजरता था और अब नहीं करता है), और संशोधन का भी पता लगाता है जिसमें प्रतिगमन हुआ।


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

2
मैं हमेशा एक असफल परीक्षण पर विचार करता हूं कि बिल्ड विफल हो गया है।
जॉन सॉन्डर्स

@ जॉनसनर्स: लेकिन इसका मतलब यह नहीं है। जैसा कि मैंने अपने जवाब में कहा, इसका मतलब है "निर्माण में ज्ञात दोष हैं"।
बेन वोइगट

1
@ किसने कहा कि कोई टेस्ट नहीं था? तुम कहाँ हो? मेरा मतलब है कि बग को खोजने के बाद मेरा पहला कदम बिल्ड को सफल होने से रोकना नहीं है, बल्कि एक विस्तृत बग रिपोर्ट बनाना है। जब बग को ठीक किया जा रहा है, तो पहले एक असफल इकाई परीक्षण होना चाहिए।
जॉन सॉन्डर्स

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

16

मैं तर्क दूंगा कि फेलिंग टेस्ट को जोड़ा जाना चाहिए, लेकिन स्पष्ट रूप से "असफल परीक्षा" के रूप में नहीं।

जैसा कि @BenVoigt उनके उत्तर में बताते हैं , एक असफल परीक्षा "बिल्ड को तोड़ना" जरूरी नहीं है। मुझे लगता है कि शब्दावली टीम से टीम में भिन्न हो सकती है, लेकिन कोड अभी भी संकलित है और उत्पाद अभी भी असफल परीक्षण के साथ जहाज कर सकता है।

इस स्थिति में आपको खुद से क्या पूछना चाहिए,

क्या परीक्षण पूरा करने के लिए हैं?

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

मेरा दावा है कि परीक्षण व्यावसायिक आवश्यकताओं का प्रतिबिंब होना चाहिए । इसलिए, यदि कोई "बग" पाया गया है जो इंगित करता है कि आवश्यकता ठीक से पूरी नहीं हुई है, तो यह भी एक संकेत है कि परीक्षण ठीक से या पूरी तरह से व्यावसायिक आवश्यकताओं को प्रतिबिंबित नहीं करते हैं।

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

कोड तय करने की प्राथमिकता व्यवसाय द्वारा निर्धारित की जानी है। लेकिन जब तक परीक्षण तय नहीं हो जाते, क्या वह प्राथमिकता वास्तव में निर्धारित की जा सकती है? व्यवसाय को वास्तव में क्या असफल हो रहा है, यह कैसे विफल हो रहा है, और क्यों यह प्राथमिकता पर अपने निर्णय लेने में विफल हो रहा है के ज्ञान से लैस होना चाहिए। परीक्षणों को यह संकेत देना चाहिए।

परीक्षण जो पूरी तरह से पास नहीं है एक बुरी बात नहीं है। यह ज्ञात मुद्दों की एक महान कलाकृति बनाता है प्राथमिकता और तदनुसार नियंत्रित किया जाता है। परीक्षण, जो पूरी तरह से परीक्षण नहीं करते हैं , हालांकि, एक समस्या है। यह परीक्षणों के मूल्य को स्वयं कहता है।

इसे दूसरे तरीके से कहने के लिए ... बिल्ड पहले से ही टूट गया है। आप यह तय कर रहे हैं कि उस तथ्य पर ध्यान दिया जाए या नहीं।


1
आपका दावा गलत है, इकाई परीक्षण आवश्यक रूप से व्यावसायिक आवश्यकताओं के लिए सीधे मैप नहीं करते हैं, जबकि कार्यात्मक या एंड-टू-एंड परीक्षण शायद करते हैं, लेकिन ओपी यूनिट परीक्षणों / टीडीडी के बारे में बात कर रहा था।
जॉन बुकानन

@ जॉनोचन: क्या परीक्षण मान्य करने के लिए हैं, यदि ऐसा नहीं है कि सॉफ्टवेयर वही कर रहा है जो उसे करना चाहिए था? (यह है, कि यह आवश्यकताओं को पूरा करता है।) वहाँ हैं, जैसा कि आप बताते हैं, यूनिट परीक्षणों के बाहर अन्य प्रकार के परीक्षण। लेकिन मैं यूनिट परीक्षणों में मूल्य को देखने में विफल रहा जो यह पुष्टि नहीं करता है कि सॉफ्टवेयर व्यवसाय की जरूरतों को पूरा करता है।
डेविड

1
@ जॉनबचन - उन्होंने यह नहीं कहा कि "परीक्षण व्यवसाय की आवश्यकताओं का प्रतिबिंब हैं", उन्होंने कहा कि "होना चाहिए"। जो सच है, लेकिन बहस का मुद्दा है। आप यह दावा करने में सही हैं कि यह हमेशा ऐसा नहीं होता है - कुछ लोग इकाई परीक्षण लिखते हैं जो व्यावसायिक आवश्यकताओं को पूरा नहीं करते हैं - हालाँकि (मेरी राय में) वे ऐसा करने के लिए गलत हैं। यदि आप यह दावा करना चाहते हैं कि डेविड की बात गलत है, तो आप कुछ ऐसा कह सकते हैं कि आप ऐसा क्यों सोचते हैं।
दाऊद इब्न करीम

13

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


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

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

लेकिन ये यूनिट परीक्षण नहीं होना चाहिए जो निर्माण के दौरान चलेंगे। यदि आपके वातावरण में QA (जैसे Microsoft परीक्षण प्रबंधक) के लिए एक परीक्षण प्रबंधन प्रणाली है, तो निश्चित रूप से, एक या एक से अधिक परीक्षण मामलों को जोड़ा जाना चाहिए और उन्हें बग से जोड़ा जाना चाहिए, लेकिन इससे निर्माण को सफल होने से नहीं रोका जा सकेगा - यह बस एक परीक्षा होगी मामले को बग के सामने से गुजरना पड़ता है जिसे "पूर्ण" माना जाता है।
जॉन सॉन्डर्स

7

एक परीक्षण लिखना जिसे आप जानते हैं कि जब तक बग तय नहीं हो जाता है तब तक यह एक अच्छा विचार है, यह टीडीडी का आधार है।

बिल्ड को तोड़ना एक बुरा विचार है। क्यों? क्योंकि इसका मतलब है कि जब तक यह तय नहीं किया जाता है, तब तक कुछ भी नहीं चल सकता है। यह अनिवार्य रूप से विकास के अन्य सभी पहलुओं को अवरुद्ध करता है।

उदाहरण 1
क्या होगा यदि आपका एप्लिकेशन कई घटकों के साथ अलग-अलग हो? क्या होगा अगर उन घटकों को अन्य टीमों द्वारा अपने स्वयं के रिलीज चक्र के साथ काम किया जाए? कठोर! उन्हें आपके बग फिक्स के लिए इंतजार करना होगा!

उदाहरण 2
क्या होगा अगर पहली बग को ठीक करना मुश्किल है और आप उच्च प्राथमिकता के साथ एक और बग ढूंढते हैं? क्या आप दूसरी बग के लिए भी निर्माण तोड़ते हैं? अब आप तब तक निर्माण नहीं कर सकते जब तक दोनों तय नहीं हो जाते। आपने एक कृत्रिम निर्भरता बनाई है।

कोई तार्किक कारण नहीं है कि एक परीक्षण को विफल करने से एक निर्माण को रोकना चाहिए। यह एक निर्णय है कि देव टीम को (संभवतः प्रबंधन चर्चा के साथ) एक ज्ञात कीड़े के साथ एक बिल्ड जारी करने के पेशेवरों और विपक्षों को तौलना चाहिए। यह सॉफ्टवेयर विकास में बहुत आम है, बहुत सारे प्रमुख सॉफ्टवेयर कम से कम कुछ ज्ञात मुद्दों के साथ जारी किए जाते हैं।


5

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


"जब तक कि न तो लाल और न ही हरे जैसे परीक्षणों को इंगित करने का एक तरीका है" बस रिकॉर्ड के लिए: अधिकांश इकाई परीक्षण ढांचे लाल, हरे और अनदेखे परीक्षणों को अलग करते हैं। कम से कम JUnit और TestNG करते हैं (वे "xx परीक्षण, x विफल, x उपेक्षित") की रिपोर्ट करते हैं।
सालेस्के

@ स्केलेक जो आदर्श होगा, मैं सिर्फ यह सुनिश्चित करना चाहता हूं कि विफलताओं को नजरअंदाज करना स्वचालित रूप से एक सफलता में न बदल जाए
prusswan

वहाँ नहीं हैं YELLOW बनाता है? (रेड / ग्रीन / येलो) हडसन / जेनकिंस में, क्रूज़ कंट्रोल, और अन्य सभी दिग्गज?
वॉरेन पी

@Warren P यह तब काम करता है जब लोग परीक्षणों को सही तरीके से अनदेखा कर देते हैं, लेकिन कुछ हरे रंग का परीक्षण करके अनदेखा कर देते हैं
prusswan

5

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

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

इसके अतिरिक्त, आपकी रिलीज़ नीति के आधार पर, नए अपडेट किए गए यूनिट परीक्षणों की उपस्थिति यह पुष्टि करने में मदद कर सकती है कि किसी डेवलपर ने वास्तव में समस्या को ठीक कर दिया है, बजाय इसे बदलने के [[समस्या या परीक्षण?]], हालांकि यह एन्कोडेड होने पर निर्भर करता है। नई इकाई परीक्षणों में सही आवश्यकताएं।


5

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

आप अपनी टीम को उस मानसिकता में लाने में मदद नहीं करना चाहते।

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


1
आपका परीक्षण सॉफ्टवेयर आपको बताए कि जब कुछ नया टूट गया है, बनाम एक परीक्षण जो पहले विफल हो गया है।
बेन वोइगट

4

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

इसलिए मैं कहूंगा कि इसे लंबित परीक्षण के रूप में लागू करना बेहतर है, और आपकी टीम में यह प्राथमिकता है कि लंबित परीक्षण न हों।


4

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.