एकीकरण परीक्षणों के लिए नाम चुनना


13

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

लेकिन एकीकरण परीक्षणों से मुझे ऐसा लगता है कि यह एक बहुत लंबा नाम बना देगा, और मैं इसके स्थान पर methodNameक्या रखूंगा ? मैं एकीकरण कक्षाओं का नाम कैसे दूं?

एकीकरण परीक्षण नामों की वास्तविक दुनिया के उदाहरण बहुत स्वागत करते हैं। मुझे उम्मीद है कि उत्तर मुझे इन परीक्षणों को बेहतर ढंग से समझने में मदद करेंगे।


1
इस प्रश्न को दो बार क्यों घटाया गया?
बिगस्टोन

जवाबों:


6

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

  • canRegisterUser
  • canHandleInvalidInput
  • canRelayDocumentBetweenServers
  • canCreateSchema
  • canLoginUsingWebService
  • canLoginUsingBasicAuth
  • canDeleteDocument
  • canAddDocument

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

मैं एक उपसर्ग के साथ बगफिक्स के लिए किसी भी यूनिट परीक्षण का नामकरण करने का भी सुझाव दूंगा जैसे bugfix1002कि बग को ठीक करने के लिए।


5

यह वास्तव में इकाई परीक्षणों में मदद करने के लिए लिखा गया था, लेकिन शायद आप पाएंगे कि एक ही नियम एकीकरण परीक्षणों के लिए (अधिक या कम) लागू होते हैं:

सात चरणों की जाँच करें !

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

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

वैकल्पिक रूप से अगर आप मुझे "::" के साथ टेस्ट सूट के नाम को अलग करने में कोई आपत्ति नहीं करते हैं, तो मैं "AccountHandling :: MakingADeposit_AccountDoesntExist_ThrowsAnException" के साथ ठीक हूं

कार्ड से यह भी पता चलता है कि यदि आपके पास कोई अच्छा नाम नहीं है, तो आगे बढ़ते रहें और जब कोई आपके साथ होता है तो बेहतर नाम दें (उम्मीद है कि सीआई को कोड जमा करने से पहले)।


2

एकीकरण परीक्षणों को यूनिट परीक्षणों के लिए कुछ समान नियमों का पालन करना चाहिए, जिसमें प्रत्येक परीक्षण को एक आवश्यकता के एक पहलू का परीक्षण किया जाना चाहिए, लेकिन एक पूरे के रूप में सिस्टम का परीक्षण करना चाहिए। कक्षा को उस समग्र चीज़ का नाम देना चाहिए जिसका परीक्षण किया जा रहा है, जैसे "TpcInputValidation" और विधि का नाम स्पष्ट रूप से प्रतिबिंबित होना चाहिए कि परीक्षण अत्यधिक चिंता किए बिना क्या करने की कोशिश कर रहा है, उदाहरण के लिए "shouldRaiseValidation.rrorWithBadDates ()"।

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


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

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

1

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

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