क्या यूनिट परीक्षण के आरओआई के कठिन सबूत हैं?


127

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

क्या सबूत है? क्या किसी ने वास्तव में दो अलग-अलग टीमों के साथ एक ही सॉफ्टवेयर विकसित किया है, एक इकाई परीक्षण का उपयोग कर रहा है और दूसरा, और परिणामों की तुलना नहीं कर रहा है? मुझे शक है। क्या मैं इसे सही ठहराना चाहता हूं, "इंटरनेट पर इसे देखो, हर कोई इसके बारे में बात कर रहा है, इसलिए यह सही काम होना चाहिए"?

ऐसे कठिन सबूत कहां हैं जो आम लोगों को समझाएंगे कि यूनिट परीक्षण प्रयास के लायक है?

जवाबों:


98

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

[संपादित करें] टीडीडी के संदर्भ में विशेष रूप से उपर्युक्त दो कागजात और टीडीडी अपनाने के बाद प्रारंभिक विकास समय में १५-३५% की वृद्धि दिखाते हैं, लेकिन पूर्व-रिलीज़ दोष में 40-90% की कमी होती है। यदि आपको पूर्ण पाठ संस्करण नहीं मिल सकते हैं, तो मैं सुझाव देता हूं कि Google विद्वान का उपयोग करके देखें कि क्या आप सार्वजनिक रूप से उपलब्ध संस्करण पा सकते हैं।


14
पहला अध्ययन जलप्रपात परियोजनाओं के खिलाफ चुस्त + टीडीडी की तुलना करता है, अगर दो फुर्तीली टीमों की तुलना में यह परिणाम अधिक प्रासंगिक होगा। दूसरे अध्ययन में अन्य अध्ययनों का उल्लेख किया गया है जो टीडीडी परियोजनाओं के लिए कोई गुणवत्ता बोनस नहीं मिला। और जब आप TDD के लिए अतिरिक्त समय की जरूरत के बारे में प्रबंधन के अनुमानों की तुलना करते हैं, तो यह उच्च डोमेन विशेषज्ञता वाली दो टीमों के लिए काफी अधिक अनुमानित है, फिर भी उनके पास 20% कम परीक्षण कवरेज है। यह मेरे स्वयं के अनुभव की पुष्टि करता है, मुझे आश्वासन मिलता है कि मैंने अभी तक जिन प्रणालियों के साथ काम नहीं किया है उनमें बहुत अधिक महत्वपूर्ण है, जबकि परीक्षण बाकी सब चीजों के लिए एक बाधा है।
LearnCocos2D

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

1
तो क्या हुआ अगर पोस्ट रिलीज़ बग को ठीक करने की लागत कुल विकास का 0.01% है? टीडीडी उस मामले में एक भयानक निवेश होगा। और अगर कीड़े कम हैं? इन% s का मतलब बिना संदर्भ के कुछ भी नहीं है। निष्पक्ष होने के लिए मुझे अभी पूरा अध्ययन पढ़ना बाकी है। लेकिन जैसा कि यह खड़ा है कि आपकी पोस्ट उपयोगी है (अच्छे लिंक), लेकिन आरओआई, आईएमओ के बारे में सवाल का जवाब नहीं देता है।
इंस्टीन

1
@Instine Luckily (?) इस बात का अच्छा सबूत है कि ऐसा नहीं है। रिलीज के बाद के कीड़े को ठीक करना तेजी से विकास में पाए जाने वाले कीड़ों की तुलना में अधिक महंगा है (जो कि टीडीडी करता है)। उस संदर्भ में, सभी पोस्ट-रिलीज़ बग के लिए कुल विकास का 0.01% की लागत की संभावना नहीं लगती है। (विवरण के लिए , विशेष रूप से बोहेम और अल में कोड पूरा देखें , "सॉफ्टवेयर लागत को समझना और नियंत्रित करना", IEEE ट्रांस सॉफ्टव इंग (1988))।
कोनराड रूडोल्फ 10

