unit testing - यूनिट परीक्षण बनाम कार्यात्मक परीक्षण




यूनिट टेस्ट क्या है (9)

यूनिट परीक्षण और कार्यात्मक परीक्षणों के बीच क्या अंतर है? क्या एक इकाई परीक्षण भी एक समारोह का परीक्षण कर सकते हैं?


यूनिट परीक्षण एक डेवलपर को बताते हैं कि कोड सही काम कर रहा है; कार्यात्मक परीक्षण एक डेवलपर को बताते हैं कि कोड सही चीजें कर रहा है

आप यूनिट परीक्षण बनाम कार्यात्मक परीक्षण के बारे में और अधिक पढ़ सकते हैं

इकाई परीक्षण और कार्यात्मक परीक्षण की एक अच्छी तरह से समझाया गया वास्तविक जीवन समानता निम्नानुसार वर्णित किया जा सकता है,

कई बार एक प्रणाली के विकास की तुलना एक घर के निर्माण से की जाती है। हालांकि यह समानता बिल्कुल सही नहीं है, हम इकाई और कार्यात्मक परीक्षणों के बीच अंतर को समझने के प्रयोजनों के लिए इसे बढ़ा सकते हैं।

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

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

मकान मालिक घर पर कार्यात्मक परीक्षण कर रहा है। उसके पास उपयोगकर्ता का परिप्रेक्ष्य है।

इमारत निरीक्षक घर पर यूनिट परीक्षण कर रहा है। उसके पास बिल्डर का परिप्रेक्ष्य है।

संक्षेप में,

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

कार्यात्मक टेस्ट उपयोगकर्ता के परिप्रेक्ष्य से लिखे गए हैं। वे सुनिश्चित करते हैं कि सिस्टम काम कर रहा है क्योंकि उपयोगकर्ता इसकी अपेक्षा कर रहे हैं।


"कार्यात्मक परीक्षण" का मतलब यह नहीं है कि आप अपने कोड में एक फ़ंक्शन (विधि) का परीक्षण कर रहे हैं। इसका मतलब है, आम तौर पर, कि आप सिस्टम कार्यक्षमता का परीक्षण कर रहे हैं - जब मैं कमांड लाइन पर foo file.txt चलाता हूं, तो file.txt में पंक्तियां उलट जाती हैं, शायद। इसके विपरीत, एक इकाई परीक्षण आम तौर पर एक विधि के एक मामले को कवर करता है - length("hello") 5 लौटाई जानी चाहिए, और length("hi") 2 वापस आनी चाहिए।

यूनिट परीक्षण और कार्यात्मक परीक्षण के बीच लाइन पर आईबीएम के ले को भी देखें।


TLDR:

प्रश्न का उत्तर देने के लिए: यूनिट परीक्षण कार्यात्मक परीक्षण का एक उप प्रकार है।

दो बड़े समूह हैं: कार्यात्मक और गैर-कार्यात्मक परीक्षण। मैंने पाया कि सबसे अच्छा (गैर-संपूर्ण) चित्र यह है (स्रोत: www.inflectra.com ):

(1) यूनिट परीक्षण: कोड के छोटे स्निपेट का परीक्षण (कार्य / विधियां)। इसे (व्हाइट-बॉक्स) कार्यात्मक परीक्षण के रूप में माना जा सकता है।

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

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

फिर आप तीसरे मॉड्यूल को एकीकृत करते हैं, फिर 4 वें और 5 वें क्रम में आप या आपकी टीम फिट बैठते हैं, और एक बार सभी जिग्स टुकड़े एक साथ रखे जाते हैं, तो आता है

(3) सिस्टम परीक्षण: पूरी तरह से एसडब्ल्यू परीक्षण। यह बहुत सारे "एक साथ सभी टुकड़ों का एकीकरण परीक्षण" है।

यदि यह ठीक है, तो आता है

(4) स्वीकृति परीक्षण: क्या हमने वास्तव में ग्राहक के लिए क्या पूछा है? बेशक, स्वीकृति परीक्षण पूरे जीवन चक्र में किया जाना चाहिए , न केवल अंतिम चरण में, जहां आप महसूस करते हैं कि ग्राहक एक स्पोर्ट्सकार चाहता था और आपने एक वैन बनाया था।


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

यूनिट परीक्षण परीक्षण स्तर में से एक है और कार्यात्मक परीक्षण परीक्षण का प्रकार है।

मूल रूप से:

एक प्रणाली (या घटक) का कार्य 'यह क्या करता है' है। यह आमतौर पर एक आवश्यकता विनिर्देश, एक कार्यात्मक विनिर्देश, या उपयोग मामलों में वर्णित है।

