दिलचस्प पोस्ट
कर्तव्यों या अपवादों का उपयोग कर अनुबंध द्वारा डिजाइन? रूट अनुप्रयोग को कैसे परिवर्तित करें? WPF डिस्प्लेचर {"कॉलिंग थ्रेड इस ऑब्जेक्ट को एक्सेस नहीं कर सकता क्योंकि एक अलग धागा यह मालिक है।"} अंगुलियों 2 में * ngFor का उपयोग करके को पुनरावृति कैसे करें सी # में एक सार वर्ग के कन्स्ट्रक्टर मुख्य प्रकार का प्रकार: उपयोग करने वाला कौन? रेक डीबी के बीच का अंतर: माइग्रेट डीबी: रीसेट और डीबी: स्कीमा: लोड एनीमेशन डीडएसटॉप प्रतिनिधि के अंदर CA एनीमेशन की पहचान कैसे करें? आईपैड चित्र और लैंडस्केप मोड के लिए आकार देने वर्ग intellij विचार में एक आवेदन चलाने प्रोफाइल में क्लासपाथ को निर्देशिका कैसे जोड़ें? अजगर चर पॉइंटर्स हैं? स्काला में, "प्रारंभिक प्रारंभकर्ता" क्या है? क्या कोई अजगर फ़ंक्शन (या अन्यथा इसके कोड को क्रमबद्ध) करने के लिए एक आसान तरीका है? एंड्रॉइड एक्शन बार पर मेनू आइटम को स्टाइल कैसे करें तालिका नाम और तालिका की स्कीमा के साथ SQL सर्वर डेटाबेस में सभी ट्रिगर को सूचीबद्ध करने की आवश्यकता है

यूनिट परीक्षण क्या है?

मैंने कई प्रश्नों को एक विशिष्ट भाषा में 'कैसे' यूनिट टेस्ट से पूछे, लेकिन 'क्या', 'क्यों', और 'कब' पूछे जाने पर कोई प्रश्न नहीं है।

  • यह क्या है?
  • यह मेरे लिए क्या करता है?
  • मुझे क्यों इसका उपयोग करना चाहिए?
  • मुझे कब का उपयोग करना चाहिए (जब भी नहीं)?
  • कुछ आम नुकसान और गलत धारणाएं क्या हैं

वेब के समाधान से एकत्रित समाधान "यूनिट परीक्षण क्या है?"

परीक्षण कोड के साथ इकाई परीक्षण में आपके कोड के बिट्स का परीक्षण, मोटे तौर पर बोल रहा है। दिमाग में आने वाले तत्काल लाभ हैं:

  • परीक्षण चलाना स्वचालित-सक्षम और दोहराव योग्य होता है
  • आप जीयूआई के माध्यम से पॉइंट-एंड-क्लिक परीक्षण की तुलना में अधिक दानेदार स्तर पर परीक्षण कर सकते हैं

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

यूनिट परीक्षण को देखने का दूसरा तरीका यह है कि आप परीक्षण पहले लिखते हैं। इसे टेस्ट-प्रेरित विकास (लघु अवधि के लिए टीडीडी) के रूप में जाना जाता है टीडीडी अतिरिक्त लाभ लाता है:

  • आप "भविष्य में इसकी आवश्यकता हो सकती है" सट्टा अनुमान नहीं लिखना – बस परीक्षणों को पास करने के लिए पर्याप्त है
  • आपके द्वारा लिखे गए कोड को हमेशा टेस्ट द्वारा कवर किया जाता है
  • पहले परीक्षण लिख कर, आप सोच रहे हैं कि आप कोड को कैसे कॉल करना चाहते हैं, जो आमतौर पर लंबे समय में कोड का डिजाइन सुधारता है।

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

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


संपादित करें: एक गलत धारणा मन में आता है, हालांकि मुझे यकीन नहीं है कि यह इतना आम है मैंने एक परियोजना प्रबंधक को सुना है कि यूनिट परीक्षणों ने टीम को दो बार दो कोड लिखने का मौका दिया है अगर ऐसा लगता है और ऐसा लगता है, ठीक है, आप इसे गलत कर रहे हैं न केवल परीक्षण लिखना ही विकास की गति बढ़ाता है, लेकिन यह आपको एक सुविधाजनक "अब मैं कर रहा हूँ" संकेतक देता है कि आपके पास अन्यथा नहीं होगा

मैं दान से असहमत नहीं हूं (हालांकि एक बेहतर विकल्प अभी जवाब नहीं दे सकता है) … लेकिन …

