इकाई, कार्यात्मक, स्वीकृति और एकीकरण परीक्षणों के बीच अंतर क्या है? [बन्द है]


799

इकाई, कार्यात्मक, स्वीकृति और एकीकरण परीक्षण (और किसी अन्य प्रकार के परीक्षण जो मैं उल्लेख करने में विफल रहा) के बीच अंतर क्या है?



1
मुझे लगता है कि आप लोड परीक्षण शामिल करना भूल गए!
टॉक सस्ता शो है मुझे कोड

जवाबों:


1350

जहाँ आप देखते हैं, उसके आधार पर आपको थोड़े अलग उत्तर मिलेंगे। मैंने इस विषय के बारे में बहुत कुछ पढ़ा है, और यहाँ मेरा आसवन है; फिर से, ये थोड़े ऊनी होते हैं और अन्य असहमत हो सकते हैं।

यूनिट टेस्ट

कार्यक्षमता की सबसे छोटी इकाई का परीक्षण, आम तौर पर एक विधि / कार्य (जैसे एक विशेष राज्य के साथ एक वर्ग दिया जाता है, वर्ग पर x विधि को कॉल करने से y होने का कारण बनता है)। यूनिट परीक्षणों को एक विशेष सुविधा पर केंद्रित किया जाना चाहिए (जैसे, स्टैक खाली होने पर पॉप विधि को कॉल करना InvalidOperationException)। यह जो कुछ भी छूता है उसे स्मृति में किया जाना चाहिए; इसका मतलब यह है कि परीक्षण कोड और परीक्षण के तहत कोड नहीं होना चाहिए:

  • (गैर-तुच्छ) सहयोगियों में कॉल करें
  • नेटवर्क तक पहुंचें
  • एक डेटाबेस मारो
  • फ़ाइल सिस्टम का उपयोग करें
  • एक धागा ऊपर स्पिन
  • आदि।

किसी भी प्रकार की निर्भरता जो धीमी / कठिन है / समझने / आरंभ करने / हेरफेर करने के लिए उचित तकनीकों का उपयोग करते हुए ठूंसा / ठगा / ठगा जाना चाहिए, ताकि आप इस बात पर ध्यान केंद्रित कर सकें कि कोड की इकाई क्या कर रही है, न कि इसकी निर्भरता क्या है।

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

एकीकरण टेस्ट

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

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

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

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

कार्यात्मक परीक्षण

विनिर्देश के खिलाफ दिए गए इनपुट के लिए परिणामों की तुलना करके कार्यात्मक परीक्षण शुद्धता के लिए एक विशेष सुविधा की जांच करते हैं। कार्यात्मक परीक्षण खुद को मध्यवर्ती परिणामों या साइड-इफेक्ट्स के साथ चिंतित नहीं करते हैं, बस परिणाम (वे परवाह नहीं करते हैं कि एक्स करने के बाद, ऑब्जेक्ट वाई में स्थिति है)। उन्हें विनिर्देश के भाग का परीक्षण करने के लिए लिखा जाता है जैसे, "कॉलिंग फंक्शन स्क्वायर (x) 2 रिटर्न 4 के तर्क के साथ"।

स्वीकृति टेस्ट

स्वीकृति परीक्षण को दो प्रकारों में विभाजित किया गया लगता है:

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

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

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

निष्कर्ष

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


19
+1। @ मार्क सिम्पसन कार्यात्मक और स्वीकृति परीक्षण को "सिस्टम परीक्षण" के रूप में अभिव्यक्त कर सकता है? अंत-से-अंत परीक्षण कहां फिट होते हैं? (मेरे स्वाद के लिए बहुत ज्यादा अलग शब्दावली)
टॉरस्टेन Engelbrecht

3
@ फ्रांज मैं क्षमता और सहजता के बारे में बोल रहा था जिसके साथ आप कोड की अलग-थलग इकाइयों के माध्यम से जोखिम को कम कर सकते हैं और उनका परीक्षण कर सकते हैं। हालांकि आप सही हैं, मैंने जिस भाषा का उपयोग किया था वह थोड़ी ढीली थी, क्योंकि परीक्षण यह साबित नहीं कर सकते कि कोड बग-मुक्त है।
मार्क सिम्पसन

15
अप-वोट के बावजूद, यह पूरी तरह से गलत है। इकाई-परीक्षण "तुच्छ" सहयोगियों का भी परीक्षण नहीं करते हैं; किसी भी इंजेक्शन निर्भरता का मजाक उड़ाया जाना चाहिए। कार्यात्मक परीक्षण "व्यवहार" का परीक्षण नहीं करते हैं; वे केवल "फ़ंक्शन", यानी "एफ (ए) रिटर्न बी" का परीक्षण करते हैं। यदि साइड-इफ़ेक्ट मायने रखता है, तो यह "व्यवहार" है। यदि इनमें सिस्टम-कॉल शामिल हैं, तो वे "सिस्टम" परीक्षण भी हैं, जैसे कि "व्यवहार प्रणाली परीक्षण"। (नीचे Testerab @ देखें।) "स्वीकृति" परीक्षण "व्यवहार प्रणाली परीक्षण" का एक सबसेट है जो पूर्ण-स्टैक को कवर करते हैं। "एकीकरण" ऊपर की ओर परीक्षण करता है, वास्तविक उपयोग का अनुकरण करता है; यह परीक्षण करता है कि सभी निर्भरता को अभ्यास में एकीकृत किया जा सकता है।
cdunn2001

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

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

90

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

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

http://googletesting.blogspot.com/2010/12/test-sizes.html