जबकि

घटक परीक्षण, जिसे इकाई, मॉड्यूल और प्रोग्राम परीक्षण के रूप में भी जाना जाता है, दोषों की खोज करता है, और सॉफ़्टवेयर (जैसे मॉड्यूल, प्रोग्राम, ऑब्जेक्ट्स, क्लासेस इत्यादि) की कार्यप्रणाली को सत्यापित करता है जो अलग-अलग परीक्षण योग्य होते हैं।

आईएसटीक्यूबी घटक / इकाई परीक्षण के अनुसार कार्यात्मक या कार्यात्मक नहीं हो सकता है:

घटक परीक्षण में कार्यक्षमता का परीक्षण और संसाधन-व्यवहार (जैसे मेमोरी लीक), प्रदर्शन या मजबूती परीक्षण, साथ ही संरचनात्मक परीक्षण (जैसे निर्णय कवरेज) जैसी विशिष्ट गैर-कार्यात्मक विशेषताओं का परीक्षण शामिल हो सकता है।

सॉफ्टवेयर परीक्षण की नींव से उद्धरण - ISTQB प्रमाणीकरण


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

हैरी पेर्सियल द्वारा "पायथन टीडीडी" पुस्तक से लिया गया


यूनिट टेस्ट - सभी निर्भरताओं के साथ एक वर्ग में एक विधि (फ़ंक्शन) जैसे किसी व्यक्तिगत इकाई का परीक्षण करना।

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


इकाई का परीक्षण

यूनिट परीक्षण में कोड की छोटी इकाई का परीक्षण शामिल होता है जो आमतौर पर कार्य या विधियां होती है। इकाई परीक्षण ज्यादातर इकाई / विधि / समारोह के डेवलपर द्वारा किया जाता है, क्योंकि वे किसी फ़ंक्शन के मूल को समझते हैं। डेवलपर का मुख्य लक्ष्य इकाई परीक्षणों द्वारा कोड को कवर करना है।

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

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

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


यूनिट टेस्ट : - इकाई परीक्षण विशेष रूप से उत्पाद घटक के उत्पादन के दौरान विशेष रूप से उत्पाद घटक का परीक्षण करने के लिए किया जाता है। यूनिट के अनुसार उत्पाद का परीक्षण करने में जुनीत और नूनिट प्रकार के टूल भी आपकी मदद करेंगे। ** एकीकरण के बाद मुद्दों को हल करने के बजाय विकास में जल्दी इसे सुलझाने में हमेशा आराम होता है।

कार्यात्मक परीक्षण: - जैसा कि परीक्षण का संबंध है, परीक्षण के दो मुख्य प्रकार हैं 1. कार्यात्मक परीक्षण 2. गैर-कार्यात्मक परीक्षण।

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


  • एक यूनिट टेस्ट व्यवहार की एक स्वतंत्र इकाई का परीक्षण करता है । व्यवहार की इकाई क्या है? यह प्रणाली का सबसे छोटा टुकड़ा है जिसे स्वतंत्र रूप से यूनिट परीक्षण किया जा सकता है। (यह परिभाषा वास्तव में परिपत्र है, आईओओ यह वास्तव में एक परिभाषा नहीं है, लेकिन ऐसा लगता है कि यह अभ्यास में काफी अच्छा काम करता है, क्योंकि आप आसानी से समझ सकते हैं।)

  • एक कार्यात्मक परीक्षण कार्यक्षमता का एक स्वतंत्र टुकड़ा परीक्षण करता है।

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

  • कार्यक्षमता का एक टुकड़ा आमतौर पर कई वस्तुओं और कई वस्तुओं में कटौती करता है और अक्सर कई वास्तुशिल्प परतों के माध्यम से होता है।

  • एक यूनिट टेस्ट कुछ ऐसा होगा: जब मैं validate_country_code() फ़ंक्शन को कॉल करता हूं और इसे देश कोड 'ZZ' पास करता हूं तो उसे false वापसी करनी चाहिए।

  • एक कार्यात्मक परीक्षण होगा: जब मैं ZZ देश कोड के साथ शिपिंग फॉर्म भरता हूं, तो मुझे एक सहायता पृष्ठ पर रीडायरेक्ट किया जाना चाहिए जो मुझे मेनू से अपना देश कोड चुनने की अनुमति देता है।

  • यूनिट परीक्षण डेवलपर्स द्वारा डेवलपर के परिप्रेक्ष्य से लिखे गए हैं।

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

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

  • यूनिट परीक्षण अक्सर बदलते हैं, कार्यात्मक परीक्षणों को किसी बड़ी रिलीज में कभी नहीं बदला जाना चाहिए।





functional-testing