unit testing - एकीकरण और इकाई परीक्षण के बीच क्या अंतर है?




यूनिट टेस्ट इन हिंदी (13)

क्या ये परीक्षण अनिवार्य रूप से एकीकरण परीक्षण बन गए हैं क्योंकि अब वे इन 2 वर्गों के एकीकरण का परीक्षण करते हैं? या यह सिर्फ एक यूनिट परीक्षण है जो 2 वर्गों को फैलाता है?

मुझे लगता है हाँ और हाँ। आपका यूनिट परीक्षण जो 2 वर्गों तक फैलता है वह एकीकरण परीक्षण बन गया।

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

वास्तविक अंतर का निष्पादन निम्नलिखित हो सकता है 1) 1,000,000 तत्वों का ऐरे आसानी से परीक्षण किया गया है और ठीक काम करता है। 2) बबलस्पोर्ट आसानी से इकाई के 10 तत्वों के नकली सरणी पर परीक्षण किया जाता है और यह भी ठीक काम करता है 3) एकीकरण परीक्षण से पता चलता है कि कुछ ठीक नहीं है।

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

मैं इकाई परीक्षण और एकीकरण परीक्षण की तथाकथित पाठ्यपुस्तक परिभाषा जानता हूं। मैं इस बारे में उत्सुक हूं कि यूनिट परीक्षण लिखने का समय कब है ... मैं उन्हें यथासंभव कक्षाओं के कई सेटों को कवर करने के लिए लिखूंगा।

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

क्या ये परीक्षण अनिवार्य रूप से एकीकरण परीक्षण बन गए हैं क्योंकि अब वे इन 2 वर्गों के एकीकरण का परीक्षण करते हैं, या यह सिर्फ एक यूनिट परीक्षण है जो 2 वर्गों को फैलाता है?

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

क्या मैं एकीकरण परीक्षणों को गलत समझ रहा हूं, या क्या वास्तव में एकीकरण और इकाई परीक्षणों के बीच बहुत ही कम अंतर है?

संपादित करें

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


इस सवाल का थोड़ा सा अकादमिक है, है ना? ;-) मेरा दृष्टिकोण: मेरे लिए एकीकरण परीक्षण पूरे भाग का परीक्षण है, न कि यदि दस में से दो भाग एक साथ जा रहे हैं। हमारा एकीकरण परीक्षण दिखाता है, यदि मास्टर बिल्ड (40 परियोजनाएं शामिल हैं) सफल होंगे। परियोजनाओं के लिए हमारे पास कई यूनिट परीक्षण हैं। मेरे लिए यूनिट परीक्षण से संबंधित सबसे महत्वपूर्ण बात यह है कि एक इकाई परीक्षण किसी अन्य इकाई परीक्षण पर निर्भर नहीं होना चाहिए। तो मेरे लिए दोनों परीक्षण आप ऊपर वर्णित परीक्षण यूनिट परीक्षण हैं, अगर वे स्वतंत्र हैं। एकीकरण परीक्षण के लिए इसे महत्वपूर्ण नहीं होना चाहिए।


उपरोक्त उदाहरण बहुत अच्छे हैं और मुझे उन्हें दोहराने की आवश्यकता नहीं है। इसलिए मैं समझने में आपकी सहायता के लिए उदाहरणों का उपयोग करने पर ध्यान केंद्रित करूंगा।

एकीकरण टेस्ट

एकीकरण परीक्षण जांचें कि क्या सब कुछ एक साथ काम कर रहा है। एक घड़ी में एक साथ काम कर रहे कोग की एक श्रृंखला की कल्पना करो। एकीकरण परीक्षण होगा: घड़ी सही समय बता रही है? क्या यह अभी भी 3 दिनों में सही समय बता रहा है?

यह सब आपको बताता है कि क्या समग्र टुकड़ा काम कर रहा है या नहीं। यदि यह विफल रहता है: यह आपको बिल्कुल नहीं बताता है कि यह कहां विफल हो रहा है।

यूनिट टेस्ट

ये वास्तव में विशिष्ट प्रकार के परीक्षण हैं। वे आपको बताते हैं कि एक विशिष्ट चीज काम कर रही है या असफल रही है। इस प्रकार के परीक्षण की कुंजी यह है कि यह मानते हुए कि यह सब ठीक काम कर रहा है, यह केवल एक विशिष्ट चीज का परीक्षण करता है। यह महत्वपूर्ण बात है।

