"पासिंग / ब्रोकन बिल्ड" संकेतक के लिए वैकल्पिक?


14

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

मुझे इसके साथ कुछ समस्याएं हैं:

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

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

एक ही कंपनी में जाता है। यदि आप TDD के साथ काम करते हैं, तो आप परीक्षण नहीं लिख सकते, कमिट कर सकते हैं और फिर परीक्षण को पूरा करने वाले तर्क कोड लिख सकते हैं। इसका मतलब है कि अगर मैंने अपने लैपटॉप पर 4-5 टेस्ट लिखे हैं, तो मैं छुट्टियों पर जाने से पहले उन्हें कमिट नहीं कर सकता। कोई भी मेरा काम वापस नहीं ले सकता। मैं उन्हें उदाहरण के लिए ईमेल द्वारा भेजने के अलावा किसी सहकर्मी के साथ "साझा" भी नहीं कर सकता। यह परीक्षण लिखने वाले एक व्यक्ति के साथ काम करने से भी रोकता है, अन्य एक मॉडल लिख रहा है।

यह सब कहने के लिए, क्या मैं निर्माण प्रक्रिया / निरंतर एकीकरण का गलत उपयोग / गलतफहमी कर रहा हूं? यह मुझे लगता है कि "गुजर" / "नहीं गुजरना" एक बहुत ही संकीर्ण संकेतक है।

क्या निरंतर एकीकरण और टीडीडी को संगत बनाने का एक तरीका है?

हो सकता है कि "नए परीक्षणों" (जो विफल हो सकते हैं) और "प्रतिगमन परीक्षण" (जो कि वे काम नहीं करते थे, क्योंकि उन्हें काम नहीं करना चाहिए) को अलग करने के लिए एक मानक समाधान / अभ्यास है ?


1
एक संकेतक है जो दिखाता है कि अंतिम घंटे (या तो) में विफल परीक्षणों की संख्या बढ़ गई (लाल) या नीचे (हरा)।
जोआचिम सॉयर

2
मैं कोई TDD / ALM विशेषज्ञ नहीं हूं (इसलिए उत्तर के बजाय टिप्पणी), लेकिन मुझे लगता है कि आपकी समस्या निजी शाखाओं / सुविधा शाखाओं के साथ हल हो सकती है। क्या आप फ़ीचर A पर काम कर रहे हैं? इसे शाखा दें, शाखा पर काम करें (सहकर्मियों के साथ), और एक बार जब आप कर लें - इसे लगातार एकीकृत ट्रंक में मर्ज करें।
अवनर शाहर-कश्तन

@JoachimSauer हाँ, लेकिन क्या ऐसा मीट्रिक मानकीकृत / किसी बड़ी परियोजना में उपयोग किया जाता है? मैं यह समझने की कोशिश कर रहा हूं कि अधिकांश परियोजनाएं (और सीआई उपकरण) उस तरह से क्यों काम करती हैं।
14th पर Matthieu Napoli

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

@MadKeithV बिल्कुल
Matthieu Napoli

जवाबों:


12

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

मानक प्रोटोकॉल यह है कि आप पूर्ण या अधूरे काम के लिए भी परिवर्तन कर सकते हैं, इसलिए जब तक यह संकलित हो जाए ताकि प्रोग्रामर अपने कोड को हर दिन अपडेट कर सकें यदि आवश्यक हो।

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

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

फिर, मैं पर्याप्त महत्व पर जोर नहीं दे सकता। कभी भी ट्रंक करने के लिए टूटे हुए कोड न करें! आपके योगदान अन्य प्रोग्रामर के काम को प्रभावित नहीं कर सकते हैं।

संपादित करें

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

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


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

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

