2008-10-14 7 views
8

मैं 1 9 83 से प्रोग्रामिंग चालू और बंद होने के बाद से नौसिखिया नहीं हूं, लेकिन मुझे केवल स्क्रिप्टिंग भाषाओं जैसे एप्पलस्क्रिप्ट, एरेक्स, हाइपरटाक और बैश के साथ वास्तविक अनुभव है।लघु कार्यक्रमों के लिए यूनिट परीक्षण उपयुक्त है

मैं डेटा प्रविष्टि स्वचालित करने के लिए स्क्रिप्ट लिखता हूं, बैच प्रक्रिया छवियों और फ़ाइल स्वरूपों को परिवर्तित करता हूं। मैं प्रोसेसिंग, रूबी और पायथन पर डबिल हूं।

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

लघु कार्यक्रम:

पैमाने कि मैं अब और प्रक्रियात्मक (नहीं OO) कोड लिख काम कर रहा हूँ में यह उचित इकाई परीक्षण है, जो मुझे समझ में कर रहे हैं लिखने के लिए है व्यक्तिगत परीक्षणों को में पूरी तरह से बड़े प्रोग्राम के साथ जोड़ने से पहले परीक्षण करें।

रहे इकाई परीक्षण सार्थक उनकी लागत की तुलना में जब इस पैमाने पर कार्यक्रमों बनाने?

उत्तर

1

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

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

चेतावनी: निम्नलिखित लिंक लागू नहीं हो सकते हैं लेकिन आगामी चर्चा अच्छी पढ़ी जा रही है।

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

1

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

+0

है कि कह "हमेशा इकाई परीक्षण कोई बात नहीं क्या उपयोग करें" का सिर्फ अपना रास्ता? – willc2

2

पूरी तरह से, आपको पता चल जाएगा कि आप किसी भी मौजूदा सुविधाओं को तोड़ने नहीं कर रहे हैं कुछ महीनों में नए लोगों को जोड़ने के दौरान ....

सिर्फ एक के लिए परीक्षण का एक सेट होने के कई प्लस-मूल्य में से एक कोड का टुकड़ा

7

हां। शून्य रेखाओं से अधिक कुछ भी इकाई परीक्षण किया जा सकता है - आमतौर पर अच्छे प्रभाव के लिए।

+0

निश्चित रूप से कुछ भी इकाई परीक्षण किया जा सकता है। क्या यह हमेशा यूनिट परीक्षण बनाने के लिए उपयुक्त है? – willc2

+0

एकमात्र मामला मैं सोच सकता हूं कि यूनिट परीक्षण उचित नहीं होगा, एक-ऑफ प्रोग्राम है जो एक बार कुछ विशिष्ट करने के लिए चलाया जाएगा और फिर फेंक दिया जाएगा। फिर फिर भी, यहां तक ​​कि उनके पास लटकने का एक तरीका है और आम तौर पर उपयोगी कुछ विकसित होता है। – Ferruccio

+0

http://en.wikipedia.org/wiki/IEFBR14 –

4

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

0

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

यदि आपके कोड की शुद्धता महत्वपूर्ण नहीं है, तो इकाई परीक्षण के लिए आवश्यक नहीं है।

+0

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

+0

लगभग कोई नहीं। बस यह सुनिश्चित करें कि आप यह भी जांचते हैं कि यह अमान्य इनपुट डेटा पर भी प्रतिक्रिया करता है। –

+0

यूनिट परीक्षण आपको यह जांचने देता है कि यह अभी भी बाद में काम करता है, न कि जब आप इसे लिखते हैं। यह कुछ हद तक, अन्य उपयोगकर्ताओं को भी गारंटी देता है कि आपने इसका परीक्षण किया था। – Kena

3

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

नम्र जोड़ ऑपरेटर पर विचार करें। सीधे, सही? खैर, दो हस्ताक्षरित पूर्णांक जोड़ते समय अपेक्षित व्यवहार क्या है, जिनमें से दोनों> MAXINT/2 से हैं? क्या यह MAXINT है, या यह नकारात्मक संख्या है?

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

4

आज यह एक छोटी परियोजना है, कल यह आपके कॉर्पोरेट आधारभूत संरचना का केंद्रबिंदु है। इसे ठीक से शुरू करें, तुरंत 100% कोड कवरेज प्राप्त करें।

0

मुझे सबसे अधिक उत्तरों के साथ digress चाहिए। एक बार साक्षात्कार में डोनाल्ड Knuth ने कहा कि लोग ज्यादातर चीजों का परीक्षण करते हैं जब वे अनिश्चित हैं कि वे क्या कर रहे हैं या एक आरामदायक डोमेन में काम कर रहे हैं।

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

ओटीओएच, यूनिट परीक्षण आपको अपने कार्यक्रमों के मूल तर्क (जो आपको चीजों को अधिक मॉड्यूलर बनाता है) को कारक बनाता है और यदि आप 'मैन्युअल' परीक्षण कर रहे थे तो आप तेजी से परीक्षण कर सकते हैं। हम सभी के बाद डोनाल्ड Knuth नहीं हैं।

ध्यान रखें कि मेरा उत्तर छोटे कार्यक्षमता के लिए है, मूल रूप से पोस्ट की तरह पूछा

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