निरंतर एकीकरण से पहले कितने डेवलपर्स हमारे लिए प्रभावी हो जाते हैं?


34

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

किस बिंदु पर निरंतर एकीकरण स्वयं के लिए भुगतान करता है?

संपादित करें: ये मेरे निष्कर्ष थे

सेट-अप क्रूज़कंट्रोल.नेट नेंट के साथ था, जो वीएसएस या टीएफएस से पढ़ रहा था।

यहां विफलता के कुछ कारण हैं, जिनका सेटअप से कोई लेना-देना नहीं है:

जांच की लागत : यह जांचने में बिताया गया समय कि क्या लाल बत्ती कोड, डेटा गुणवत्ता, या किसी अन्य स्रोत जैसे कि इन्फ्रास्ट्रक्चर समस्या (उदाहरण के लिए, नेटवर्क समस्या, स्रोत नियंत्रण से पढ़ने का समय, थर्ड पार्टी सर्वर) में एक वास्तविक तार्किक असंगति के कारण है नीचे है, आदि, आदि)

बुनियादी ढांचे पर राजनीतिक लागत : मैंने टेस्ट रन में प्रत्येक विधि के लिए "बुनियादी ढांचे" की जांच करने पर विचार किया। बिल्ड सर्वर को बदलने के अलावा मेरे पास टाइमआउट का कोई हल नहीं था। रास्ते में रेड टेप मिला और कोई सर्वर रिप्लेसमेंट नहीं था।

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

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

बीस्पोक रिलीज़ की लागत : नेंट स्क्रिप्ट केवल इतनी दूर जाती हैं। वे कहते हैं, CMS निर्भर EPIServer, CMS, या किसी भी UI उन्मुख डेटाबेस परिनियोजन के लिए उपयोगी नहीं हैं।

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

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

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

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

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


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

3
@Carnotaurus, रिमोट गिट रिपॉजिटरी के स्थानीय क्लोन को स्रोत नियंत्रण से टाइमआउट से छुटकारा मिलता है। नेटवर्क मुद्दों - उत्पाद के निर्माण के लिए? अब, वास्तव में ...

3
डेटा गुणवत्ता या अवसंरचना के कारण @ कार्नोटॉरस लाल बत्ती फ्रैगाइल टेस्ट का एक कोडमेल है । इसे भी देखें : मैनेजिंग-ऑफ-मेंटेनेंस-बोझ-ऑफ-यूनिट-टेस्ट
k3b

1
जितना अधिक परीक्षण बाहरी पहलुओं पर निर्भर करता है उतना ही नाजुक होता है। उदाहरण: यदि कोई परीक्षण केवल तभी सफल होता है जब ग्राहक XY डेटाबेस में परीक्षण करता है यदि नाजुक जब तक कि परीक्षण-सेटअप यह सुनिश्चित नहीं कर देता है कि डेटा आवश्यक होने पर यह शर्त केवल डेटा डालने से मौजूद है।
k3b

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

जवाबों:


43

एक घर में एक आग अलार्म स्थापित करने के लिए एक सीआई-इंजन स्थापित करना एक समान है।

मेरे दिमाग में लाभ कई डेवलपर्स के साथ नहीं, बल्कि एक बड़े कोड बेस के साथ है। सीआई-इंजन सक्रिय रूप से सभी उबाऊ काम करता है जो आप खुद नहीं करना चाहते हैं, और इसे हर बार करते हैं।

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

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

यह भी गुणवत्ता आश्वासन का एक हिस्सा है।


EDIT: उपरोक्त लिखने के बाद, मुझे जावा के लिए मावेन बिल्ड टूल के साथ अनुभव हुआ है। अनिवार्य रूप से यह हमें परियोजना के अंदर संपूर्ण CI-विन्यास को रखने की अनुमति देता है (pom.xml के साथ) यह CI-स्थापना को बनाए रखने और / या किसी अन्य CI- इंजन को स्थानांतरित करने के लिए बहुत सरल बनाता है।


1
@ कार्नोरस, उस स्थिति में क्षणिक त्रुटियों के लिए भी लाल बत्ती का उपयोग किया जा रहा है। आपके द्वारा उपयोग किए जा रहे CI इंजन में एक सीमा की तरह लगता है।

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

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

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

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

33

यह कितने डेवलपर्स नहीं है, लेकिन 1 से n (समावेशी) तक पहुंचने के लिए कितने कदम लगते हैं, जहां 1 और n हैं ...

1: कोड
और
n की जाँच कर रहा है: इंस्टॉल करने योग्य \ परिनियोजन पैकेज होने

यदि n <2 आपको शायद CI की आवश्यकता नहीं है
अन्यथा, आपको CI की आवश्यकता है

अपडेट
अपने निष्कर्षों को पढ़ने से मैं केवल यह निष्कर्ष निकाल सकता हूं कि आपने गलत दिशा से और गलत कारणों से सीआई से संपर्क किया था।


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