यूनिट परीक्षण आपके सिस्टम के व्यवहार और कार्यक्षमता का परीक्षण करने के लिए कोड लिखने की प्रक्रिया है।

जाहिर है, परीक्षण आपके कोड की गुणवत्ता में सुधार, लेकिन यह केवल यूनिट परीक्षण का सतही लाभ है। वास्तविक लाभ निम्न हैं:

  1. यह सुनिश्चित करते हुए कि आप व्यवहार (रिफैक्टरिंग) को बदलते नहीं हैं, यह सुनिश्चित करने के दौरान तकनीकी कार्यान्वयन को आसान बनाते हैं। ठीक से यूनिट परीक्षण कोड को आक्रामक रूप से पुनर्रचना / साफ किया जा सकता है / इसे बिना देखे हुए कुछ भी तोड़ने की थोड़ी संभावना हो सकती है।
  2. डेवलपर्स का आश्वासन देते हैं जब व्यवहार जोड़ते हैं या सुधार करते हैं।
  3. अपना कोड दस्तावेज़ करें
  4. आपके कोड के उन क्षेत्रों को इंगित करें जो कसकर युग्मित हैं यह इकाई परीक्षण कोड के लिए कठिन है जो कसकर युग्मित है
  5. अपने एपीआई का उपयोग करने के लिए एक साधन उपलब्ध कराएं और जल्दी में कठिनाइयों को देखें
  6. उन तरीकों और कक्षाओं को इंगित करता है जो बहुत संयोजक नहीं हैं

आपको यूनिट टेस्ट करना चाहिए क्योंकि यह आपके ग्राहक के लिए एक योग्य और गुणवत्ता वाले उत्पाद को वितरित करने के लिए आपकी रुचि में है।

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

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

सबसे बड़ी गलत धारणा यह है कि प्रोग्रामर को परीक्षण नहीं करना चाहिए। केवल बुरा या आलसी प्रोग्रामर का मानना ​​है कि क्या आपकी छत का निर्माण करने वाला आदमी इसका परीक्षण नहीं करेगा? क्या चिकित्सक को हृदय वाल्व की जगह नई वाल्व का परीक्षण नहीं करना चाहिए? केवल एक प्रोग्रामर यह परीक्षण कर सकता है कि उसका कोड ऐसा करना चाहता है (क्यूए किन मामलों का परीक्षण कर सकता है – कैसे कोड व्यवहार करता है जब प्रोग्रामर्स का इरादा नहीं होता है, और क्लाइंट स्वीकृति परीक्षण कर सकता है – कोड करता है ग्राहक इसके लिए क्या भुगतान करता है)

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

यदि आप मैन्युअल रूप से अपने कोड का परीक्षण करते हैं, तो यह आपको समझा सकता है कि कोड पूरी तरह से काम कर रहा है – इसकी वर्तमान स्थिति में लेकिन एक हफ्ते बाद क्या हुआ, जब आपने इसमें थोड़ा बदलाव किया? क्या आप अपने कोड में कुछ भी बदलाव करते हुए इसे हाथ से फिर से तैयार करना चाहते हैं? सबसे शायद नहीं 🙁

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

यह हाथ परीक्षण पर यूनिट परीक्षणों का मुख्य लाभ है। लेकिन रुकिए, और भी है:

  • यूनिट परीक्षण नाटकीय ढंग से विकास प्रतिक्रिया लूप को कम कर देता है: एक अलग परीक्षण विभाग के साथ यह आपके लिए सप्ताहों में लग सकता है कि आपके कोड में एक बग है, जिसके द्वारा आप पहले से ही बहुत अधिक संदर्भ भूल गए हैं, इस प्रकार यह आपको कुछ घंटों तक ले सकता है ढूँढें और बग ठीक करें; यूनिट परीक्षणों के साथ OTOH, प्रतिक्रिया चक्र सेकंड में मापा जाता है, और बग ठीक प्रक्रिया आमतौर पर "ओह श * टी की तर्ज पर होती है, मैं यहां उस स्थिति की जांच करना भूल गया था" 🙂
  • इकाई परीक्षण प्रभावी रूप से आपके कोड के व्यवहार को समझने (आपकी समझ)
  • इकाई परीक्षण आपको अपनी डिजाइन विकल्पों को फिर से मूल्यांकन करने के लिए मजबूर करता है, जिसके परिणामस्वरूप सरल, क्लीनर डिजाइन होता है

