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