विकास गतिविधियों के दौरान समय पर इकाई परीक्षण बनाने के साथ-साथ रखरखाव गतिविधियों में खर्च होने वाले समय का क्या प्रभाव होता है?


24

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

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

विकास के समय और लागत पर इकाई परीक्षणों के प्रभाव में मेरी दिलचस्पी है:

  • विकास प्रक्रिया के भाग के रूप में इकाई परीक्षण लिखने में कितना समय लगेगा?
  • अच्छा यूनिट परीक्षण होने से रखरखाव गतिविधियों (परीक्षण और डिबगिंग) में कितना समय बचा रहेगा?

जवाबों:


25

क्या केवल कोडिंग की तुलना में विकास के दौरान इकाई परीक्षण बनाते समय अनुप्रयोगों को विकसित करने में कितना समय लगेगा, क्या कोई आंकड़े उपलब्ध हैं?

इस बारे में कुछ बहुत ही रोचक शोध है। निम्नलिखित श्वेतपत्र पढ़ें:

परीक्षण संचालित विकास के माध्यम से गुणवत्ता में सुधार: चार औद्योगिक टीमों के परिणाम और अनुभव

इसके एक लेखक, नाची नागप्पन के श्वेतपत्र और अन्य शोध , यहां चर्चा की गई है: http://research.microsoft.com/en-us/news/features/nagappan-100609.aspx

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

नागप्पन कहते हैं, "12 महीनों के विकास चक्र में, 35 प्रतिशत एक और चार महीने है, जो बहुत बड़ा है।" “हालांकि, ट्रेडऑफ़ यह है कि आप पोस्ट-रिलीज़ रखरखाव लागत को काफी कम कर देते हैं, क्योंकि कोड की गुणवत्ता इतनी बेहतर है। फिर, ये ऐसे निर्णय हैं जिन्हें प्रबंधकों को करना है - उन्हें हिट कहां लेना चाहिए? लेकिन अब, उन्होंने वास्तव में उन निर्णय लेने के लिए डेटा निर्धारित किया है। ”

इसके अतिरिक्त, जेसन गोर्मन ने इस साल के सॉफ्टवेयर शिल्प कौशल सम्मेलन के लिए इस तरह के एक प्रयोग का प्रस्ताव दिया है । वह TDD और गैर-TDD दृष्टिकोण का उपयोग करके एक ही एप्लिकेशन बनाने का प्रयोग कर रहा है और उसने हाल ही में अपने परिणामों के बारे में ब्लॉग किया है :

3 पुनरावृत्तियों पर, TDD के बिना काटा पूरा करने के लिए लिया गया औसत समय 28 मी 40 था। टीडीडी के साथ औसत समय 25 मीटर 27 था। टीडीडी के बिना, मैंने औसतन 5.7 पास किए (स्वीकृति परीक्षण में वितरित)। टीडीडी के साथ, मैंने औसतन 1.3 पास किए (दो प्रयासों में, वे पहली बार पास हुए, एक में इसे 2 पास हुए।)

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

इस प्रयोग के पूर्ण परिणाम देखना दिलचस्प होगा जब अधिक लोग इसका प्रदर्शन करेंगे।

क्या ऐसे कोई आंकड़े उपलब्ध हैं, जो बताते हैं कि (अच्छे) यूनिट परीक्षण होने पर कितने घंटे रखरखाव कम हो जाता है?

ऊपर के श्वेतपत्र से:

केस स्टडीज के परिणाम बताते हैं कि चार उत्पादों की पूर्व-रिलीज़ दोष घनत्व 40% और 90% के बीच समान परियोजनाओं के सापेक्ष कम हो गई, जो टीडीडी अभ्यास का उपयोग नहीं करते थे।


मुझे यह उत्तर पसंद है। मैं जोड़ूंगा कि भाषा और टेस्ट टूल का टीडीडी समय पर भी बड़ा प्रभाव हो सकता है। NCRC से पहले C # जैसी भाषा के लिए, मैं TDD के लाभों के बारे में इतना उत्साहित नहीं था। NCRUNCH को देखने और उपयोग करने के बाद। मेरे विचार में समानांतर परीक्षण करने की प्रवृत्ति आप कोड ऐसे उपकरणों की प्रभावशीलता में प्रमुख बदलाव है। 2008 में हुए शोध वर्तमान उपकरणों और उनकी प्रभावशीलता को नहीं दर्शा सकते हैं।
फिल सोदि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.