मुझे लगता है कि आपके वर्तमान कार्यस्थल के लिए छोटे, मध्यम और बड़े के बीच अंतर Google के भिन्न हो सकते हैं।

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


6
+1 Google परीक्षण नामकरण चीज़ के लिए क्योंकि यह विभिन्न संगठनों / लोगों की परीक्षणों के लिए अलग-अलग परिभाषा है, इस पर थोड़ा परिप्रेक्ष्य देने में मदद करता है।
मार्क सिम्पसन

यह भी एक बहुत अच्छा लेख है कि आप परीक्षण के विभिन्न स्तरों का उपयोग क्यों करेंगे और आप उनमें से क्या प्राप्त करेंगे: kentcdodds.com/blog/unit-vs-integration-vs-e2e-tests
परीक्षक

63

http://martinfowler.com/articles/microservice-testing/

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

मैं उनके सारांश स्लाइड से उद्धृत करूंगा:

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

यह एक शानदार लेख है। हालाँकि, मैं पूरी तरह से नहीं समझता कि अनुबंध परीक्षण क्या है। क्या वे घटक और एकीकरण परीक्षणों के प्रकाश में निरर्थक नहीं हैं?
घरघराहट

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

2
यह Fowler लेख btw नहीं है, बस वहाँ तैनात हैं। अनुबंध परीक्षण वे परीक्षण होते हैं जो क्लाइंट द्वारा आपकी सेवा का उपयोग शुरू करने के बाद किए जाते हैं, आप तब ऐसे परीक्षण लिखते हैं जो चेक करते हैं यदि आपने उस विशेष क्लाइंट के लिए कुछ नहीं तोड़ा है, अर्थात सेवा एपीआई बदलें।
राफेल żużyński

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

31

यूनिट टेस्टिंग - जैसा कि नाम से पता चलता है, यह विधि ऑब्जेक्ट स्तर पर परीक्षण करती है। किसी भी त्रुटि के लिए व्यक्तिगत सॉफ़्टवेयर घटकों का परीक्षण किया जाता है। इस परीक्षण के लिए कार्यक्रम के ज्ञान की आवश्यकता होती है और परीक्षण कोड यह जांचने के लिए बनाए जाते हैं कि क्या सॉफ्टवेयर जैसा व्यवहार करता है वैसा ही किया जाता है।

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

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

एकीकरण परीक्षण - व्यक्तिगत मॉड्यूल जो पहले से ही इकाई परीक्षण के अधीन हैं, एक दूसरे के साथ एकीकृत हैं। आम तौर पर दो दृष्टिकोणों का पालन किया जाता है:

1) टॉप-डाउन
2) बॉटम-अप


टॉप-डाउन और बॉटम-अप से आपका क्या मतलब है? क्या एकीकरण अंत परीक्षण के समान है?
tamj0rd2

18

यह बहुत सरल है।

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

  2. कार्यात्मक परीक्षण: यह परीक्षण परीक्षण (क्यूए) चरण में किया जाता है और यह ब्लैक बॉक्स परीक्षण का एक हिस्सा है। पहले लिखित परीक्षा के मामलों का वास्तविक निष्पादन। यह परीक्षण वास्तव में परीक्षकों द्वारा किया जाता है, वे साइट में किसी भी कार्यक्षमता का वास्तविक परिणाम पाते हैं और इस परिणाम की अपेक्षा परिणाम से करते हैं। अगर उन्हें कोई असमानता मिली तो यह एक बग है।

  3. स्वीकृति परीक्षण: UAT के रूप में जाना जाता है। और यह वास्तव में परीक्षक के साथ-साथ डेवलपर्स, प्रबंधन टीम, लेखक, लेखकों और इस परियोजना में शामिल सभी लोगों द्वारा किया जाता है। यह सुनिश्चित करने के लिए कि परियोजना अंततः बग मुक्त होने के लिए तैयार है।

  4. एकीकरण परीक्षण: परियोजना को पूरा करने के लिए कोड की इकाइयाँ (बिंदु 1 में बताई गई) एक दूसरे के साथ एकीकृत होती हैं। कोड की इन इकाइयों को अलग-अलग कोडिंग तकनीक में लिखा जा सकता है या ये अलग-अलग संस्करण हो सकते हैं, इसलिए डेवलपर्स द्वारा यह सुनिश्चित करने के लिए यह परीक्षण किया जाता है कि कोड की सभी इकाइयाँ अन्य के साथ संगत हैं और एकीकरण का कोई मुद्दा नहीं है।


1
@OlegTsyba सवाल का जवाब दिए जाने के 4 साल बाद आया।
बेंटेश

1
हमें कभी भी "यह बहुत सरल है" के साथ एक जवाब शुरू नहीं करना चाहिए, खासकर अगर यह इस तरह का एक जटिल विषय है।
milosmns

6

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

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

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

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

1
सबसे छोटा उजागर कोड। बड़ा अंतर।
cdunn2001

5

मैं आपको एक व्यावहारिक उदाहरण और कोई सिद्धांत सामग्री के साथ समझाऊंगा:

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

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

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

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


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

4

इकाई परीक्षण: किसी अनुप्रयोग में व्यक्तिगत मॉड्यूल या स्वतंत्र घटक का परीक्षण इकाई परीक्षण के लिए जाना जाता है, इकाई परीक्षण डेवलपर द्वारा किया जाएगा।

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

किसी एप्लिकेशन की व्यक्तिगत कार्यक्षमता की जाँच करने वाला फ़ंक्शनल परीक्षण का अर्थ कार्यात्मक परीक्षण है

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

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