2
@ मर्फ़: हाँ, और यह 1) की तरह थोड़े फायदे लाता है) यह जानकर कि आपकी रिपॉजिटरी में क्या होगा, 2) सिंगल क्लिक बिल्ड, 3) एक संस्करण को एक क्षण के नोटिस पर जारी करने में सक्षम होने और बहुत अधिक
बाइनरी वॉरियर

इसलिए यह कहना उचित है कि यह जारी किए जाने की जटिलता पर निर्भर करता है, इसकी परतों द्वारा तैनाती के लिए अलग-अलग परतों को "परीक्षण" करने में सक्षम होने के रूप में मापा जाता है?
कार्नेकोड

1
@ करनोटॉरस: सॉरी मेट, लेकिन मुझे यकीन नहीं है कि मुझे पता है कि तुम क्या कहना चाह रहे हो। CI का परीक्षण से कोई लेना-देना नहीं है। हां, आप निर्माण के भाग के रूप में इकाई परीक्षण चला सकते हैं और करना चाहिए, लेकिन वे उस चीज पर निर्भर नहीं होना चाहिए जो परीक्षण के भाग के रूप में सेटअप नहीं है। हालाँकि CI सहायता परीक्षण करता है। सीआई के कई - कई लाभों में से एक यह है कि यह एक क्यूए टीम को तुरंत और अनावश्यक रूप से नए कोड में बदलाव करने की अनुमति देता है। CI = तुरंत रिलीज करने की क्षमता
बाइनरी वॉरियर

1
@ BinaryWorrier - मुझे लगता है कि चरण 1 कोड में जाँच कर रहा है;)

10

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

कुछ CI सिस्टम स्थापित करने के लिए काफी आसान हैं, इसलिए ओवरहेड वास्तव में इतना बड़ा नहीं है। उदाहरण के लिए जेनकिंस या हडसन का प्रयास करें।


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

4

जैसा कि आप कहते हैं कि इसे स्थापित करने और इसे चालू रखने की ओवरहेड लागत है।

लेकिन सवाल यह भी है कि ब्रेक इवन पॉइंट भी आपकी टीम में कितने लोगों का कार्य है, बल्कि आपके प्रोजेक्ट की लंबाई का कार्य नहीं है।

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


परियोजना की लंबाई (परियोजना का आकार) आपके लिए CI महत्वपूर्ण है? मैंने झूठे अलार्म को बहुत महंगा पाया है।
कार्नेकोड

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

हां, यह सिद्धांत है
कार्नेकोड 16

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

3

मैं इस सप्ताह जेनकींस की स्थापना कर रहा हूँ। मैंने इसे अपने Git स्रोत नियंत्रण के साथ एकीकृत किया ताकि यह हर प्रतिबद्ध पर एक निर्माण को ट्रिगर करे। मैंने बिल्ड में यूनिट परीक्षणों को एकीकृत किया। मैंने FxCop और StyleCop उल्लंघनों के रूप में स्थिर विश्लेषण को एकीकृत किया।

अब हर बार जब मैं जांच करता हूं, तो यह मेरे सभी कोड की जांच करता है, इसे बनाता है, सभी विधानसभाओं में संस्करण संख्या बढ़ाता है, इसका परीक्षण करता है, FxCop और StyleCop उल्लंघन के लिए इसका विश्लेषण करता है, बिल्ड को संग्रहीत करता है और परिणामों को कई ग्राफ़ में रिकॉर्ड करता है। मेरे पास परीक्षण के परिणामों और उल्लंघनों के समय की दृश्यता है।

ऐसा करने से स्क्रैच आने में एक घंटा लगता है (हो सकता है कि Google के साथ एक दिन अगर आपने इसे पहले नहीं किया है)। यह कुछ भी नहीं लागत क्योंकि सभी उपकरण मुफ्त में उपलब्ध हैं।

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

इसलिए एकमात्र ऐसा दृश्य जो मैं देख सकता हूं कि CI का मूल्य नहीं है जबकि या तो एक परियोजना के लिए है जो एक या दो दिन लेगी और फिर कभी भी संशोधित नहीं होगी, या एक भाषा में जहां कोई मौजूदा / मुफ्त उपकरण उपलब्ध नहीं हैं और उन्हें प्राप्त करने की लागत है काम के लिए असंगत है।


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

1
इसके लायक होने के लिए, मुझे बिना किसी परीक्षण के सीआई सर्वर चलाने से काफी फायदा हुआ - सिर्फ स्वच्छ बिल्ड में विश्वास और तैनाती पैकेज की उपलब्धता से।
मर्फ़

1

यदि आप प्रत्येक परिवर्तन के बाद अपनी परियोजना के सभी पहलुओं को सत्यापित कर सकते हैं, तो आपको CI की आवश्यकता नहीं है।

अन्य सभी मामलों में, यह एक शुद्ध जीत है।


