2009-12-08 20 views
8

it happens with private methods के रूप में, इकाई परीक्षण विधियों का दस्तावेज़ीकरण केवल उन लोगों द्वारा देखा जा सकता है जिनके पास स्रोत कोड तक पहुंच है। क्या इस पर खर्च किए गए प्रयासों के लायक हैं?क्या मुझे अपनी इकाई परीक्षण विधियों को दस्तावेज करना चाहिए?

प्रलेखन से मेरा (लेकिन अधिक वर्णनात्मक) की तरह कुछ मतलब है:

/// <summary> 
///A test for SomeClass.SomeMethod 
///</summary> 
[TestMethod()] 
public void SomeMethodTest() 
{ 
} 

उत्तर

13

यूनिट परीक्षणों को स्वयं वर्णनात्मक होना चाहिए, लेकिन हमेशा ऐसे मामले होंगे जहां इस लक्ष्य को हासिल नहीं किया जा सकता है और इस प्रकार लिखा गया है कि वर्णन क्या है।

दूसरे शब्दों में, अपने यूनिट परीक्षण करने का प्रयास करें ताकि उन्हें दस्तावेज़ीकरण की आवश्यकता न हो, लेकिन अगर उन्हें इसकी आवश्यकता है, तो इसे लिखें!

+2

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

13

मैं नहीं बल्कि कह रही है कि आप एक तरह से है कि यह क्या परीक्षण के संबंध में अर्थपूर्ण है में अपने परीक्षा पद्धति नाम रखना चाहिए करने के लिए इच्छुक हो जाएगा: SomeMethodWillBehaveThisWayWhenCalledWithTheseParameters() हालांकि कुछ लोग विवादास्पद पाते हैं।

+4

मैं बस की खोज की "when_ * हालत * _should_ * doThis *" तरीकों के लिए नामकरण। –

+0

एक वर्णनात्मक फ़ंक्शन नाम सहायक है लेकिन पूर्ण वाक्यों में डालना मेरे लिए थोड़ा अधिक है। – stimpie

+1

सहमत हुए। मैं आम तौर पर एस/एस/आर: विषय, परिदृश्य, अपेक्षित परिणाम का उपयोग कर यूनिट परीक्षण का नाम देता हूं।(http://blog.codeville.net/2009/08/24/writing-great-unit-tests-best-and-worst-practises/) वास्तव में इसका मतलब यह नहीं है कि आपको अपना कोड दस्तावेज़ नहीं करना चाहिए। –

2

आपको सभी कोड दस्तावेज करना चाहिए।

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

5

ओह हाँ!

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

+0

homicidal पागल mantainer +1 जो जानता है कि आप कहाँ रहते हैं शायद आप खुद है! – SingleNegationElimination

1

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

यदि कोई परीक्षण भविष्य प्रोग्रामर (या आपको खराब स्मृति के साथ) विफल करता है तो जानता है कि कार्यक्षमता का परीक्षण/कार्यान्वयन क्यों किया गया था।

1

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

1

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

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

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

1

अधिकांश यूनिट परीक्षणों को दस्तावेज़ीकरण की आवश्यकता नहीं होनी चाहिए। नाम को यह स्पष्ट करना चाहिए कि वे किस विधि का परीक्षण करते हैं और अपेक्षित परिणामों का संकेत देते हैं। कोड सरल और स्पष्ट होना चाहिए। यूनिट परीक्षणों को व्यावसायिक नियमों को लागू नहीं करना चाहिए, इसलिए "क्यों" दस्तावेज करना आम तौर पर अनावश्यक होता है।

दुर्लभ मामले में कि एक परीक्षण वारंट टिप्पणियों के लिए पर्याप्त जटिल होना चाहिए, उन्हें किसी भी अन्य कोड की तरह दस्तावेज किया जाना चाहिए।

0

MSTest के लिए (IDK अगर NUnit कुछ इसी तरह है) यह प्रत्येक परीक्षा पद्धति के लिए एक DescriptionAttribute उपयोगी है, क्योंकि वे दृश्य स्टूडियो पर परीक्षण के परिणाम पैनल पर दिखाई देंगी। नामकरण सम्मेलन की तुलना में अधिक पठनीय WhenThisHappenShouldHappenThis।

0

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

is(compare_bitstrings($bs1, $bs2, $gen), 1, 'compare_bitstrings - bs1 > bs2'); 

जब सफलतापूर्वक चला देता है

ok 74 - compare_bitstrings - bs1 > bs2 

। यह मुझे बताता है कि मैं क्या करने की कोशिश कर रहा हूं, और जवाब क्या होना चाहिए।

+0

अच्छा बिंदु, लेकिन हम जानते हैं कि यह सभी यूनिट परीक्षण ढांचे के लिए लागू नहीं होता है। –

2

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

इस दस्तावेज़ आप यह पता लगाने की क्या परीक्षण अपने नाम और परीक्षण के भीतर टिप्पणी/कोड से करता है के लिए होता है के बिना।

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

0

बिल्कुल हो !! आपके यूनिट परीक्षणों को हर बिट के साथ-साथ आपके वास्तविक कोड को दस्तावेज किया जाना चाहिए। यदि यह जानने के लिए असामान्य परिस्थिति की तुलना में कोई अन्य कारण नहीं है कि यह आपका कोड है या आपका परीक्षण है जिसमें बग है।

0

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

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

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

यदि टिप्पणियां आम तौर पर बाद में विचार की जाती हैं, तो मुझे जितना दर्द हो सकता है, अगर कोई मौका है कि आपकी टिप्पणियां वास्तविक कोड/परीक्षणों के साथ पुरानी हो रही हैं, तो यह समझ में नहीं आ सकता है स्थिति को बदलने का प्रयास करने के लिए।

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

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