जोएल: टेस्ट ड्रिवेन डिवेलपमेंट पर एक बहस चल रही है ... क्या आपको हर चीज के लिए यूनिट टेस्ट करना चाहिए, उस तरह का सामान ... बहुत सारे लोग मुझे लिखते हैं, जोएल टेस्ट को पढ़ने के बाद, यह कहने के लिए, "आपके पास 13 वां होना चाहिए यहाँ पर बात: यूनिट टेस्टिंग, आपके सभी कोड के 100% यूनिट टेस्ट। "
और यह मुझे उस चीज़ के बारे में थोड़ा सा बहुत कुछ करने के रूप में प्रभावित करता है जिसकी आपको आवश्यकता नहीं है। जैसे, चुस्त प्रोग्रामिंग का पूरा विचार आपको ज़रूरत से पहले चीजों को करने के लिए नहीं है, बल्कि उन्हें आवश्यकतानुसार पृष्ठ-दोष में लाने के लिए है। मुझे लगता है कि हर चीज का स्वचालित परीक्षण, बहुत बार, बस आपकी मदद करने वाला नहीं है। दूसरे शब्दों में, आप उस कोड का बीमा करने के लिए बहुत सारे यूनिट परीक्षण लिखने जा रहे हैं जो वास्तव में काम करने वाला है, और आप निश्चित रूप से यह पता लगाने जा रहे हैं कि क्या यह काम नहीं करता है [यदि आप नहीं करते हैं परीक्षण लिखें] करता है, वास्तव में अभी भी काम करता है, ... मुझे नहीं पता, मुझे इसके लिए ऐसी लौ मेल मिलने वाली है क्योंकि मैं इसे अच्छी तरह से व्यक्त नहीं कर रहा हूं। लेकिन, मुझे ऐसा लगता है कि अगर वास्तव में किसी टीम के पास अपने यूनिट परीक्षणों का 100% कोड कवरेज होता है, तो कुछ समस्याएं होंगी। एक, उन्होंने यूनिट परीक्षणों को लिखने में बहुत समय बिताया होगा, और वे बेहतर गुणवत्ता में उस समय के लिए भुगतान करने में सक्षम नहीं होंगे। मेरा मतलब है, उनके पास कुछ बेहतर गुणवत्ता होगी, और उनके पास अपने कोड में चीजों को इस विश्वास के साथ बदलने की क्षमता होगी कि वे कुछ भी नहीं तोड़ते हैं, लेकिन ऐसा है।
लेकिन जैसा कि मैंने पाया है कि यूनिट परीक्षणों के साथ वास्तविक समस्या यह है कि आप कोड के रूप में जो परिवर्तन करते हैं, वे आपके यूनिट परीक्षणों के निरंतर प्रतिशत को तोड़ने के लिए होते हैं। कभी-कभी आप अपने कोड में बदलाव करेंगे, जो किसी भी तरह, आपके यूनिट परीक्षणों के 10% को तोड़ देता है। जानबूझ कर। क्योंकि आपने किसी चीज़ का डिज़ाइन बदल दिया है ... आपने एक मेनू ले लिया है, और अब वह सब कुछ जो उस मेनू पर निर्भर करता है ... मेनू अब कहीं और है। और इसलिए वे सभी परीक्षण अब टूट गए हैं। और आपको कोड की नई वास्तविकता को प्रतिबिंबित करने के लिए उन परीक्षणों में जाने और उन्हें फिर से बनाने में सक्षम होना होगा।
तो अंतिम परिणाम यह है कि, जैसा कि आपकी परियोजना बड़ी और बड़ी हो जाती है, यदि आपके पास वास्तव में बहुत सारे यूनिट परीक्षण हैं, तो आपको उन यूनिट परीक्षणों को बनाए रखने के लिए, उन्हें अप-टू-डेट रखने और रखने में कितना निवेश करना होगा उन्हें गुजरना, उन लाभों की मात्रा के प्रति असम्बद्ध होना शुरू हो जाता है जो आप उनसे बाहर निकलते हैं।