मुझे लगता है कि यह वह जगह है जहां से मैं आ रहा हूं। यह बहुत सस्ता है।
कार्नेकोड

इस मामले में सत्यापन से आपका क्या अभिप्राय है? यदि यह स्वचालित है, तो जितनी बार संभव हो, होता है और मानसिक स्लिप्स और ओवरसाइट्स की पहचान करने में मदद करता है, तो मैं इसके लिए हूं। :-)
विलियम पायने

1

ओवरहेड न्यूनतम है। मैं एक आदमी परियोजनाओं के लिए कहूंगा कि यह उपयोगी होगा। एक बार जब आप दो तक पहुँच जाते हैं तो यह अमूल्य है।

मैं मानता हूं कि एक आदमी परियोजनाओं के लिए यदि आपके पास "एक कदम का निर्माण / सत्यापन" है, तो आप निरंतर एकीकरण के साथ ठीक हो सकते हैं, लेकिन उन मामलों में आपने सीआई को स्थापित करने के लिए सबसे अधिक मेहनत की है, इसलिए बस डाल सकते हैं यह एक औपचारिक प्रणाली में (CC, हडसन, टीमसिटी आदि)।


आप सीआई के बिना मतलब है?
कार्नीकोड

1

जब सीआई अपने लिए भुगतान करता है, का सवाल, एक नई परियोजना पर जवाब देने के लिए एक कठिन है।

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

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

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


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

नहीं, यह विशिष्ट नहीं है।
मात्रा_देव

मैंने ज्यादा
काउंटरप्रूफ

यदि आप गेरकिन जैसी प्राकृतिक भाषा DSL में एकीकरण / स्वीकृति परीक्षण लिखते हैं, तो आप स्वचालित परीक्षण को मैन्युअल रूप से अनुवाद कर सकते हैं। इसलिए मैं इसे एक समस्या के रूप में नहीं देखता।
माइक कॉर्नेल

@ कार्नोरस - मुझे लगता है कि यह विशिष्ट है। मैंने इसे दो बार भी देखा है। यूआई स्वचालित परीक्षण कठिन हैं।
रॉकलैन

1

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


मुझे सिस्टम-स्तरीय UI परीक्षणों के बारे में थोड़ा पसंद है। संदिग्ध गुणवत्ता और कवरेज की इकाई परीक्षणों के एक कोहरे में बहुत सारे परीक्षण खो जाते हैं।
कारनेकोड

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

... इसलिए जो लाभ आपको नास्टिएस्ट कबाड़ को फेंकने से मिलता है जो आप शीर्ष स्तर पर सिस्टम में पा सकते हैं और देखते हैं कि क्या होता है ... :-)
विलियम पायने

1
+1 - पूरी तरह से सहमत हैं। एक प्रणाली के कुछ हिस्से सिर्फ इकाई परीक्षण योग्य नहीं हैं (जैसे कि डेटाबेस में किनारों जैसे)। निश्चित रूप से आप db का मज़ाक उड़ा सकते हैं, लेकिन यह उस कोड को छोड़ देता है जो db के साथ बात करता है। कुछ बिंदु पर आपको कुछ वास्तविक विश्व परीक्षण लिखने की आवश्यकता होती है जो आपके सिस्टम को एकीकृत करते हैं और अन्य प्रणालियों से बात करते हैं। जब आप ऐसा करते हैं, तो आपको हमेशा ऐसे कीड़े मिलते हैं जो आप इकाई परीक्षण और आरामदायक रूपरेखा (मन की तरह SQL स्प्रिंग्स के लिए LINQ) की आरामदायक स्वच्छ दुनिया में चूक गए।

वास्तव में, मैंने हाल ही में फज
विलियम पेने

0

टीम के आकार की परवाह किए बिना हमेशा इसका उपयोग करें। अगर यह सिर्फ उदाहरण के लिए है, जो जानता है, आप अपने लैपटॉप से ​​स्टारबक्स पर कोडिंग कर रहे हैं तो घर पर अपने बीफियर सिस्टम से जारी रख सकते हैं?

ओवरहेड वास्तव में उतना बुरा नहीं है।


0

एक। हां, एक निरंतर एकीकरण का उपयोग करने के लिए पर्याप्त है।


0

यह कितने डेवलपर्स की बात नहीं है, लेकिन

ए। आप ऑटोमेशन का उपयोग करके कितना समय बचाते हैं और कितनी बार।

  • एकीकरण के बाद निर्माण पर समय की बचत, स्वचालित परीक्षण चलाने और सेटअप * चेक-इन की आवृत्ति = समय की बचत हुई।

ख। आपके पास कितने संस्करण / शाखाएँ / उत्पाद हैं।

  • यदि आपके पास दो अलग-अलग शाखाओं पर काम करने वाला एक डेवलपर है, तो बचाया गया समय दोगुना हो जाता है, क्योंकि प्रत्येक शाखा को भवन, परीक्षण और पैकेजिंग की आवश्यकता होगी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.