मैंने अगस्त 2009 की शुरुआत में TDD करना शुरू किया और अपनी पूरी कंपनी को सितंबर / अक्टूबर 2009 में इसे स्विच करने के लिए मना लिया। वर्तमान में, पूरी देव टीम पूरी तरह से परिवर्तित हो गई है, और रेपो के लिए अनटाइटेड कोड को कम करने के लिए एक बैड थिंग माना जाता है और इसे फेंक दिया जाता है। यह हमारे लिए बहुत अच्छा काम कर रहा है, और मैं चरवाहे कोडिंग पर वापस जाने की कल्पना नहीं कर सकता।
हालांकि, दो समस्याएं हैं जो काफी ध्यान देने योग्य हैं।
टेस्ट सूट का रखरखाव करना होगा
जब आप TDD के बारे में गंभीर होते हैं, तो आप बहुत सारे परीक्षण लिखना समाप्त कर देंगे । इसके अलावा, यह समझने में कुछ समय और अनुभव लेता है कि परीक्षणों की सही ग्रैन्युलैरिटी क्या है (ओवरडोजिंग लगभग उतना ही बुरा है जितना कि यह कम है)। ये परीक्षण भी कोड हैं , और वे बिट्रोट के लिए अतिसंवेदनशील हैं। इसका मतलब है कि आपको उन्हें बाकी सब के रूप में बनाए रखना होगा: जब आप उन पुस्तकालयों को अपग्रेड करते हैं, जो समय-समय पर रिफ्लेक्टर करते हैं, तो इसे अपडेट करें ... जब आप अपने कोड में बड़े बदलाव करते हैं, तो बहुत सारे परीक्षण अचानक से पुराने हो जाएंगे या सादा गलत भी। यदि आप भाग्यशाली हैं, तो आप बस उन्हें हटा सकते हैं, लेकिन बहुत बार आप उपयोगी बिट्स को निकालने और उन्हें नए आर्किटेक्चर के साथ ढालेंगे।
समय-समय पर परीक्षण अमूर्त रिसाव
हम Django का उपयोग कर रहे हैं, जिसमें एक बहुत अच्छा परीक्षण ढांचा है। हालांकि, कभी-कभी यह ऐसी धारणाएं बनाता है जो वास्तविकता के साथ कुछ हद तक हैं। उदाहरण के लिए, कुछ मिडलवेयर परीक्षण तोड़ सकते हैं। या, कुछ परीक्षण कैशिंग बैकेंड के बारे में धारणा बनाते हैं। इसके अलावा, यदि आप "वास्तविक" DB (SQLite3 नहीं) का उपयोग कर रहे हैं, तो परीक्षणों के लिए db तैयार करने में बहुत समय लगेगा। निश्चित रूप से, आप स्थानीय स्तर पर किए गए परीक्षणों के लिए SQLite3 और इन-मेमरी db का उपयोग कर सकते हैं (और करना चाहिए), लेकिन कुछ कोड आपके द्वारा उपयोग किए जाने वाले डेटाबेस के आधार पर अलग तरह से व्यवहार करेंगे। यथार्थवादी सेटअप में चलने वाले निरंतर एकीकरण सर्वर की स्थापना एक आवश्यक है।
(कुछ लोग आपको बताएंगे कि आपको डेटाबेस की तरह सभी सामानों का मजाक उड़ाना चाहिए, या आपके परीक्षण "शुद्ध" नहीं हैं, लेकिन यह केवल विचारधारा है। यदि आप अपने नकली कोड में गलतियां करते हैं (और मुझे विश्वास है, तो आप)। आपका परीक्षण बेकार हो जाएगा।)
यह सब कहा, मैंने जिन समस्याओं का वर्णन किया है वे केवल तभी ध्यान देने योग्य होने लगती हैं जब आप टीडीडी के साथ काफी उन्नत होते हैं ... जब आप सिर्फ टीडीडी (या छोटी परियोजनाओं पर काम कर रहे) के साथ शुरू करते हैं तो परीक्षण रिफैक्टिंग एक मुद्दा नहीं होगा।