यह शायद ध्यान देने योग्य है कि पहले अध्ययन में 24 प्रोग्रामर (जोड़े में काम करना, इसलिए 12 टीमों) का एक नमूना आकार है। मुझे यकीन नहीं है कि सांख्यिकीय रूप से मान्य नमूना आकार क्या होगा, लेकिन ये कम लगते हैं। शायद किसी और को पता है?
ज़ाचरी येट्स

29

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

क्यों?

क्यों नहीं, चुपचाप और विवेक से। आपको यह सब एक साथ करने की जरूरत नहीं है। आप इसे छोटे छोटे टुकड़ों में कर सकते हैं।

रूपरेखा सीखने में बहुत कम समय लगता है।

एक परीक्षा, सिर्फ एक लेखन, बहुत कम समय लगता है।

इकाई परीक्षण के बिना, आपके पास अपने सॉफ़्टवेयर में कुछ आत्मविश्वास है। एक इकाई परीक्षण के साथ, आपके पास अभी भी आपका आत्मविश्वास है, साथ ही यह भी प्रमाण है कि कम से कम एक परीक्षा पास हो।

बस इतना ही लगता है। किसी को पता नहीं है कि आप इसे कर रहे हैं। बस कर दो।


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

बस करो और उन्हें मत बताओ, और कॉफी ब्रेक पर अपने कॉलेजों को विचार बेच दो ;-)
जोहान

3
क्योंकि जब आप लगातार अपने डेडलाइन को नहीं मारेंगे तो आपको निकाल दिया जाएगा।
एंड्रयू

3
@ नेको: इकाई परीक्षण "ओवरहेड का एक बिट" नहीं जोड़ते हैं। वे गूंगा गलतियों की एक पूरी बाढ़ को रोककर समग्र कार्यभार को कम करते हैं। काम बढ़ता नहीं है; यह बस प्रकृति में बुरे कोड से अच्छे यूनिट परीक्षण और अच्छे कोड में बदलता है।
S.Lott

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

16

मैं इसके लिए एक अलग तरीका अपनाता हूं:

आपको क्या आश्वासन है कि आपका कोड सही है? या यह कि जब आपकी टीम पर कोई व्यक्ति func1 () बदलता है तो यह धारणा X को नहीं तोड़ता है? इकाई परीक्षणों के बिना आपको 'ईमानदार' बनाए रखना, मुझे यकीन नहीं है कि आपके पास बहुत आश्वासन है।

परीक्षणों को अद्यतन रखने की धारणा दिलचस्प है। परीक्षणों को अक्सर बदलना नहीं पड़ता है। मुझे उत्पादन कोड की तुलना में परीक्षण कोड 3x मिला है, और परीक्षण कोड बहुत कम बदला गया है । हालांकि, यह क्या है जो मुझे रात में अच्छी तरह से सोता है और वह चीज जो मुझे ग्राहक को बताने की अनुमति देती है कि मुझे विश्वास है कि मैं सिस्टम को तोड़ने के बिना वाई कार्यक्षमता को लागू कर सकता हूं।

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

यहाँ वह खुद के लिए भुगतान करता है: 1) आपको अपने कोड में विश्वास है और 2) आप पहले की समस्याओं को पकड़ लेते हैं, अन्यथा आप। आपके पास क्यूए आदमी का कहना नहीं है "अरे, आपने सीमा की जांच नहीं की थी xyz () फ़ंक्शन, क्या आपने? वह उस बग को खोजने के लिए नहीं मिलता है क्योंकि आपने इसे एक महीने पहले पाया था। यह अच्छा है। उसके लिए, आपके लिए अच्छा, कंपनी के लिए अच्छा और ग्राहक के लिए अच्छा।

स्पष्ट रूप से यह किस्सा है, लेकिन इसने मेरे लिए अद्भुत काम किया है। यकीन नहीं है कि मैं आपको स्प्रेडशीट प्रदान कर सकता हूं, लेकिन मेरा ग्राहक खुश है और यह अंतिम लक्ष्य है।


