2008-09-20 5 views
35
  • कहें कि हमने बहुत देर से टीडीडी का मूल्य महसूस किया है। परियोजना पहले से ही परिपक्व है, ग्राहकों का अच्छा सौदा इसका उपयोग शुरू कर दिया।
  • कहें स्वचालित परीक्षण का उपयोग ज्यादातर कार्यात्मक/सिस्टम परीक्षण होता है और स्वचालित जीयूआई परीक्षण का एक अच्छा सौदा होता है।
  • कहें कि हमारे पास नए फीचर अनुरोध हैं, और नई बग रिपोर्ट (!)। तो विकास का अच्छा सौदा अभी भी जारी है।
  • ध्यान दें कि पहले से ही बहुत कम व्यापारिक वस्तु नहीं होगी, जिसमें कोई छोटा या छोटा यूनिट परीक्षण नहीं होगा।
  • उनके बीच बहुत अधिक सहयोग/संबंध, जो फिर से उच्च स्तर के कार्यात्मक/सिस्टम परीक्षण के माध्यम से परीक्षण किया जाता है। प्रति एक परीक्षण परीक्षण नहीं।
  • बहुत सारे टेबल, विचार इत्यादि के साथ बड़े डेटाबेस, बस एक ही व्यवसाय वस्तु को तुरंत चालू करने के लिए डेटाबेस राउंड ट्रिप का अच्छा सौदा हो जाता है।

हम इस चरण में टीडीडी कैसे पेश कर सकते हैं?क्या परिपक्व परियोजना में टेस्ट ड्राइव डेवलपमेंट (टीडीडी) पेश करना संभव है?

मॉकिंग जाने का रास्ता प्रतीत होता है। लेकिन हमें मजाक करने की मात्रा हमें यहां करने की ज़रूरत है। मौजूदा सामान (बीओ, डेटाबेस इत्यादि) के लिए काम कर रहे मॉकिंग सिस्टम के लिए विस्तृत आधारभूत संरचना की तरह विकसित किया जाना चाहिए।

क्या इसका मतलब है कि टीडीडी केवल स्क्रैच से शुरू होने पर उपयुक्त पद्धति है? मुझे पहले से ही परिपक्व उत्पाद में टीडीडी पेश करने की व्यवहार्य रणनीतियों के बारे में सुनना है।

उत्तर

27

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

से माइकल फेदर उत्कृष्ट पुस्तक Working effectively with legacy code, इसे किसी भी विरासत कोड बेस में टीडीडी शुरू करने के बारे में सोचने के लिए पढ़ना चाहिए।

+0

पुस्तक सुझाव के लिए धन्यवाद। ऐसा लगता है कि मैंने यही देखा। – rpattabi

3

हाँ आप कर सकते हैं। इसे एक साथ में न करें, लेकिन जब भी आप इसे स्पर्श करते हैं तो मॉड्यूल का परीक्षण करने के लिए आपको केवल वही पेश करना चाहिए।

आप अधिक उच्च स्तरीय स्वीकृति परीक्षणों के साथ भी शुरू कर सकते हैं और वहां से अपना रास्ता कम कर सकते हैं (इसके लिए Fitnesse पर एक नज़र डालें)।

16

मुझे लगता है कि टीडीडी को मौजूदा एप्लिकेशन में पेश करने के लिए यह पूरी तरह से व्यवहार्य है, असल में मैंने हाल ही में इसे स्वयं किया है।

टीडीडी तरीके से नई कार्यक्षमता को कोड करना और इसे समायोजित करने के लिए मौजूदा कोड को पुनर्गठन करना सबसे आसान है। इस तरह आप अपने कोड के एक छोटे से हिस्से के साथ शुरू करते हैं लेकिन प्रभाव पूरे कोड बेस के माध्यम से फैलना शुरू कर देते हैं।

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

व्यक्तिगत रूप से, मुझे नहीं लगता कि पागल होने की कोई ज़रूरत है और मौजूदा सिस्टम में परीक्षणों को फिर से प्रयास करने की कोशिश की जा रही है क्योंकि यह बहुत अधिक लाभ के बिना बहुत कठिन हो सकता है।

