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