TDD प्रभावी है?

एक दिलचस्प चर्चा के दौरान, एक बहुत सम्मानित व्यक्ति "अविनाशी" तर्क को "ट्रम्प" कर देता है:
टीडीडी की प्रभावशीलता को प्रदर्शित करने वाले कई अध्ययन हैं।

वास्तव में। यदि आप Google विद्वान में जाते हैं, तो कीवर्ड "TDD" और "दक्षता" स्कोर करें - कई वैज्ञानिक लेख होंगे , लेकिन क्या यह इतना सरल है? हालाँकि मैं खुद टीडीडी का बहुत बड़ा प्रशंसक हूँ, लेकिन मैं खुद को एक संशयवादी भी मानता हूँ, और यह जाँचने का फैसला किया कि क्या यह वैज्ञानिक रूप से सिद्ध हो चुका है कि टीडीडी कितना शांत है।

मुझे लगता है कि आपके संदेह में कमी है

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

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

लेकिन वापस विज्ञान के लिए। एक भाग्यशाली संयोग से, ऐसा हुआ कि मैं Wrexham Glynd Glyr University के मास्टर प्रोग्राम में कंप्यूटर साइंस में बिग डेटा एनालिटिक्स के साथ अध्ययन कर रहा था (वैसे - मैं सभी को इसकी सलाह देता हूं, और मैं इसके बारे में अलग से लिखूंगा) और अभी क्रिटिकल रिसर्च मॉड्यूल से गुजर रहा हूं, जहां वे आपको वैज्ञानिक लेख पढ़ना सिखाते हैं और उनकी वैधता का विश्लेषण करें।
हमारे सबूत क्या है?

टीडीडी की प्रभावशीलता और उपयोगिता पर वास्तव में बहुत सारे शोध हैं। हालांकि, यदि आप स्वयं अध्ययन पढ़ते हैं, तो आप देखेंगे कि वे परस्पर विरोधी निष्कर्ष पर आते हैं

उदाहरण के लिए, 2007 में प्रकाशित "टेस्ट ड्रिवन डेवलपमेंट की प्रभावशीलता और दक्षता का एक प्रायोगिक मूल्यांकन" रिपोर्ट में, यह निष्कर्ष निकाला गया कि TDD गुणवत्ता को प्रभावित किए बिना डेवलपर्स की उत्पादकता में सुधार करता है [1]।

एक अन्य रिपोर्ट में, जिसने कई अन्य अध्ययनों के निष्कर्षों की जांच की और अपना स्वयं का अध्ययन किया, "टेस्ट ड्रिवन की प्रभावशीलता का मूल्यांकन: लाभ और नुकसान", 2017 ने निष्कर्ष निकाला कि टीडीडी उत्पाद की गुणवत्ता में सुधार कर सकता है, लेकिन कम उत्पादकता की ओर जाता है। इसके अतिरिक्त, यह देखा गया है कि अधिकांश डेवलपर्स TDD अप्राकृतिक [2] पाते हैं।

एक अन्य अध्ययन के अनुसार, "टेस्ट-फर्स्ट डेवलपमेंट की प्रभावशीलता पर एक प्रतिकृति प्रयोग", शोधकर्ताओं ने डेवलपर उत्पादकता या उत्पाद की गुणवत्ता [3] पर टेस्ट-फ़र्स्ट या टेस्ट-लास्ट दृष्टिकोण का एक ठोस और महत्वपूर्ण प्रभाव खोजने में सक्षम नहीं थे।