उदाहरण: उदाहरण के लिए इस बिंदु पर विस्तार से बताएं:

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

आपके एकीकरण और इकाई परीक्षणों को मिलाकर परिणाम:

  • मान लीजिए कि आपकी कार एकीकरण परीक्षण विफल रहता है। यह इचुका को सफलतापूर्वक ड्राइव नहीं करता है। समस्या कहाँ हे?

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

आप यहाँ समस्या देखते हैं? आप नहीं जानते कि वास्तव में क्या असफल रहा है। यदि आप 10 निर्भरताओं का उपयोग करते हैं, तो उन 10 में से प्रत्येक एक समस्या का कारण बन सकता है - और आपको नहीं पता कि कहां से शुरू करना है। यही कारण है कि यूनिट परीक्षण करने के लिए mocks परीक्षण करता है कि बाकी सब कुछ ठीक काम कर रहा है।

आशा है कि ये आपकी मदद करेगा।


एकल जिम्मेदारी डिजाइन का उपयोग, इसका काला और सफेद। 1 से अधिक ज़िम्मेदारी, यह एक एकीकरण परीक्षण है।

बतख परीक्षण (दिखता है, quacks, waddles, यह एक बतख) द्वारा, यह सिर्फ एक इकाई परीक्षण में 1 से अधिक नई वस्तु के साथ।

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


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

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


निम्नलिखित शर्तों में अपने परीक्षण की प्रकृति के बारे में सोचें:

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

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

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


मुझे लगता है कि मैं अभी भी एक इंटरैक्टिंग कक्षाओं को एक यूनिट टेस्ट कहूंगा, बशर्ते कक्षा 1 के लिए यूनिट परीक्षण कक्षा 1 की सुविधाओं का परीक्षण कर रहे हों, और कक्षा 2 के लिए यूनिट परीक्षण इसकी विशेषताओं का परीक्षण कर रहे हैं, और यह भी कि वे डेटाबेस को मार नहीं रहे हैं।

जब मैं अपने अधिकांश ढेर के माध्यम से चलता हूं और डेटाबेस को भी हिट करता हूं तो मैं एक परीक्षण परीक्षण को कॉल करता हूं।

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


मेरी 10 बिट्स: डी

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

एकीकरण टेस्ट अगला कदम है, यह एक या एक से अधिक घटकों को ले रहा है और यह सुनिश्चित कर रहा है कि वे एक साथ काम करें क्योंकि उन्हें चाहिए .. आप इस बात की जटिलताओं से ऊपर हैं कि घटक अलग-अलग कैसे काम करते हैं, लेकिन जब आप अपने एचटीएमएलएडिट नियंत्रण में एचटीएमएल दर्ज करते हैं, तो यह किसी भी तरह से जादुई जानता है कि यह वैध है या नहीं ..

हालांकि यह एक वास्तविक चलने योग्य रेखा है .. मैं बदले कोड को पूर्ण स्टॉप ^ _ ^ काम करने के लिए अधिक ध्यान केंद्रित करना चाहता हूं


मेरे लिए महत्वपूर्ण अंतर यह है कि एकीकरण परीक्षण बताता है कि कोई सुविधा काम कर रही है या टूटा हुआ है, क्योंकि वे वास्तविकता के करीब एक परिदृश्य में कोड को तनाव देते हैं। वे एक या अधिक सॉफ़्टवेयर विधियों या विशेषताओं का आह्वान करते हैं और परीक्षण करते हैं यदि वे अपेक्षित कार्य करते हैं।

इसके विपरीत, एक विधि परीक्षण एक यूनिट परीक्षण (अक्सर गलत) धारणा पर निर्भर करता है कि शेष सॉफ़्टवेयर सही तरीके से काम कर रहा है, क्योंकि यह स्पष्ट रूप से प्रत्येक निर्भरता को झुकाता है।

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

मान लें कि आपके पास कहीं ऐसा तरीका है

public SomeResults DoSomething(someInput) {
  var someResult = [Do your job with someInput];
  Log.TrackTheFactYouDidYourJob();
  return someResults;
}

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

Feature: To be able to do something
  In order to do something
  As someone
  I want the system to do this thing

Scenario: A sample one
  Given this situation
  When I do something
  Then what I get is what I was expecting for

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

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

अभ्यास में, आप कुछ ऐसा करते हैं