संक्षेप में, छोटा शुरू करें और आपकी परियोजना अधिक से अधिक परीक्षण संक्रमित हो जाएगी।

+0

बग के आस-पास नए यूनिट परीक्षण लिखना अच्छी तरह से काम करता है। आपके पास "पूर्ण" परीक्षण सूट नहीं है, लेकिन आपके पास कुछ बनाने के लिए है। "टीटीडी! = यूनिट परीक्षण" के लिए –

9

हाँ आप कर सकते हैं।आपके विवरण से परियोजना एक अच्छे आकार में है - कार्यात्मक परीक्षणों की ठोस मात्रा स्वचालन जाने का एक तरीका है! कुछ पहलुओं में यूनिट परीक्षण से भी अधिक उपयोगी है। याद रखें कि टीडीडी! = यूनिट परीक्षण, यह सब छोटे पुनरावृत्तियों और ठोस स्वीकृति मानदंडों के बारे में है।

कृपया याद रखें कि मौजूदा और स्वीकृत प्रोजेक्ट होने से वास्तव में परीक्षण आसान हो जाता है - कार्यरत अनुप्रयोग सर्वोत्तम आवश्यकताओं का विनिर्देशन है। तो आप किसी ऐसे व्यक्ति की तुलना में बेहतर स्थिति में हैं जिसके पास काम करने के लिए कागज़ का स्क्रैप है।

बस अपनी नई आवश्यकताओं/बग फिक्स पर टीडीडी के साथ काम करना शुरू करें। याद रखें कि पद्धति को बदलने के साथ जुड़े ओवरहेड होंगे (सुनिश्चित करें कि आपके क्लाइंट इस बारे में जानते हैं!) और शायद उन टीम सदस्यों से अनिच्छा का एक अच्छा सौदा होने की उम्मीद है जो 'अच्छे पुराने तरीके' के लिए उपयोग किए जाते हैं।

पुरानी चीजों को तब तक न छूएं जब तक आपको आवश्यकता न हो। यदि आपके पास एक वृद्धि अनुरोध होगा जो मौजूदा सामान को प्रभावित करेगा तो अतिरिक्त सेट-अप चीजों को करने के लिए अतिरिक्त समय में कारक होगा।

व्यक्तिगत तौर पर मैं नकली अप के लिए एक जटिल बुनियादी सुविधाओं को शुरू करने में ज्यादा मूल्य नहीं दिख रहा है - निश्चित रूप से वहाँ एक हल्के मोड में एक ही परिणाम प्राप्त करने के लिए एक रास्ता है, लेकिन यह स्पष्ट रूप से अपनी परिस्थितियों पर निर्भर करता है

+1

+1, अब मैं उस टाइपो को ठीक कर दूंगा। – Johnsyweb

2

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

5

एक उपकरण आपको विरासत कोड का परीक्षण मदद कर सकते हैं (यह मानते हुए आप \ बार यह refactor करने के लिए नहीं होगा नहीं कर सकते, Typemock अलगाने है: Typemock.com यह इंटरफेस को निकालने के लिए की जरूरत के बिना मौजूदा कोड में निर्भरता इंजेक्शन लगाने की अनुमति देता है और ऐसा इसलिए है क्योंकि यह मानक प्रतिबिंब तकनीक (गतिशील प्रॉक्सी इत्यादि ..) का उपयोग नहीं करता है बल्कि इसके बजाय प्रोफाइलर एपीआई का उपयोग करता है। इसका उपयोग शेयरपॉइंट, HTTPContext और अन्य समस्याग्रस्त क्षेत्रों पर निर्भर ऐप्स का परीक्षण करने के लिए किया जाता है। मैं आपको एक नज़र डालने की सलाह देता हूं। (मैं उस कंपनी में एक देव के रूप में काम करता हूं, लेकिन यह एकमात्र ऐसा टूल है जो आपको मौजूदा विरासत कोड को दोबारा करने के लिए मजबूर नहीं करता है, आपको समय और पैसा बचाता है) मैं अत्यधिक तकनीकों के लिए "विरासत कोड के साथ प्रभावी ढंग से काम करना" की अत्यधिक अनुशंसा करता हूं

रॉय

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