मेरा क्यूए आदमी बहुत तेज था, लेकिन वह कोड नहीं देख रहा था, लेकिन यह बताना आसान था कि सीमाओं की जांच नहीं की गई थी।
इसका

यूनिट परीक्षण के बारे में पूरी तरह से सहमत होने पर आपको कोड के बजाय अपने डिजाइन और शुद्धता के बारे में अधिक सोचने के लिए मजबूर करना
chakrit

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

10

हमने कठिन सबूतों के साथ प्रदर्शित किया है कि यूनिट परीक्षण के बिना भद्दा सॉफ़्टवेयर लिखना संभव है। मेरा मानना ​​है कि यूनिट टेस्टिंग के साथ गंदे सॉफ़्टवेयर के लिए और भी सबूत हैं। लेकिन यह बात नहीं है।

यूनिट टेस्टिंग या टेस्ट ड्रिवेन डेवलपमेंट (TDD) एक डिजाइन तकनीक है, टेस्ट तकनीक नहीं है। कोड जो लिखित परीक्षा संचालित है वह कोड से बिल्कुल अलग दिखता है जो नहीं है।

हालांकि यह आपका सवाल नहीं है, मुझे आश्चर्य है कि अगर यह वास्तव में सबसे आसान तरीका है कि आप नीचे सड़क पर जाएं और सवालों का जवाब दें (और उन सबूतों को लाएं जिन्हें अन्य रिपोर्टों द्वारा चुनौती दी जा सकती है) गलत हैं। यहां तक ​​कि अगर आप अपने मामले के लिए कठिन सबूत पाते हैं - किसी और के खिलाफ मुश्किल सबूत मिल सकता है।

क्या तकनीकी लोगों को काम करना चाहिए यह निर्धारित करने के लिए बीन काउंटर का व्यवसाय है? क्या वे सभी मामलों में सबसे सस्ता उपकरण प्रदान कर रहे हैं क्योंकि उनका मानना ​​है कि आपको अधिक महंगे की आवश्यकता नहीं है?

यह तर्क या तो भरोसे के आधार पर जीता जाता है (फुर्तीली टीमों के मूलभूत मूल्यों में से एक) या जीतने वाली पार्टी की भूमिका शक्ति के आधार पर हार जाता है। भले ही TDD- समर्थकों की भूमिका शक्ति के आधार पर जीती हो, मैं इसे हार के रूप में गिनूंगा।


13
सुनना, सुनना :) टीडीडी के लिए बहुत सारे कठिन सबूत भी बहुत अनुभवी टीमों से आते हैं जो पहले से ही इसके बिना अच्छे परिणाम प्राप्त कर रहे थे। टीडीडी ने केवल पतली हवा से बाहर निकलने के बजाय उनके परिणामों में सुधार किया। असली आरओआई सभ्य कोडर्स को काम पर रख रहा है और उन्हें यह तय करने देता है कि चीजों को कैसे करना है।
वर्कमाड 3

"क्या यह निर्धारित करने के लिए सेम काउंटरों का व्यवसाय है कि तकनीकी लोगों को कैसे काम करना चाहिए?" -> सभी व्यावसायिक निर्णय पैसे के लिए आते हैं। फिर भी, अच्छा जवाब, +1
jcollum

@jcollum लेकिन आप अपनी नौकरी कैसे करते हैं, इसका पैसे से कोई लेना-देना नहीं है और अगर आप चाहते हैं कि कोई एक व्यक्ति जवाबदेह हो, तो आप उन्हें यह निर्णय लेने दें कि वे आपसे क्या पूछते हैं
Rune FS

