क्या ऐसे क्षेत्र हैं जहां टीडीडी एक उच्च आरओआई और अन्य क्षेत्र प्रदान करता है जहां आरओआई इतना कम है कि यह निम्नलिखित के लायक नहीं है? [बन्द है]


31

परीक्षण संचालित विकास। मुझे यह पसंद है, मुझे यह पसंद है।

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


1
आरओआई देखना था "निवेश पर वापसी" :)
सोंगो

आपने पहले ही अपने प्रश्न का उत्तर दे दिया है: जहाँ उपयुक्त हो उसका उपयोग करें।
jwenting

जवाबों:


27

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

जिन ऐप्स पर मैं हाल ही में काम कर रहा हूं, वे एक Gui-> प्रस्तुतकर्ता-> BusinessLogic-> डेटा एक्सेस लेयर-आधारित आर्किटेक्चर पर निर्मित डेटा-चालित वेबएप हैं। मेरे डेटा एक्सेस लेयर का परीक्षण किसी के व्यवसाय की तरह नहीं किया गया है। व्यापार तर्क परत बहुत अच्छी तरह से परीक्षण किया गया है। प्रेजेंटर्स का परीक्षण केवल अधिक स्थिर क्षेत्रों में किया जाता है, और जीयूआई, जो प्रति घंटा बदल रहा है, लगभग कोई परीक्षण नहीं है।


7

मेरा सुझाव है कि उन क्षेत्रों में एक पूर्ण परीक्षण सूट लिखना जहां यह करने के लिए समझदार और व्यावहारिक है। कम व्यावहारिक क्षेत्रों में, स्वच्छता जांच लिखें।

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

उदाहरण के लिए, आपकी भाषा / तकनीक के आधार पर, UI का परीक्षण व्यावहारिक या व्यवहार्य नहीं भी हो सकता है। बहुत सारे परीक्षण शायद इस बात पर निर्भर करेंगे कि उपयोगकर्ता क्या देखता है और स्वचालित नहीं हो सकता है। आप यह कैसे परखेंगे कि कैप्चा बनाने की एक विधि एक छवि का निर्माण करती है जो उदाहरण के लिए मानव द्वारा पठनीय है?

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

मेरी सामान्य सलाह यह होगी कि आपको उन घटकों का पूरी तरह से परीक्षण करना चाहिए जहाँ परीक्षण अपेक्षाकृत आसानी से लिखे जा सकते हैं। हालांकि, अगर यह एक ऐसा क्षेत्र है जिसका परीक्षण करना बहुत कठिन है, तो रेत में एक रेखा खींचें और ऐसे परीक्षण लिखें जो क्षेत्र को पूरी तरह से परीक्षण करने के बजाय उच्च स्तर पर परीक्षण करेंगे।

पिछले कैप्चा उदाहरण में, शायद ऐसे परीक्षण लिखें जो सही आकार और प्रारूप की एक छवि की जांच करते हैं और वापस आ गए हैं और कोई अपवाद नहीं फेंका गया है। यह आपको बिना ओवरबोर्ड जाए आश्वासन के कुछ स्तर देता है।


6

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

मुझे लगता है कि टेस्ट-राइटिंग के लिए डिबगिंग छोड़ना बहुत अच्छा सौदा है।


3

एक जगह जहां टीडीडी वास्तव में कठिन बेकार होता है, जब एक एमवीसी ऐप में विचारों का परीक्षण होता है।

जब से आप एक फ़ंक्शन का परीक्षण कर रहे हैं, जो वसा html स्ट्रिंग लौटाता है, तो आप केवल यह देखने के लिए HTML पार्स कर रहे हैं कि क्या सामान काम कर रहा है। इसके अलावा, यह एक दुःस्वप्न बन सकता है। एक दिन जब आप चारों ओर एक चेकबॉक्स ले जाते हैं और काबूम, आपका परीक्षण टूट जाता है।

मुझे अपने बहुत सारे परीक्षण के लिए टीडीडी पसंद है, लेकिन यह प्रोग्रामर बेल्ट में एकमात्र उपकरण नहीं है।


निष्पक्ष होने के लिए, आपके पास वास्तव में आपके विचार में कोई तर्क नहीं होना चाहिए जिसे परीक्षण किया जा सकता है। यह केवल एक बड़ा खाली स्लॉट होना चाहिए जहां आप अपने व्यूमोडल में प्लग करते हैं जो कि आपके अत्यधिक और आसानी से परीक्षण योग्य नियंत्रक पर कार्रवाई को लागू करने के परिणामस्वरूप था।
सारा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.