मैं ऐसा वातावरण कैसे बनाऊं जहां परीक्षण को प्राथमिकता के रूप में देखा जाए?


22

मैं एक मध्यम आकार की कंपनी में सॉफ्टवेयर इंजीनियर हूं। हमारे पास TeamCity पर काफी मजबूत परीक्षण मंच चल रहा है। यह हर चेकइन पर यूनिट टेस्ट करता है, और एक दैनिक यूनिट टेस्ट / बीवीटी रन करता है।

समस्या यह है - हमारे पास टूटी हुई यूनिट परीक्षणों का एक बड़ा सौदा है।

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

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

मैंने रिश्वत (पके हुए माल!) की कोशिश की है, बस सादा पूछ रहा है, और टीम के लिए बोल रहा है। हर कोई कहता है कि यह एक अच्छा विचार है, लेकिन मैं इसके बारे में कुछ भी कर रहा हूं।

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

यदि यह पूछने के लिए एक व्यक्तिपरक तरीका है, तो मुझे किसी भी सुझाव को स्वीकार करने में खुशी होगी।


2
निर्माण को तोड़ने वाले व्यक्ति के उद्देश्य से स्वचालित nerf बंदूक ...
शाफ़्ट 14:00

हमारे पास वास्तव में एक स्वचालित nerf बंदूक है ... लेकिन निर्माण टूट नहीं रहा है, बस इकाई परीक्षण :)
कोडमैन

7
यूनिट परीक्षणों को तोड़कर निर्माण को तोड़ना चाहिए। ;)
जीरोने वेनवेल

2
@ @: खरीदें-इन महत्वपूर्ण है, लेकिन आप किसी मुद्दे को हल करने के लिए खरीद-इन नहीं कर सकते हैं जब तक कि लोग वास्तव में इस मुद्दे के बारे में जागरूक न हों । इस मामले में शुरू में टीम लीड और मैनेजरों से ही खरीद की जरूरत होती है । डेवलपर खरीद-में बाद में आ सकता है और आम तौर पर, स्वाभाविक रूप से, जब व्यक्तिगत डेवलपर्स को अपनी गलतियों के लिए भुगतान करने के लिए बिल्ड सिस्टम की स्थापना की जाती है।
हारून

2
यदि डोनट्स विफल रहे, तो आप टोस्ट हैं। :-)
रॉस पैटरसन

जवाबों:


28

यह सुनिश्चित करें कि परीक्षण को ठीक किए बिना वास्तव में कुछ भी जारी करना असंभव है।

  1. किसी भी परीक्षण में विफल होने पर बिल्ड को विफल करें।
  2. किसी भी परीक्षण को नजरअंदाज किए जाने पर बिल्ड को विफल करें।
  3. बिल्ड को विफल करें यदि परीक्षण कवरेज एक निश्चित स्तर से नीचे चला जाता है (इसलिए लोग इसके चारों ओर काम करने के लिए परीक्षण को हटा नहीं सकते हैं)।
  4. अपने रिलीज़ बिल्ड को करने के लिए CI सर्वर का उपयोग करें, और केवल UAT / स्टेजिंग / प्रोडक्शन / जो भी हो, को बढ़ावा देने के लिए सर्वर के बिल्ड ड्रॉप से ​​बिल्ड की अनुमति दें।

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

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

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

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

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


1
जबकि आपके सभी तकनीकी संकेत उपयोगी हैं, मुझे लगता है कि आपके उत्तर का सबसे मूल्यवान हिस्सा यह है कि "यह आपकी सभी संस्कृति है" क्योंकि एक अनुशासन समस्या से अधिक, यह परीक्षण की कथित उपयोगिता की समस्या है। मैं इसके बजाय एक PPS
user40989

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

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

10

यूनिट परीक्षण जो विफल होते हैं, वह समस्या नहीं है। वे एक लक्षण हैं

असली समस्या संस्कृति में है। आपको धीरे से चलने की जरूरत है: यहां ड्रेगन रहें । आप अपने आप से संस्कृति को बदल नहीं सकते हैं, और अंत में चीख़ का पहिया होगा, जिससे आप एक प्रकोप बना सकते हैं। सचमुच।

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

कोई सरल उत्तर नहीं है।


स्क्वैकी व्हील होने के कारण मुझे टीम लीड मिली। शायद आपकी चीख़ में कुछ गड़बड़ थी? सभी गंभीरता में, हालांकि, यह देव टीम के साथ नहीं बल्कि कंपनी के प्रबंधन के साथ एक बहुत ही अलग संस्कृति समस्या के लिए बोलती है । यदि जलती हुई आग के लिए प्रबंधन की प्रतिक्रिया धूप के चश्मे पर डालनी है, तो बस वहां से नरक को प्राप्त करें। लेकिन अगर आप वास्तव में एक देव की दुकान हैं , तो एक उद्यम के रूप में आईटी विभाग एक लागत केंद्र से सॉफ्टवेयर का मंथन कर रहा है, यह काफी संभावना है कि प्रबंधक इस बात की परवाह करते हैं कि आप कितनी बार और सुरक्षित रूप से बाजार में जारी कर सकते हैं।
१४:१३ को १२:०३
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.