टीडीडी एक डिजाइन तकनीक नहीं है, यह सिर्फ एक कोडिंग तकनीक है। blog.ploeh.dk/2010/12/22/TheTDDApostate कई टिप्पणी करने वाले असहमत हैं कि TDD में रिफैक्टरिंग (जो एक डिजाइन तकनीक है) शामिल है, लेकिन रिफैक्टिंग TDD का अर्थ नहीं है। कोई भी परीक्षण किए बिना रिफ्लेक्टर कर सकता है, बड़े जटिल रीफैक्टरिंग यूनिट परीक्षणों को वैसे भी प्रभावित करता है अर्थात परीक्षणों को भी रिफलेक्ट करने की आवश्यकता होती है इसलिए अमान्य / झूठे हरे भी बन सकते हैं; सरल रिफ्लेक्टरिंग कई परीक्षण को प्रभावित नहीं करते हैं लेकिन त्रुटि का जोखिम कम होता है - क्योंकि रिफैक्टिंग सरल है।
कोला 3

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

6

यदि आप भी इकाई परीक्षण के खिलाफ सबूत में रुचि रखते हैं, तो यहां एक अच्छी तरह से शोध और विचार किया गया लेख है:

क्यों जेम्स हे कोप्लिन (दुबला और चुस्त गुरु) द्वारा अधिकांश यूनिट परीक्षण अपशिष्ट है


6

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

टीम ने पाया कि TDD टीमों ने गैर-TDD टीमों की तुलना में 60% और 90% प्रतिशत बेहतर (दोष घनत्व के संदर्भ में) कोड का उत्पादन किया। हालांकि टीडीडी टीमों ने अपनी परियोजनाओं को पूरा करने के लिए 15% से 35% के बीच का समय लिया।


5

यहाँ एक महान और मनोरंजक एक आदमी ने अपनी कंपनी को भीतर से बदल दिया है। यह टीडीडी तक सीमित नहीं है। http://jamesshore.com/Change-Diary/ ध्यान दें कि उन्होंने कुछ समय के लिए "बीन काउंटर" को राजी नहीं किया और इसके बजाय "गुरिल्ला रणनीति" किया।


लिंक दिलचस्प लग रहा है ... फिर से जाँच के लायक है: संगठनों के काम करने की प्रक्रिया बदल रही है ...
गंदा पेस्टी

5

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

अतिथि संपादकों का परिचय: टीडीडी - निडर प्रोग्रामिंग की कला [ लिंक ]

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

तालिका 1. परीक्षण-संचालित विकास के चयनित अनुभवजन्य अध्ययनों का सारांश: उद्योग प्रतिभागी *

https://www.computer.org/cms/Computer.org/dl/mags/so/2007/03/figures/s3024t1.gif

सारणी 2. टीडीडी के चयनित अनुभवजन्य अध्ययनों का सारांश: शैक्षणिक प्रतिभागी *

यहाँ छवि विवरण दर्ज करें

बाहरी गुणवत्ता और उत्पादकता पर परीक्षण-संचालित विकास के प्रभाव: एक मेटा-विश्लेषण [ लिंक ]

सार:

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

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

अंत में, मध्यस्थ चर के रूप में डेवलपर अनुभव और कार्य आकार के प्रभाव की जांच की गई, और कार्य आकार और गुणवत्ता में सुधार की भयावहता के बीच एक सांख्यिकीय महत्वपूर्ण सकारात्मक सहसंबंध पाया गया।


4

वैसे, कुछ बड़ी कंपनियां हैं जिन्हें आपको यूनिट परीक्षण का उपयोग करने की आवश्यकता होती है लेकिन यदि आप एक छोटी कंपनी हैं तो बड़े लोगों की नकल क्यों करें?

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

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

जैसा कि एक अन्य पोस्टर में पहले ही लिखा जा चुका है, आप टीडीडी को टेस्ट (सत्यापित) करने के लिए उपयोग नहीं करते हैं। आप इसे विनिर्देश को पकड़ने के लिए लिखते हैं, आपकी इकाई (ऑब्जेक्ट, मॉड्यूल, फ़ंक्शन, क्लास, सर्वर, क्लस्टर) का व्यवहार क्या है।

बहुत सारी कंपनियों में विकासशील सॉफ्टवेयर के एक अलग मॉडल पर स्विच करने में बहुत सारी विफलताएं और सफलता की कहानियां हैं।