यूनिट परीक्षण चौखटे, बदले में, आपके लिए लिखने और अपने परीक्षण चलाने के लिए आसान बनाते हैं।

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

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

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

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

यूनिट टेस्टिंग और टीडीडी के दार्शनिक पेशेवरों पर छेड़छाड़ करने के लिए वे कुछ "लाइटबुल" टिप्पणियों में से हैं, जो मुझे टीडीडी ज्ञान (कोई भी मूल या जरूरी समाचार नहीं) के लिए सड़क पर अपने अस्थायी पहले चरणों पर लगाए गए थे …

  1. टीडीडी का मतलब कोड की मात्रा दो बार लिखना नहीं है। टेस्ट कोड आमतौर पर काफी तेज और दर्दनाक है लिखने के लिए और यह आपके डिजाइन प्रक्रिया का एक महत्वपूर्ण हिस्सा है और गंभीर रूप से है

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

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

  4. टीडीडी कोडिंग कब्ज के साथ मदद करता है आप जानते हैं कि आपको ऐसा करने के लिए बहुत कुछ करना है, आपको यह जानने में मुश्किल है कि कहां से शुरू करना है? यह शुक्रवार की दोपहर है, अगर आप कुछ और घंटे के लिए ही देर कर रहे हैं … टीडीडी आपको बहुत जल्दी से शरीर को बाहर करने की अनुमति देता है जो आपको करने की ज़रूरत है, और आपकी कोडिंग जल्दी से बढ़ती है इसके अलावा, लैब की चूहों की तरह, मुझे लगता है कि हम सभी उस बड़े हरे रंग की रोशनी का जवाब देते हैं और इसे फिर से देखने के लिए कड़ी मेहनत करते हैं!

  5. इसी तरह, ये डिजाइनर प्रकार ये देख सकते हैं कि वे क्या काम कर रहे हैं। वे एक रस / सिगरेट / आईफोन ब्रेक के लिए घूमते हैं और एक मॉनिटर पर वापस लौट सकते हैं जो तुरंत उन्हें एक दृश्य क्यू देता है जहां वे मिलते हैं। टीडीडी हमें कुछ इसी तरह देता है। यह देखने के लिए आसान है कि जब जीवन में हस्तक्षेप होता है, तो हम कहाँ पहुंचे …

  6. मुझे लगता है कि यह फ़ॉलर था, जिन्होंने कहा था: "अपरिपक्व परीक्षण, अक्सर चलते हैं, सही परीक्षणों से बेहतर होते हैं जो कि कभी भी लिखे नहीं जाते"। मैं यह व्याख्या करता हूं कि मुझे ऐसे परीक्षण लिखने की अनुमति दे, जहां मुझे लगता है कि वे सबसे उपयोगी होंगे, भले ही मेरा कोड कवरेज बेहद अधूरा हो।

  7. टीडीडी लाइन के नीचे सभी तरह के आश्चर्यजनक तरीके में मदद करता है अच्छा इकाई परीक्षण, जो कुछ करना माना जाता है, दस्तावेज़ को सहायता कर सकता है, वे आपको एक प्रोजेक्ट से दूसरे प्रोजेक्ट में माइग्रेट करने में सहायता कर सकते हैं और आपको अपने गैर-परीक्षण सहयोगियों के प्रति श्रेष्ठता की अनुचित भावना दे सकते हैं 🙂

यह प्रस्तुति सभी स्वादिष्ट भलाई परीक्षणों के लिए एक शानदार परिचय है।

मैं जेरार्ड मेस्ज़ारोस द्वारा एक्सयूनेट परीक्षण पैटर्न की सिफारिश करना चाहूंगा यह बड़ा है लेकिन यूनिट परीक्षण पर एक महान संसाधन है। यहां उनकी वेबसाइट पर एक लिंक है जहां उन्होंने यूनिट परीक्षण की मूल बातें की। http://xunitpatterns.com/XUnitBasics.html

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

यह सबसे प्रभावी है जब सभी इकाई परीक्षण स्वचालित रूप से चलाए जा सकते हैं।

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

ढांचा आपके कोड के विरुद्ध सभी परीक्षण चलाएगा और फिर प्रत्येक परीक्षण की सफलता या विफलता की रिपोर्ट करेगा। phpUnit डिफ़ॉल्ट रूप से लिनक्स कमांड लाइन से चलाया जाता है, यद्यपि इसके लिए HTTP इंटरफेस उपलब्ध हैं सरलतम वेब-आधारित प्रकृति है और आईएमओ उठने और चलाने के लिए बहुत आसान है XDebug के साथ संयोजन में, phpUnit आपको कोड कवरेज के लिए स्वचालित आंकड़े दे सकता है जो कुछ लोगों को बहुत उपयोगी लगता है।

