इकाई परीक्षणों और कार्यात्मक परीक्षणों के बीच अंतर क्या है? क्या एक इकाई परीक्षण एक फ़ंक्शन का भी परीक्षण कर सकता है?
इकाई परीक्षणों और कार्यात्मक परीक्षणों के बीच अंतर क्या है? क्या एक इकाई परीक्षण एक फ़ंक्शन का भी परीक्षण कर सकता है?
जवाबों:
यूनिट टेस्ट - एक वर्ग में एक विधि (फ़ंक्शन) के रूप में एक व्यक्तिगत इकाई का परीक्षण, सभी निर्भरता के साथ मजाक किया गया।
कार्यात्मक परीक्षण - एकेए इंटीग्रेशन टेस्ट, एक सिस्टम में कार्यक्षमता का एक टुकड़ा परीक्षण। यह कई तरीकों का परीक्षण करेगा और डेटाबेस या वेब सेवाओं जैसी निर्भरता के साथ बातचीत कर सकता है।
यूनिट परीक्षण एक डेवलपर को बताता है कि कोड सही चीजें कर रहा है; कार्यात्मक परीक्षण एक डेवलपर को बताते हैं कि कोड सही चीजें कर रहा है ।
आप यूनिट टेस्टिंग बनाम फंक्शनल टेस्टिंग में अधिक पढ़ सकते हैं
यूनिट परीक्षण और कार्यात्मक परीक्षण की एक अच्छी तरह से व्याख्या की गई वास्तविक जीवन शैली को निम्नानुसार वर्णित किया जा सकता है,
कई बार एक घर के निर्माण के लिए एक प्रणाली के विकास की तुलना की जाती है। हालांकि यह सादृश्य काफी सही नहीं है, हम इसे इकाई और कार्यात्मक परीक्षणों के बीच अंतर को समझने के उद्देश्य से बढ़ा सकते हैं।
यूनिट परीक्षण एक भवन निरीक्षक के अनुरूप है जो एक घर के निर्माण स्थल पर जाता है। वह घर की विभिन्न आंतरिक प्रणालियों, नींव, फ़्रेमिंग, इलेक्ट्रिकल, प्लंबिंग, और इसी तरह पर केंद्रित है। वह सुनिश्चित करता है (परीक्षण) कि घर के हिस्से सही तरीके से और सुरक्षित रूप से काम करेंगे, यानी बिल्डिंग कोड को पूरा करें।
इस परिदृश्य में कार्यात्मक परीक्षण गृहस्वामी के समान निर्माण स्थल पर जाने के अनुरूप हैं। वह मानता है कि आंतरिक प्रणाली उचित व्यवहार करेगी, कि भवन निरीक्षक अपना कार्य कर रहा है। गृहस्वामी इस बात पर केंद्रित है कि इस घर में रहना कैसा होगा। वह इस बात से चिंतित है कि घर कैसा दिखता है, विभिन्न कमरे एक आरामदायक आकार हैं, क्या घर परिवार की जरूरतों को पूरा करता है, सुबह की धूप को पकड़ने के लिए एक अच्छी जगह में खिड़कियां हैं।
गृहस्वामी घर पर कार्यात्मक परीक्षण कर रहा है। उसके पास उपयोगकर्ता का दृष्टिकोण है।
भवन निरीक्षक घर पर यूनिट परीक्षण कर रहा है। उसके पास बिल्डर का नजरिया है।
सारांश के रूप में,
यूनिट टेस्ट को प्रोग्रामर्स के नजरिए से लिखा जाता है। वे यह सुनिश्चित करने के लिए बने हैं कि किसी वर्ग का एक विशेष तरीका (या एक इकाई ) विशिष्ट कार्यों का एक सेट करता है।
कार्यात्मक परीक्षण उपयोगकर्ता के दृष्टिकोण से लिखे गए हैं । वे यह सुनिश्चित करते हैं कि सिस्टम कार्य कर रहा है क्योंकि उपयोगकर्ता इसकी अपेक्षा कर रहे हैं।
एक इकाई परीक्षण व्यवहार की एक स्वतंत्र इकाई का परीक्षण करता है । व्यवहार की एक इकाई क्या है? यह सिस्टम का सबसे छोटा टुकड़ा है जिसे स्वतंत्र रूप से परीक्षण किया जा सकता है। (यह परिभाषा वास्तव में परिपत्र, यह वास्तव में एक परिभाषा नहीं है IOW सब पर है, लेकिन यह, व्यवहार में काफी अच्छी तरह से काम करने लगता है क्योंकि आप तरह-की यह सहज समझ सकते हैं।)
एक कार्यात्मक परीक्षण कार्यक्षमता का एक स्वतंत्र टुकड़ा परीक्षण करता है।
व्यवहार की एक इकाई बहुत छोटी है: जबकि मैं बिल्कुल इस "एक इकाई परीक्षण प्रति विधि" मंत्र को नापसंद करता हूं, आकार के नजरिए से यह सही है। व्यवहार की एक इकाई एक विधि के एक भाग और शायद कुछ तरीकों के बीच कुछ है। अधिकांश वस्तु पर, लेकिन एक से अधिक नहीं।
कार्यक्षमता का एक टुकड़ा आमतौर पर कई तरीकों और कई वस्तुओं और अक्सर कई वास्तुशिल्प परतों के माध्यम से कटौती शामिल करता है।
एक यूनिट टेस्ट कुछ इस तरह होगा: जब मैं validate_country_code()
फ़ंक्शन को कॉल करता हूं और इसे देश कोड पास करता हूं तो 'ZZ'
इसे वापस आ जाना चाहिए false
।
एक कार्यात्मक परीक्षण होगा: जब मैं शिपिंग फॉर्म को किसी देश कोड के साथ भरता हूं ZZ
, तो मुझे एक सहायता पृष्ठ पर पुनर्निर्देशित किया जाना चाहिए, जो मुझे अपने देश के कोड को एक मेनू से चुनने की अनुमति देता है।
डेवलपर के विकासकर्ता के दृष्टिकोण से, यूनिट परीक्षण डेवलपर्स द्वारा लिखे गए हैं।
कार्यात्मक परीक्षण उपयोगकर्ता का सामना कर सकते हैं, जिस स्थिति में वे उपयोगकर्ताओं के साथ मिलकर डेवलपर्स द्वारा लिखे गए हैं (या शायद उपयोगकर्ताओं द्वारा सही उपकरण और सही उपयोगकर्ताओं के साथ भी), उपयोगकर्ताओं के लिए, उपयोगकर्ता के दृष्टिकोण से। या वे डेवलपर का सामना कर सकते हैं (उदाहरण के लिए, जब वे कार्यक्षमता के कुछ आंतरिक टुकड़े का वर्णन करते हैं, जो उपयोगकर्ता की परवाह नहीं करता है), जिस स्थिति में वे डेवलपर्स द्वारा लिखे गए हैं, डेवलपर्स के लिए, लेकिन फिर भी उपयोगकर्ता के दृष्टिकोण से।
पूर्व मामले में, कार्यात्मक परीक्षण भी स्वीकृति परीक्षणों के रूप में कार्य कर सकते हैं और कार्यात्मक आवश्यकताओं या एक कार्यात्मक विनिर्देश के निष्पादन योग्य एन्कोडिंग के रूप में, बाद के मामले में, वे एकीकरण परीक्षण के रूप में भी काम कर सकते हैं।
यूनिट परीक्षण बार-बार बदलते हैं, कार्यात्मक परीक्षणों को कभी भी प्रमुख रिलीज के भीतर नहीं बदलना चाहिए।
TLDR:
प्रश्न का उत्तर देने के लिए: यूनिट परीक्षण कार्यात्मक परीक्षण का एक उपप्रकार है।
दो बड़े समूह हैं: कार्यात्मक और गैर-कार्यात्मक परीक्षण। मेरे द्वारा पाया गया सबसे अच्छा (गैर-पूर्ण) चित्रण (स्रोत: www.inflectra.com ):
(1) यूनिट टेस्टिंग: कोड के छोटे स्निपेट (कार्यों / विधियों) का परीक्षण। इसे (श्वेत-बॉक्स) कार्यात्मक परीक्षण माना जा सकता है।
जब फ़ंक्शन एक साथ रखे जाते हैं, तो आप एक मॉड्यूल = एक स्टैंडअलोन टुकड़ा बनाते हैं, संभवतः एक उपयोगकर्ता इंटरफ़ेस के साथ जिसे परीक्षण किया जा सकता है (मॉड्यूल परीक्षण)। एक बार जब आपके पास कम से कम दो अलग-अलग मॉड्यूल होते हैं, तो आप उन्हें एक साथ गोंद देते हैं और फिर आते हैं:
(2) एकीकरण परीक्षण: जब आप (उप) मॉड्यूल या (उप) सिस्टम के दो या अधिक टुकड़े एक साथ रखते हैं और देखते हैं कि क्या वे एक साथ निकल खेलते हैं।
फिर आप 3 मॉड्यूल को एकीकृत करते हैं, फिर 4 या 5 वें क्रम में जो भी आप या आपकी टीम फिट देखते हैं, और एक बार सभी आरा टुकड़े एक साथ आते हैं, वह आता है
(3) सिस्टम टेस्टिंग: एक पूरे के रूप में SW का परीक्षण करना। यह बहुत अधिक " सभी टुकड़ों का एक साथ एकीकरण परीक्षण " है।
अगर यह ठीक है, तो आता है
(४) स्वीकृति परीक्षण: क्या हमने वह निर्माण किया जो ग्राहक ने वास्तव में मांगा था? बेशक, स्वीकृति परीक्षण पूरे जीवनकाल में किया जाना चाहिए , न कि केवल अंतिम चरण में, जहां आपको एहसास होता है कि ग्राहक एक स्पोर्ट्सकार चाहता था और आपने एक वैन का निर्माण किया था।
Functional Test
से एक मानकीकृत शब्द नहीं है और इसका अलग-अलग लोगों के लिए अलग अर्थ है।
"कार्यात्मक परीक्षण" का मतलब यह नहीं है कि आप अपने कोड में एक फ़ंक्शन (विधि) का परीक्षण कर रहे हैं। इसका मतलब है, आम तौर पर, कि आप सिस्टम कार्यक्षमता का परीक्षण कर रहे हैं - जब मैं foo file.txt
कमांड लाइन पर चलता हूं , तो लाइनें file.txt
उलट हो जाती हैं, शायद। इसके विपरीत, एक एकल इकाई परीक्षण आम तौर पर एक एकल विधि के एक मामले को कवर करता है - length("hello")
5 वापस आना चाहिए, और length("hi")
2 वापस आना चाहिए।
यूनिट टेस्टिंग और फ़ंक्शनल टेस्टिंग के बीच आईबीएम की लाइन को भी देखें ।
हालांकि, मूल अंतर यह है कि कार्यात्मक परीक्षण उपयोगकर्ता के दृष्टिकोण से, बाहर से आवेदन का परीक्षण करते हैं। यूनिट परीक्षण प्रोग्रामर के दृष्टिकोण से, अंदर से आवेदन का परीक्षण करते हैं। कार्यात्मक परीक्षण आपको सही कार्यक्षमता के साथ एक एप्लिकेशन बनाने में मदद करनी चाहिए, और आपको कभी भी गलती से इसे तोड़ने की गारंटी नहीं देते हैं। यूनिट परीक्षण आपको ऐसे कोड लिखने में मदद करनी चाहिए जो स्वच्छ और बग मुक्त हों।
हैरी पर्सीवल की पुस्तक "पायथन टीडीडी" से लिया गया
ISTQB के अनुसार वे दोनों तुलनात्मक नहीं हैं। कार्यात्मक परीक्षण एकीकरण परीक्षण नहीं है।
इकाई परीक्षण परीक्षण स्तर में से एक है और कार्यात्मक परीक्षण परीक्षण का प्रकार है।
मूल रूप से:
एक प्रणाली (या घटक) का कार्य 'यह क्या करता है' है। यह आमतौर पर एक आवश्यकताओं के विनिर्देश, एक कार्यात्मक विनिर्देश, या उपयोग के मामलों में वर्णित है।
जबकि
घटक परीक्षण, जिसे इकाई, मॉड्यूल और प्रोग्राम परीक्षण के रूप में भी जाना जाता है, सॉफ्टवेयर के कामकाज में दोषों की खोज करता है और सत्यापित करता है (जैसे मॉड्यूल, प्रोग्राम, ऑब्जेक्ट, क्लासेस, आदि) जो अलग-अलग परीक्षण योग्य हैं।
ISTQB घटक के अनुसार / इकाई परीक्षण कार्यात्मक या नहीं-कार्यात्मक हो सकता है:
घटक परीक्षण में कार्यक्षमता और विशिष्ट गैर-कार्यात्मक विशेषताओं का परीक्षण शामिल हो सकता है जैसे संसाधन-व्यवहार (जैसे मेमोरी लीक), प्रदर्शन या मजबूती परीक्षण, साथ ही संरचनात्मक परीक्षण (जैसे निर्णय कवरेज)।
सॉफ्टवेयर परीक्षण की नींव से उद्धरण - ISTQB प्रमाणीकरण
रेल में, इकाई फ़ोल्डर आपके मॉडल के लिए परीक्षण आयोजित करने के लिए होता है, कार्यात्मक फ़ोल्डर आपके नियंत्रकों के लिए परीक्षण आयोजित करने के लिए होता है, और एकीकरण फ़ोल्डर में परीक्षण को नियंत्रित करने के लिए होता है जिसमें किसी भी संख्या में नियंत्रक शामिल होते हैं। फिक्स्चर परीक्षण डेटा को व्यवस्थित करने का एक तरीका है; वे जुड़नार फ़ोल्डर में रहते हैं। Test_helper.rb फ़ाइल आपके परीक्षणों के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन रखती है। यू यात्रा कर सकते हैं इस ।
जिस तरह से मुझे लगता है कि यह इस तरह है: एक इकाई परीक्षण यह स्थापित करता है कि कोड वह करता है जो आपने कोड करने का इरादा किया था (उदाहरण के लिए आप पैरामीटर ए और बी जोड़ना चाहते थे, आप वास्तव में उन्हें जोड़ते हैं, और उन्हें घटाएं नहीं) कार्यात्मक परीक्षण परीक्षण करते हैं कि सभी कोड सही परिणाम प्राप्त करने के लिए एक साथ काम करते हैं, जिससे आपको कोड का वास्तव में करने का इरादा सिस्टम में सही परिणाम मिलता है।
AFAIK, यूनिट परीक्षण कार्यात्मक परीक्षण नहीं है। एक छोटे से उदाहरण से समझाता हूं। आप परीक्षण करना चाहते हैं कि क्या ईमेल वेब ऐप की लॉगिन कार्यक्षमता काम कर रही है या नहीं, जैसा कि एक उपयोगकर्ता करेगा। उसके लिए, आपके कार्यात्मक परीक्षण इस तरह होने चाहिए।
1- existing email, wrong password -> login page should show error "wrong password"!
2- non-existing email, any password -> login page should show error "no such email".
3- existing email, right password -> user should be taken to his inbox page.
4- no @symbol in email, right password -> login page should say "errors in form, please fix them!"
क्या हमारे कार्यात्मक परीक्षणों की जाँच करनी चाहिए कि क्या हम अमान्य इनपुटों के साथ लॉगिन कर सकते हैं? उदाहरण के लिए। ईमेल में कोई @ प्रतीक नहीं है, उपयोगकर्ता नाम में एक से अधिक डॉट (केवल एक डॉट की अनुमति है), .com @ से पहले प्रकट होता है आदि? आम तौर पर, नहीं! उस तरह का परीक्षण आपकी इकाई परीक्षणों में जाता है।
आप जाँच सकते हैं कि क्या अवैध इनपुट यूनिट परीक्षणों के अंदर अस्वीकार कर दिए गए हैं जैसा कि नीचे दिए गए परीक्षणों में दिखाया गया है।
class LoginInputsValidator
method validate_inputs_values(email, password)
1-If email is not like string.string@myapp.com, then throw error.
2-If email contains abusive words, then throw error.
3-If password is less than 10 chars, throw error.
ध्यान दें कि कार्यात्मक परीक्षण 4 वास्तव में इकाई परीक्षण 1 क्या कर रहा है। कभी-कभी, कार्यात्मक परीक्षण विभिन्न कारणों से यूनिट परीक्षणों द्वारा किए गए परीक्षण के कुछ (सभी नहीं) को दोहरा सकते हैं। हमारे उदाहरण में, हम यह जांचने के लिए कार्यात्मक परीक्षण 4 का उपयोग करते हैं कि क्या कोई विशेष त्रुटि संदेश अमान्य इनपुट दर्ज करने पर दिखाई देता है । हम परीक्षण करना चाहते हैं कि क्या सभी खराब इनपुट खारिज हो गए हैं या नहीं। यह इकाई परीक्षणों का काम है।
इकाई का परीक्षण
यूनिट परीक्षण में कोड की सबसे छोटी इकाई का परीक्षण शामिल है जो आमतौर पर फ़ंक्शन या विधियां हैं। यूनिट टेस्टिंग ज्यादातर यूनिट / मेथड / फंक्शन के डेवलपर द्वारा किया जाता है, क्योंकि वे एक फ़ंक्शन के मूल को समझते हैं। डेवलपर का मुख्य लक्ष्य इकाई परीक्षणों द्वारा कोड को कवर करना है।
इसकी एक सीमा है कि कुछ कार्यों को इकाई परीक्षणों के माध्यम से नहीं देखा जा सकता है। सभी यूनिट परीक्षणों के सफल समापन के बाद भी; यह उत्पाद के सही संचालन की गारंटी नहीं देता है। इसी फ़ंक्शन का उपयोग सिस्टम के कुछ हिस्सों में किया जा सकता है जबकि यूनिट टेस्ट केवल एक उपयोग के लिए लिखा गया था।
क्रियात्मक परीक्षण
यह एक प्रकार का ब्लैक बॉक्स परीक्षण है जहां कोड देखे बिना किसी उत्पाद के कार्यात्मक पहलुओं पर परीक्षण किया जाएगा। कार्यात्मक परीक्षण ज्यादातर एक समर्पित सॉफ्टवेयर परीक्षक द्वारा किया जाता है। इसमें उत्पाद की निर्दिष्ट कार्यक्षमता का परीक्षण करने के लिए गैर-मानकीकृत डेटा का उपयोग करके सकारात्मक, नकारात्मक और बीवीए तकनीक शामिल होगी। इकाई परीक्षणों की तुलना में कार्यात्मक परीक्षणों द्वारा परीक्षण कवरेज में सुधार किया जाता है। यह परीक्षण के लिए एप्लिकेशन GUI का उपयोग करता है, इसलिए यह निर्धारित करना आसान है कि इंटरफ़ेस का एक विशिष्ट हिस्सा यह निर्धारित करने के लिए ज़िम्मेदार है कि कोई कोड किसके लिए जिम्मेदार है।
बहुत ही सरलता से हम कह सकते हैं:
अधिक पढ़ सकते हैं यहाँ ।
यूनिट टेस्ट : - यूनिट परीक्षण का उपयोग विशेष रूप से घटक द्वारा उत्पाद घटक का परीक्षण करने के लिए किया जाता है, जबकि उत्पाद का विकास चल रहा है। यूनिट के अनुसार जूनिट और नुनिट प्रकार के उपकरण भी आपको उत्पाद का परीक्षण करने में मदद करेंगे। ** एकीकरण के बाद के मुद्दों को हल करने के बजाय, यह विकास में जल्दी हल करने के लिए हमेशा आरामदायक होता है।
कार्यात्मक परीक्षण: - जहां तक परीक्षण का संबंध है, दो मुख्य प्रकार के परीक्षण हैं जैसे 1.Functional Test 2.Non-Functional Test।
गैर-कार्यात्मक परीक्षण एक ऐसा परीक्षण है जहां एक परीक्षक परीक्षण करेगा कि उत्पाद उन सभी गुणवत्ता विशेषताओं का प्रदर्शन करेगा जो ग्राहक का उल्लेख नहीं करते हैं लेकिन उन गुणवत्ता विशेषताओं को होना चाहिए। जैसे: -रूपता, प्रयोज्यता, सुरक्षा, भार, तनाव इत्यादि लेकिन कार्यात्मक परीक्षण में : - ग्राहक पहले से ही अपनी आवश्यकताओं के साथ मौजूद होता है और जिन्हें ठीक से प्रलेखित किया जाता है, परीक्षकों का कार्य यह जांचना है कि क्या अनुप्रयोग कार्यशीलता के अनुसार प्रदर्शन कर रहा है प्रस्तावित प्रणाली या नहीं। उस प्रयोजन के लिए टेस्टर को प्रस्तावित प्रणाली के साथ कार्यान्वित कार्यक्षमता के लिए परीक्षण करना चाहिए।
यूनिट परीक्षण आमतौर पर डेवलपर्स द्वारा किया जाता है। ऐसा करने का उद्देश्य यह सुनिश्चित करना है कि उनका कोड ठीक से काम करे। अंगूठे का सामान्य नियम इकाई परीक्षण का उपयोग करके कोड में सभी पथों को कवर करना है।
कार्यात्मक परीक्षण : यह एक अच्छा संदर्भ है। कार्यात्मक परीक्षण स्पष्टीकरण