जब भी मेरे पास लिखने के लिए कुछ नया था, मैंने इसका इस्तेमाल करना शुरू कर दिया। एक पुरानी कहावत है कि मेरे लिए अंग्रेजी में अनुवाद करना कुछ कठिन है, लेकिन:

इतने सरल से शुरू करें कि आपको ध्यान न आए कि आप ऐसा करते हैं। जब एक मैराथन के लिए प्रशिक्षण, 9 मीटर चलने से शुरू करें और 1 मीटर चलाएं, दोहराएं।


तो, मुझे बस करना चाहिए? यह काम करने की गारंटी है, और इससे कोई फर्क नहीं पड़ता कि कोई और मेरे साथ नहीं करता है?
रेवेन

दरअसल, यह जोएल टेस्ट है: joelonsoftware.com/articles/fog000000004343.html । यह मुझे लगता है कि आपको नोबेल पुरस्कार पुरस्कार अध्ययन इकाई अध्ययन में कमी की तुलना में अधिक समस्या हो सकती है
जोन्के

4

ऐसे आंकड़े हैं जो साबित करते हैं कि यूनिट / एकीकरण परीक्षण में पाए जाने वाले बग को ठीक करने की लागत कई बार फिक्सिंग की तुलना में कम है, क्योंकि यह लाइव सिस्टम पर है (वे वास्तविक जीवन परियोजनाओं के हजार की निगरानी पर आधारित हैं)।

संपादित करें : उदाहरण के लिए, जैसा कि बताया गया है, पुस्तक " कोड पूरा " इस तरह के अध्ययनों पर रिपोर्ट करती है (पैराग्राफ 20.3, "गुणवत्ता तकनीकों की सापेक्ष प्रभावशीलता")। लेकिन परामर्श क्षेत्र में निजी शोध भी है जो यह साबित करता है कि


1
यह स्टीव मैककॉनेल के कोड कम्प्लीट में शामिल है , जो एक ऐसी किताब है जिसे आप शायद अन्य कारणों से अपने बुकशेल्फ़ पर रखना चाहते हैं।
बजे रॉबर्ट रॉसनी

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

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

0

मेरे पास इसके लिए डेटा बिंदुओं का एक सेट है - एक अनुभव से जिसने मुझे यूनिट परीक्षणों पर बेचा।

कई चन्द्रमाओं से पहले मैं एक बड़े VB6 प्रोजेक्ट पर काम करने वाला एक फ्रेश ग्रेजुएट था और मेरे पास एक बड़ा बॉडी स्टोरेड प्रोसीजर कोड लिखने का अवसर था। मैं जो सबसिस्टम लिख रहा था, उसमें से लगभग १/४ पूरे कोड बेस का था - ५०K में से १३,००० LOC का।

मैंने संग्रहीत प्रक्रियाओं के लिए यूनिट परीक्षणों का एक सेट लिखा था, लेकिन यूनिट परीक्षण VB6 UI कोड वास्तव में तर्कसंगत रोबोट जैसे उपकरणों के बिना संभव नहीं है; कम से कम यह तो वापस नहीं था।

टुकड़े पर क्यूए के आंकड़े थे कि पूरे उप-तंत्र पर लगभग 40 या 50 दोष उठाए गए थे, जिनमें से दो संग्रहीत प्रक्रियाओं से उत्पन्न हुए थे। ऐसा इसलिए है कोड के 6,500 लाइनों प्रति एक दोष बनाम 1 प्रति 1,000-1,200 या तो पूरा टुकड़ा भर में। यह भी ध्यान में रखें, कि VB6 कोड में से लगभग 2/3 त्रुटि प्रक्रियाओं और लॉगिंग के लिए बॉयलरप्लेट कोड था, जो सभी प्रक्रियाओं में समान था।

बहुत अधिक हाथ लगाने के बिना, आप यूनिट परीक्षण के लिए दोष दर में कम से कम एक ऑर्डर-ऑफ-परिमाण में सुधार कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.