2008-09-23 5 views
9

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

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

औपचारिक इकाई परीक्षण करके, मैं बस के बारे में बात कर रहा हूँ

  • यूनिट टेस्ट परीक्षण डेटा की पहचान करना
  • लिखे जाने की पहचान करना (या इसे का वर्णन)
  • इन परीक्षणों लेखन
  • ट्रैकिंग इन परीक्षणों (और आवश्यकतानुसार पुनः उपयोग)
  • परिणाम उपलब्ध कराने के परिणाम

उत्तर

0

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

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

0

अपनी टीम या अन्य डेवलपर्स को याद दिलाएं कि वे पेशेवर हैं, न कि शौकिया। मेरे लिए काम किया!

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

0

आपके आस-पास पहली बार बस आगे बढ़ने और उन्हें लिखने और लोगों को दिखाने की आवश्यकता है कि यह इसके लायक है। मैंने तीन परियोजनाओं पर पाया है कि लोगों को मनाने का यही एकमात्र तरीका है। कुछ लोग जो कोड नहीं करते हैं (उदा। जूनियर प्रोजेक्ट मैनेजर) तब तक मूल्य नहीं देख पाएंगे जब तक कि यह उन्हें चेहरे पर सही न देखे।

2

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

4

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

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

एक बार जब आप अपने साथी डेवलपर्स को आश्वस्त कर लेंगे, प्रबंधन को एक साथ मनाने के लिए।

+1

हालांकि इसमें बहुत लंबा समय लग सकता है, हालांकि ... –

0

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

1

शिक्षा और/या प्रमाणन।

अपने टीम के सदस्यों को परीक्षण के क्षेत्र में औपचारिक प्रशिक्षण दें - शायद प्रमाणन परीक्षा के साथ (आपके टीम के सदस्यों और प्रमाणन के प्रति अपने दृष्टिकोण के आधार पर)। आप इस तरह के उच्च स्तर पर परीक्षण करेंगे, और आपकी टीम के सदस्यों को परीक्षण के प्रति पेशेवर दृष्टिकोण लेने की अधिक संभावना होगी।

1

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

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

कई डेवलपर्स यह महसूस नहीं करते कि वे पूरी प्रणाली में व्यवहार को संरक्षित रखने के बिना कितना रिफैक्टर करते हैं। मेरे लिए यह मेरी राय में यूनिट परीक्षण और टीडीडी का सबसे बड़ा लाभ है।

  1. सॉफ्टवेयर आवश्यकताओं आवश्यकताओं

निश्चितता केवल परिवर्तन है सूट करने के लिए

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

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

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

    उम्मीद है कि इससे मदद मिलती है।

  • 4

    मैं MavenSurefire और Cobertura प्लगइन के साथ अपने सभी निर्माण के लिए उपयोग करता हूं। वास्तविक परीक्षण मामले JUnit, DbUnit और EasyMock के साथ बनाए जाते हैं।

    यूनिट की पहचान करना टेस्ट मैं टेस्ट प्रेरित विकास का पालन करने लेकिन ईमानदार मैं आमतौर पर सिर्फ इतना है कि परीक्षण मामलों के मुट्ठी और उसके बाद के लिए वापस आने के लिए और धार के लिए परीक्षण और अपवाद मामलों बाद में बना सकता हूँ होने की कोशिश।

    की पहचान करना टेस्ट डाटा DbUnit अपने इकाई परीक्षण के लिए लोड हो रहा है परीक्षण डाटा के लिए अच्छा है।

    लेखन परीक्षा मामले मैं परीक्षण मामलों को बनाने के लिए जुनीट का उपयोग करता हूं। मैं स्वयं दस्तावेज परीक्षण मामलों को लिखने की कोशिश करता हूं लेकिन जवाडॉक्स का उपयोग कुछ ऐसी टिप्पणी करने के लिए करेगा जो स्पष्ट नहीं है।

    ट्रैकिंग & बनाना परिणाम उपलब्ध मैं अपने Maven निर्माण चक्र अचूक प्लगइन का उपयोग करते हुए इकाई परीक्षण एकीकृत और मैं Corbertura प्लगइन का उपयोग कवरेज उन परीक्षण के द्वारा प्राप्त किया मापने के लिए। मैं हमेशा अपने दैनिक निर्माण के हिस्से के रूप में Surefire और Cobertura रिपोर्ट सहित एक वेब साइट उत्पन्न और प्रकाशित करता हूं ताकि मैं देख सकूं कि कौन से परीक्षण विफल/पास हुए।

    2

    जिस दिन मैंने मेनफ्रेम पर कोबोल विकास किया था, हमने उन कई कंपनियों में धार्मिक रूप से ऐसा किया जो मैंने काम किया था और इसे स्वीकार करने के तरीके के रूप में स्वीकार किया गया क्योंकि पर्यावरण ने इसे लागू किया। मुझे लगता है कि यह युग के लिए एक बहुत ही सामान्य योजना थी और शायद कुछ कारण आपके लिए लागू हो सकते हैं: -

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

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

    निकाला जा रहा है उचित अंक -

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

    मुझे यकीन है कि आपका पर्यावरण अलग-अलग होगा लेकिन प्रिंसिपल अनुवाद योग्य हो सकते हैं।

    0

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

    1

    और के बीच की आवश्यकता के बीच एक बड़ा अंतर है।

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

    नियम बनाने और लागू करने से पहले दो बार सोचें। डेवलपर्स उन पर काबू पाने में अच्छे हैं।

    0

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

    संबंधित मुद्दे

     संबंधित मुद्दे