2010-07-08 7 views
12

स्थिति: कोड की लाखों लाइनें, एक सौ से अधिक डेवलपर्स और लगातार दोष। हम दोषों को दोहराने से बचाना चाहते हैं और हम कोड डिज़ाइन को बेहतर बनाना चाहते हैं (कौन नहीं?)।आप विरासत कोड के साथ परीक्षण संचालित विकास को कैसे कार्यान्वित कर सकते हैं?

टेस्ट संचालित विकास (प्रथम इकाई परीक्षण, फिर कोड) आदर्श लगता है: प्रत्येक फ़ंक्शन के लिए एक परीक्षण केस लिखें।

लेकिन, इतने सारे कोड के साथ, टीडीडी कैसे कार्यान्वित किया जा सकता है? निम्न स्तर के कार्यों के साथ आप कहां से शुरू करते हैं?

या क्या हम टीडीडी शुरू करने में बहुत देर हो चुकी हैं?

उत्तर

21

Working Effectively with Legacy Code के साथ शुरू करें।

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

Refactor the Low-Hanging Fruit

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

+2

+1: यहां कुंजी * कोशिश नहीं है और यूनिट परीक्षणों को व्यापक रूप से पुनः निकालने का प्रयास करें। – Richard

+1

@ करल - अच्छा सारांश। मुझे विशेष रूप से यह पसंद है कि आपको यूनिट टेस्ट और दोष से बाहर एक सिस्टम टेक्स्ट कैसे मिला है। – Wikis

+0

@ रिचर्ड - मैं परेशान हूं - क्या यह नहीं है कि कार्ल क्या कह रहा है? – Wikis

2

चूंकि कार्ल ने एक पुस्तक का सुझाव दिया है, इसलिए मैं एक और सुझाव दूंगा: रॉय ओशरोव का Art of Unit Testing "विरासत कोड के साथ काम करना" पर एक पूरा अध्याय है। मैंने अभी तक उस अध्याय को नहीं पढ़ा है, लेकिन पहले 5 अध्याय उत्कृष्ट हैं, और मैं इसके लिए तत्पर हूं।

+0

एफवाईआई मैंने विरासत कोड के लिए ओशरोव की परिभाषाओं की तुलना का आनंद लिया: "स्रोत कोड जो अब तक समर्थित तकनीक से संबंधित नहीं है" "रखरखाव के तहत कोई पुराना अनुप्रयोग" "कोड जो काम करता है" "कोड जिसमें कोई परीक्षण नहीं है" (फेदर्स की पुस्तक से) – orbfish

+0

@ सीआरएल सी 2 लिंक के लिए धन्यवाद, यह उल्लसित है। – orbfish

+0

@ ऑर्बिश - टिप के लिए धन्यवाद। शायद जब आप इसे पढ़ लेंगे तो आप वापस आ जाएंगे और कुछ अंतर्दृष्टि साझा करेंगे? – Wikis

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