the build would always have failing testsयकीनन! लेकिन क्या यह इतनी बुरी बात है? हमारा एकमात्र मीट्रिक "बिल्ड टूट गया है या नहीं" है, लेकिन आपका कोड ज्ञात बग से भरा हो सकता है , इसलिए इसका कोई मतलब नहीं है सिवाय इसके कि कोई प्रतिगमन नहीं है। एक आदर्श दुनिया में, हर ट्रैकर मुद्दे का एक परीक्षण होगा (पुनरावृत्ति फिक्सिंग की तुलना में आसान है)। इसलिए उल्टा यह देखना होगा कि सभी परीक्षणों में से 35 परीक्षण / 70% उत्तीर्ण कर रहे हैं, कि शाखा-ए इसे 40 परीक्षणों (80%) को बिना किसी प्रतिगमन के सुधारता है, और यह कि शाखा-बी में प्रतिगमन हैं। आज आप केवल यह कह सकते हैं कि मास्टर और ब्रांच-ए ठीक हैं और ब्रांच-बी टूट गया है।
मैथ्यू नेपोली

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

@Earlz बिल्कुल! मैं सोच रहा हूं कि "क्या यह किसी और द्वारा किया गया है? और क्या ऐसे उपकरण हैं जो समर्थन करते हैं (CI और यूनिट परीक्षण पुस्तकालयों?" वैसे भी विफल रहता हूं और मुझे कोई अंतर नहीं दिखाई देगा कि कौन से परीक्षण विफल रहे, और इसलिए यह उपयोगी नहीं होगा: /
मैथ्यू नेपोली

4

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

बस असफल परीक्षणों की संख्या को ट्रैक करना अपर्याप्त है: आप एक परीक्षण को ठीक कर सकते हैं, और दूसरे को तोड़ सकते हैं। और अगर आप छुट्टी पर हैं, तो यह दूसरों को स्पष्ट नहीं होगा कि वे असफल निर्माण को देख रहे हैं।

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

शाखा के समीक्षक केवल अपनी शाखा को मर्ज करें यदि यह सभी परीक्षण पास करता है। (और अधिक दृढ़ता से: समीक्षक के पास केवल आपकी शाखा को मर्ज करने में सक्षम है यदि शाखा को मास्टर में विलय करने का परिणाम सभी परीक्षण पास करता है!)


2
Simply tracking the number of failing tests is insufficientयह एकमात्र संभव मीट्रिक नहीं है। उदाहरण के लिए Branch-A improves it to 40 tests (80% passing) with no regression:। कोई प्रतिगमन का मतलब पहले से गुजरने वाले परीक्षण हमेशा से गुजरते हैं। संक्षेप में, एक परीक्षण को तब तक विफल होने दिया जाएगा जब तक कि वह कभी पास न हो। यह मुझे लगता है कि हम मुख्य शाखाओं में विफल परीक्षणों की मनाही करने के लिए बाध्य होकर अच्छी चीजों को याद कर रहे हैं। (निश्चित रूप से इसके लिए अलग तरीके से काम करने वाले साधनों की आवश्यकता होगी: इकाई परीक्षण, CI, ...)
मैथ्यू नपोली

मैं अभी भी अपनी बात पर कायम हूं: मास्टर हमेशा हरा होना चाहिए , क्योंकि यह स्पष्ट और स्पष्ट है। हर तरह से मार्कर परीक्षण विफल हो रहे हैं ... एक सुविधा शाखा में। सीआई लोगों को बकाया बगों की याद दिलाते रहें।
फ्रैंक शीयर

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

NUnit की अनदेखी परीक्षण की अवधारणा है। यह एक विकल्प हो सकता है: वे नहीं चलते हैं इसलिए वे विफल नहीं होते हैं, लेकिन उन्हें अभी भी नजरअंदाज किया जा रहा है।
फ्रैंक शियरार

2

निरंतर एकीकरण के बारे में अच्छी तरह से समझा और स्वीकार किए गए प्रथाओं को फेंकने के बिना आपकी समस्याओं को हल करने के तरीके हैं।

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

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

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


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

1

मुझे लगता है कि आपकी मूलभूत समस्या यह है कि आप बिल्ड के भाग के रूप में परीक्षण परिणामों सहित हैं। हालांकि स्पष्ट रूप से कुछ लोग आपसे सहमत हैं, अन्य नहीं। बिल्ड को तोड़ना तब होता है जब वह निर्माण नहीं करता है। नहीं जब यह त्रुटियों के बिना निर्माण नहीं करता है।

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