public SomeResults DoSomething(someInput) {
  var someResult = [Do your job with someInput];
  FakeAlwaysWorkingLog.TrackTheFactYouDidYourJob(); // Using a mock Log
  return someResults;
}

आप इसे निर्भरता इंजेक्शन, या कुछ फैक्टरी विधि या किसी भी नकली फ्रेमवर्क या परीक्षण के तहत कक्षा को विस्तारित कर सकते हैं।

मान लीजिए Log.DoSomething () में एक बग है। सौभाग्य से, गेरकिन spec इसे मिलेगा और आपके एंड-टू-एंड परीक्षण विफल हो जाएंगे।

सुविधा काम नहीं करेगी, क्योंकि लॉग टूटा हुआ है, न कि क्योंकि [कुछ इनपुट के साथ अपना काम करें] यह काम नहीं कर रहा है। और, वैसे, [कुछ इनपुट के साथ अपना काम करें] उस विधि के लिए एकमात्र ज़िम्मेदारी है।

साथ ही, मान लीजिए कि लॉग 100 अन्य विशेषताओं में 100 अन्य वर्गों के 100 अन्य तरीकों में प्रयोग किया जाता है।

हां, 100 फीचर्स असफल हो जाएंगी। लेकिन, सौभाग्य से, 100 एंड-टू-एंड टेस्ट भी असफल हो रहे हैं और समस्या का खुलासा कर रहे हैं। और, हाँ: वे सच कह रहे हैं

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

फिर भी, DoSomething की यूनिट टेस्ट हरा है, क्योंकि यह नकली लॉग का उपयोग कर रहा है, कभी भी तोड़ने के लिए बनाया गया है। और, हाँ: यह स्पष्ट रूप से झूठ बोल रहा है । यह एक टूटी हुई विशेषता को संचारित कर रहा है। यह कैसे उपयोगी हो सकता है?

(यदि DoSomething () का यूनिट परीक्षण विफल रहता है, तो सुनिश्चित करें: [कुछ इनपुट के साथ अपना काम करें] में कुछ कीड़े हैं।)

मान लीजिए यह एक टूटी हुई कक्षा के साथ एक प्रणाली है

एक बग कई विशेषताओं को तोड़ देगा, और कई एकीकरण परीक्षण विफल हो जाएंगे

दूसरी ओर, एक ही बग सिर्फ एक इकाई परीक्षण तोड़ देगा

अब, दो परिदृश्यों की तुलना करें।

एक ही बग सिर्फ एक इकाई परीक्षण तोड़ देगा

  • टूटी हुई लॉग का उपयोग कर आपकी सभी सुविधाएं लाल हैं
  • आपके सभी यूनिट परीक्षण हरे हैं, केवल लॉग के लिए यूनिट परीक्षण लाल है

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

अंतर

एकीकरण परीक्षण बताता है कि क्या काम नहीं कर रहा है। लेकिन वे अनुमान लगाने में कोई उपयोग नहीं कर रहे हैं कि समस्या कहां हो सकती है।

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

यही कारण है कि मुझे लगता है कि आपकी सजा "या यह सिर्फ एक इकाई परीक्षण है जो 2 वर्गों तक फैलती है" किसी भी तरह से विस्थापित है। एक इकाई परीक्षण कभी 2 वर्गों का विस्तार नहीं करना चाहिए।

यह उत्तर मूल रूप से मैंने जो लिखा है उसका सारांश है: यूनिट परीक्षण झूठ बोलते हैं, इसलिए मैं उन्हें प्यार करता हूं


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

एकीकरण परीक्षण वे परीक्षण होते हैं जहां एक ही समय में कई वर्ग और उनकी बातचीत का परीक्षण किया जाता है। इन मामलों में केवल कुछ निर्भरताएं फंसे / मजाक कर दी गई हैं।

मैं कंट्रोलर के एकीकरण परीक्षणों को तब तक नहीं बुलाऊंगा जब तक कि उनकी निर्भरता में से एक वास्तविक नहीं है (यानी फिक नहीं पड़ता) (उदाहरण के लिए IForms प्रमाणीकरण)।

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

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


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

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

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


यूनिट परीक्षण परीक्षण का एक तरीका है जो सत्यापित करता है कि स्रोत कोड की अलग-अलग इकाइयां ठीक से काम कर रही हैं।

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

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


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

एकीकरण परीक्षण: संबंधित संयुक्त मॉड्यूल को संयुक्त कार्यक्षमता के लिए एकसाथ परीक्षण करना।





integration-testing