कुछ टीमें हुक अपने उपखंड भंडार से लिखती हैं ताकि जब भी आप परिवर्तन करते हों तो यूनिट परीक्षण स्वतः चलाए जाते हैं

अपने यूनिट परीक्षण को एक ही रिपॉजिटरी में अपने आवेदन के रूप में रखना अच्छा अभ्यास है।

मैं समय बचाने के लिए इकाई परीक्षण का उपयोग करता हूँ

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

मेरे लिए यूनिट टेस्ट मॉड्यूलरिज्ड टेस्ट हार्नेस का एक प्रकार है। आम तौर पर सार्वजनिक समारोह में कम से कम एक परीक्षा होती है। मैं विभिन्न व्यवहारों को कवर करने के लिए अतिरिक्त परीक्षण लिखता हूं

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

यह मेरे लिए बहुत तेजी से पता चलता है कि मेरा नया कोड मेरे यूनिट परीक्षणों में कुछ तोड़ता है तो कोड में जांच करने के लिए और कुछ फ्रंट-एंड डेवलपर को समस्या मिलती है।

डेटा एक्सेस परीक्षण के लिए मैं परीक्षण लिखने का प्रयास करता हूं कि खुद के बाद कोई परिवर्तन नहीं होता है या फिर साफ नहीं होता है

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

कैंट बेक द्वारा लोकप्रिय किए गए टीडीडी दृष्टिकोण का उपयोग करते हुए अपनी परियोजनाओं को विकसित करना चाहते हैं, जैसे एनयूनिट, एक्सयूनिट या जेयूनिट जैसी लाइब्ररीज केवल अनिवार्य हैं:

आप टेस्ट डिवेलवेंट डेवलपमेंट (टीडीडी) या केंट बेक की पुस्तक टेस्ट डूवर डिवेलपमेंट का परिचय पढ़ सकते हैं : उदाहरण के अनुसार

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

यूनिट का परीक्षण कोड लेखन के बारे में है जो आपके एप्लिकेशन कोड को जांचता है।

नाम का यूनिट हिस्सा एक समय में कोड की छोटी इकाइयों (उदाहरण के लिए एक विधि) का परीक्षण करने के उद्देश्य के बारे में है।

इस परीक्षण में मदद करने के लिए xUnit है – वे चौराहे हैं जो इस के साथ सहायता करते हैं। इसका एक हिस्सा स्वचालित परीक्षण धावक है जो आपको बताता है कि परीक्षा क्या विफल हो रही है और कौन से लोग पास हैं

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

आप जांच करने के लिए एक परीक्षण कर सकते हैं कि एक संभावित अपवाद फेंक दिया गया है, बिना पूरे प्रयास को पकड़ने वाले ब्लॉक को लिखना

मुझे लगता है कि जिस बात को आप समझ नहीं पाते वह यह है कि एनयूआईएनटी (और जैसे) की इकाई परीक्षण के ढांचे आपको छोटे से मध्यम आकार के परीक्षणों को स्वचालित करने में मदद करेंगे आम तौर पर आप बस एक बटन पर क्लिक करके GUI में परीक्षण चला सकते हैं (उदाहरण के लिए, उदाहरण के लिए, एनयूआईआईटी के मामले में) – उम्मीद है – प्रगति बार रहने वाले हरे रंग की जगह देखें अगर यह लाल हो जाता है, तो फ्रेमवर्क आपको दिखाता है कि कौन सी परीक्षा विफल रही और वास्तव में गलत क्या हुआ। एक सामान्य इकाई परीक्षण में, आप अकसर दावा करते हैं, उदाहरण के लिए Assert.AreEqual(expectedValue, actualValue, "some description") – इसलिए यदि दो मान असमान हैं तो आपको "कुछ विवरण: अपेक्षित <अपेक्षित मूल्य> कहने में त्रुटि दिखाई देगी < actualValue> "।

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

टेस्टिविज का उपयोग करें आप सभी को जानने की ज़रूरत है ठीक है 🙂

यूनिट परीक्षण यह सुनिश्चित करने के लिए एक अभ्यास है कि आप कार्यान्वित करने वाले फ़ंक्शन या मॉड्यूल अपेक्षित (आवश्यकताओं) के रूप में व्यवहार करने जा रहे हैं और यह भी सुनिश्चित करने के लिए कि परिदृश्य में परिस्थितियों में क्या व्यवहार होता है, और अमान्य इनपुट