टीडीडी, एक तरह से, संभवतः बग्स के साथ जहाज बनाना आसान बनाता है - क्योंकि आपको इस बात की बेहतर समझ है कि दोष क्या है। यदि आप ठीक से परिभाषित कर सकते हैं कि बग का क्या कारण है, तो आपके पास इसे ठीक करने की लागत को तौलने का एक उत्कृष्ट आधार है।

मेरी सिफारिश एक ऐसी परियोजना को खोजने की है जो हरे रंग के कुछ लाल नहीं है।


1
 > a common best practice is to have all the tests passing (green) at all times.

मुझे लगता है कि सभी परीक्षण विफल नहीं हुए (लाल नहीं)।

इस थोड़ी अलग परिभाषा के साथ आप उन परीक्षणों को भी परिभाषित कर सकते हैं जो हैं

  • अभी तक लागू नहीं किया गया है (यदि कोई NotImplementedException है तो नूनिट में ग्रे)
  • असफल होने के लिए जाना जाता है = परीक्षण को नजरअंदाज (पीले) के रूप में चिह्नित / व्याख्या करके "करने के लिए एक की आवश्यकता है"

मैं आपको यह बताता हूं कि भंडार में आपका निरंतर निर्माण टूटा नहीं है और इसलिए वैध है।


0

आप दो अलग-अलग CI निर्माण "अवधारणाओं" पर विचार कर सकते हैं।

  1. नियमित सीआई बनाता है। नियमित सीआई बिल्ड को केवल उन परीक्षणों को संकलित और चलाना चाहिए जिनके लिए कोड उन्हें पास करने के लिए लिखा गया है, ताकि सीआई की परीक्षा पास / असफल होने की रिपोर्ट कोड के पहले स्वीकार किए गए राज्य के खिलाफ प्रतिगमन का एक स्पष्ट, स्पष्ट संकेतक हो।
  2. एक "भविष्य" सीआई का निर्माण। यह निर्माण करता है और केवल उन परीक्षणों को चलाता है जिनके लिए कोई कोड विशेष रूप से उन्हें पास करने के लिए नहीं लिखा गया है। ऐसे परीक्षण के कई कारण हो सकते हैं:

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

    • नई आवश्यक कार्यक्षमता के लिए परीक्षण जोड़े गए हैं जो अभी तक लागू नहीं किए गए हैं।

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

जैसा कि "मानक" CI में, नियमित विकास शासन में टीम केवल नियमित बिल्ड के दैनिक निर्माण परिणामों को देख रही होगी।

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

अंत में, यदि किसी टीम के सदस्य के हाथ में अतिरिक्त समय है, तो वे "भविष्य" से किसी एक मुद्दे को ठीक करने पर एक नज़र डाल सकते हैं, और यदि वे इसे "नियमित" पर स्थानांतरित करते हैं (समस्या ट्रैकर स्थिति को अपडेट करते समय)।


0

और मुझे विश्वास नहीं है कि आपके रेपो में विफल परीक्षण होना बुरी बात है, यह आपके ट्रैकर में खुले मुद्दों के होने जैसा है। ये सिर्फ तय होने की प्रतीक्षा की चीजें हैं।

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

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

जिस तरह से अधिकांश टूल एड्रेस यह है कि 'ग्रीन / पासिंग' यह दर्शाता है कि अपेक्षित परिणाम क्या है - यह नहीं कि कोड काम कर रहा है:

  • फिटनेस में अपेक्षित विफलता की अवधारणा है।
  • JUnit ने @Ignored / @Test (उम्मीद =)
  • खीरे में 'अभी तक लागू नहीं' (या इसे जिसे भी कहा जाता है) का दर्जा है

वे अपने स्वयं के मुद्दों के साथ आते हैं (आप 'हाँ के बीच अंतर कैसे करते हैं, हम जानते हैं कि यह टूट गया है, इस पर काम करना' और 'सही व्यवहार एक अपवाद है') - लेकिन वे मदद करते हैं।


0

मैं स्किप किए गए परीक्षणों का उपयोग करता हूं।

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

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