TDD की प्रभावशीलता और उपयोगिता के "सबूत" के ताबूत में एक कील को हथौड़ा करने के लिए, आप अवलोकन रिपोर्ट "टेस्ट ड्रिवेन डेवलपमेंट रिसर्च प्रोजेक्ट्स एंड एक्सपेरिमेंट्स का अवलोकन", 2012 [4] पढ़ सकते हैं, जिसमें बड़ी संख्या में उपलब्ध अध्ययनों के आधार पर, उन्होंने सबूतों के बारे में एक निष्कर्ष पर आने की कोशिश की। टीडीडी की दक्षता और सकारात्मक प्रभाव। लेखकों ने निष्कर्ष निकाला कि टीडीडी के लाभकारी प्रभावों का कोई ठोस सबूत नहीं है। पिछले अध्ययनों के परिणामों में अंतर, लेखकों ने पुष्टिकरण पूर्वाग्रह की पुष्टि की - जो अध्ययन TDD की प्रभावशीलता को दर्शाते हैं वे मूल रूप से परिकल्पना पर आधारित थे कि TDD प्रभावी है।
तो लोग (मेरे सहित) टीडीडी को एक महान अभ्यास क्यों मानते हैं?
शोध को पढ़ने के बाद, मेरे पास केवल एक तार्किक जवाब है - टीडीडी की प्रभावशीलता और प्रयोज्यता मुख्य रूप से विशेष डेवलपर पर निर्भर करती है। टीडीडी की प्रभावशीलता पर अध्ययन, जाहिर है, पर्याप्त रूप से ध्यान में नहीं लिया गया है कि डेवलपर्स रोबोट नहीं हैं, और टीडीडी एक कार्यक्रम नहीं है। कुछ डेवलपर्स के लिए, टीडीडी अच्छे परिणाम लाएगा, कुछ के लिए - टीडीडी और सरल लेखन इकाई परीक्षणों के बीच कोई महत्वपूर्ण अंतर नहीं होगा, कुछ के लिए - टीडीडी गुणवत्ता, उत्पादकता और प्रेरणा में गिरावट लाएगा।

प्रोग्रामिंग सामाजिक गतिविधि है। सामाजिक इंटरैक्शन के साथ समस्या यह है कि यह एक सटीक विज्ञान नहीं है। यह इस परिकल्पना की पुष्टि / खंडन करने के लिए अधिक या कम वैज्ञानिक प्रयोग करने का तरीका जानने के लिए रहता है। शुरू करने के लिए, मैं एक सर्वेक्षण प्रदान करता हूं।

आप अचानक अपने अंग्रेजी बोलने वाले सहयोगियों के साथ इस प्रकाशन साझा करना चाहते हैं, वहाँ में ज्यादा औपचारिक अंग्रेज़ी संस्करण है: medium.com/@alexspush/is-tdd-effective-2474c0471ac4

स्रोतों की सूची

[1] ए गुप्ता, पी Jalote "एक प्रायोगिक का मूल्यांकन अनुभवजन्य सॉफ्टवेयर इंजीनियरिंग और मापन, मैड्रिड, स्पेन, 2007
[2] Z. खानम, एम। अहसन पर "प्रथम परीक्षण संगोष्ठी में प्रस्तुत किए गए टेस्ट ड्रिवेन डेवलपमेंट की प्रभावशीलता और दक्षता ", "टेस्ट ड्रिफ्ट डेवलपमेंट की प्रभावशीलता का मूल्यांकन: लाभ और नुकसान" इंटरनेशनल जर्नल ऑफ एप्लाइड इंजीनियरिंग रिसर्च वॉल्यूम। 12, नहीं 18, पी। 7705, 2017 उपलब्ध: www.ripublication.com/ijaer17/ijaerv12n18_81.pdf । [13 मई, 2020 को एक्सेस किया गया]।
[३] डी। फूकी, बी। तुरहान, "ए-रेप्लिकेटेड एक्सपेरिमेंट ऑन द टेस्ट ऑफ़ फर्स्ट-डेवलपमेंट" एसीएम / IEEE इंटरनेशनल सिम्पोजियम इन एम्पिरिकल सॉफ्टवेयर इंजीनियरिंग एंड मेजरमेंट, बाल्टीमोर, एमडी, यूएसए, २०१३: २०१३
[४] ए। Bulajic, एस Sambasivam और आर स्टोजिक बताए विज्ञान और आईटी शिक्षा सम्मेलन की कार्यवाही (Insite) में प्रस्तुत "टेस्ट प्रेरित विकास रिसर्च प्रोजेक्ट्स और प्रयोगों का अवलोकन", 2012 उपलब्ध: pdfs.semanticscholar.org/3278/971bb53a25822171df127d47a57243dd3bbd.pdf[13 मई, 2020 को एक्सेस किया गया]।

All Articles