xUnit , NUnit , mbUnit , आदि उपकरण हैं जो आपको परीक्षण लिखने में मदद करते हैं।

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

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

तो एक यूनिट टेस्ट डेटाबेस कार्यक्षमता का साइड इफेक्ट न किए जाने वाले "फंक्शन" में संलग्न कार्यशीलता का उपयोग करेगी।

कहें कि आपका फ़ंक्शन किसी डेटाबेस से कुछ नंबरों को पुनर्प्राप्त करता है और फिर एक मानक विचलन गणना करता है। आप यहाँ क्या परीक्षण करने की कोशिश कर रहे हैं? क्या मानक विचलन सही तरीके से गणना की जाती है या डेटा डेटाबेस से वापस किया जाता है?

एक इकाई परीक्षण में आप यह जांचना चाहते हैं कि मानक विचलन ठीक से गणना की जाती है। एकीकरण परीक्षण में आप मानक विचलन गणना और डेटाबेस पुनर्प्राप्ति का परीक्षण करना चाहते हैं।

टेस्ट ड्रायव डिवेलपमेंट की तरह यूनिवर्सिटी टेस्ट के पद पर ले लिया गया है। एक पुरानी घड़ी के रूप में मैं इसके बारे में अधिक सामान्य परिभाषा का उल्लेख करूँगा।

यूनिट टेस्ट का अर्थ है कि एक बड़े सिस्टम में एक घटक का परीक्षण करना। यह एकल घटक एक dll, exe, कक्षा पुस्तकालय, आदि हो सकता है। यह एक बहु-प्रणाली एप्लिकेशन में एक भी प्रणाली हो सकती है। तो अंततः यूनिट टेस्ट को आप जितना बड़ा सिस्टम का एक टुकड़ा कॉल करना चाहते हैं उसका परीक्षण समाप्त हो जाता है।

आप तब परीक्षण करके एकीकृत या सिस्टम परीक्षण तक आगे बढ़ेंगे कि सभी घटक एक साथ कैसे काम करते हैं।

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

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

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

मुझे अंत तक नहीं मिला, क्योंकि मुझे-द रूटीन-अब-डैमेट की जरूरत थी, लेकिन यह एक अच्छा व्यायाम था।

आप क्या करते हैं अगर आपको बकवास का ढेर दिया जाता है और लगता है कि आप एक सदाबहार स्थिति में फंस गए हैं, जिसे आप किसी नए फीचर या कोड के जोड़ के साथ जानते हैं तो मौजूदा सेट को तोड़ सकते हैं क्योंकि मौजूदा सॉफ्टवेयर एक घर जैसा है पत्ते?

हम फिर यूनिट परीक्षण कैसे कर सकते हैं?

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

अभी हम 40% से अधिक हो चुके हैं, और हमने कम-फांसी वाले फलों में से अधिकांश का चयन किया है

(सबसे अच्छा हिस्सा यह है कि यहां तक ​​कि इस कवरेज के निम्न स्तर पर, हम पहले से ही कोड के कई उदाहरणों में गलत काम कर रहे हैं, और परीक्षण ने इसे पकड़ लिया। यह लोगों को अधिक परीक्षण जोड़ने के लिए धक्का देने के लिए एक बड़ा प्रेरक है।

यह उत्तर देता है कि आपको इकाई परीक्षण क्यों करना चाहिए।


जावास्क्रिप्ट में आवरण इकाई परीक्षण के नीचे 3 वीडियो नीचे दिए गए हैं लेकिन सामान्य सिद्धांत अधिकांश भाषाओं में लागू होते हैं।

यूनिट परीक्षण: मिनट अब बाद में घंटे बचाएगा – एरिक मान – https://www.youtube.com/watch?v=_UmmaPe8Bzc

जेएस यूनिट परीक्षण (बहुत अच्छा) – https://www.youtube.com/watch?v=-Iqqx8JxlU

लेखन योग्य जावास्क्रिप्ट लेखन – https://www.youtube.com/watch?v=OzjogCFO4Zo


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

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


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

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


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

इसके अलावा, आपको इकाई को अपने कोड का परीक्षण करने की ज़रूरत नहीं है यदि आप नहीं चाहते हैं, लेकिन यह आपकी परियोजना / कोड आधार के रूप में बंद होने पर भुगतान करता है क्योंकि बग बढ़ने की संभावना बढ़ती है।

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