सॉफ्टवेयर परीक्षण में, मॉक बनाम स्टब दो लोकप्रिय प्रकार के टेस्ट डबल्स हैं जिनका उपयोग निर्भरता का अनुकरण करने के लिए किया जाता है। वे परीक्षण के दौरान वास्तविक निर्भरता को नियंत्रित विकल्पों से बदलकर एक घटक के व्यवहार को अलग करने में मदद करते हैं। जबकि मॉक और स्टब्स दोनों समान उद्देश्यों को पूरा करते हैं, परीक्षण परिदृश्य के प्रकार के आधार पर उनका उपयोग अलग-अलग किया जाता है।
यह लेख मॉक और स्टब्स के बीच मुख्य अंतर, उनके उपयोग के मामलों और आपकी परीक्षण रणनीति में प्रत्येक का उपयोग कब करना है, इस पर गहराई से प्रकाश डालता है।
टेस्ट डबल क्या है?
टेस्ट डबल किसी भी वस्तु या घटक के लिए एक सामान्य शब्द है जिसका उपयोग परीक्षण के दौरान वास्तविक निर्भरता के लिए किया जाता है। लक्ष्य परीक्षण के तहत घटक को अलग करना और बाहरी कारकों को हटाना है जो परीक्षण के परिणाम को प्रभावित कर सकते हैं। मॉक और स्टब्स दो प्रकार के टेस्ट डबल्स हैं, जिनका उपयोग अक्सर यूनिट और इंटीग्रेशन परीक्षण में किया जाता है।
स्टब क्या है?
स्टब एक परीक्षण डबल है जो परीक्षण के तहत घटक द्वारा बुलाए जाने पर पूर्वनिर्धारित डेटा लौटाता है। इसका उपयोग आमतौर पर तब किया जाता है जब परीक्षण किए जा रहे घटक को निर्भरता से इनपुट की आवश्यकता होती है, लेकिन निर्भरता का वास्तविक व्यवहार परीक्षण के परिणाम के लिए अप्रासंगिक है। स्टब्स नियंत्रित प्रतिक्रियाएँ प्रदान करते हैं, जिससे आप केवल घटक के अंदर तर्क पर ध्यान केंद्रित कर सकते हैं।
स्टब का उदाहरण:
मान लीजिए कि आप भुगतान प्रसंस्करण फ़ंक्शन का परीक्षण कर रहे हैं। वास्तविक भुगतान गेटवे को कॉल करने के बजाय, आप एक स्टब का उपयोग करते हैं जो हमेशा "भुगतान सफल" प्रतिक्रिया देता है, यह सुनिश्चित करते हुए कि फ़ंक्शन में तर्क का स्वतंत्र रूप से परीक्षण किया जा सकता है।
const paymentGatewayStub = { processPayment: () => "payment successful" }; function processOrder(paymentService) { const result = paymentService.processPayment(); return result === "payment successful" ? "Order Complete" : "Order Failed"; } // Test console.log(processOrder(paymentGatewayStub)); // Output: "Order Complete"
इस मामले में, स्टब यह सुनिश्चित करता है कि बाहरी सेवा हमेशा अपेक्षित आउटपुट लौटाती है, जिससे आंतरिक तर्क का परीक्षण करना आसान हो जाता है।
मॉक क्या है?
मॉक एक परीक्षण डबल है जो न केवल नकली डेटा प्रदान करता है बल्कि घटकों के बीच बातचीत को भी सत्यापित करता है। मॉक यह सुनिश्चित करने में मदद करते हैं कि सही तरीकों को सही मापदंडों के साथ बुलाया जाता है और निष्पादन के दौरान घटनाओं का वांछित क्रम होता है। इनका उपयोग आम तौर पर तब किया जाता है जब घटक का व्यवहार या अंतःक्रिया परीक्षण के लिए मायने रखती है।
मॉक का उदाहरण:
उसी भुगतान उदाहरण का उपयोग करते हुए, मान लें कि आप यह सत्यापित करना चाहते हैं कि ऑर्डर प्रोसेसिंग के दौरान प्रोसेसपेमेंट() विधि को ठीक एक बार कॉल किया गया है।
const paymentGatewayMock = { processPayment: jest.fn().mockReturnValue("payment successful") }; function processOrder(paymentService) { paymentService.processPayment(); } // Test processOrder(paymentGatewayMock); expect(paymentGatewayMock.processPayment).toHaveBeenCalledTimes(1);
इस मामले में, मॉक यह जांच कर इंटरेक्शन की पुष्टि करता है कि क्या विधि को कॉल किया गया था, यह सुनिश्चित करते हुए कि घटक निष्पादन के दौरान सही ढंग से व्यवहार करता है।
मॉक और स्टब के बीच मुख्य अंतर
पहलू मॉक स्टब
उद्देश्य घटकों के बीच परस्पर क्रिया को सत्यापित करता है पूर्वनिर्धारित प्रतिक्रियाएँ प्रदान करता है
व्यवहार विधि कॉल और पैरामीटर को मान्य करता है केवल स्थिर डेटा लौटाता है
उपयोग परिदृश्य तब उपयोग किया जाता है जब इंटरैक्शन मायने रखता है जब डेटा आउटपुट पर्याप्त होता है तब उपयोग किया जाता है
जटिलता लागू करने में अधिक जटिल, बनाने में सरल
उदाहरण परीक्षण सत्यापन विधि कॉल निश्चित प्रतिक्रियाओं के साथ परीक्षण तर्क
स्टब का उपयोग कब करें
• सरल तर्क का परीक्षण: एक स्टब का उपयोग करें जब आपको केवल निर्भरता के आउटपुट को नियंत्रित करने की आवश्यकता हो।
• डेटा-संचालित परीक्षण: यदि ध्यान यह परीक्षण करने पर है कि आपका घटक विशिष्ट डेटा के साथ कैसा व्यवहार करता है, तो स्टब्स अधिक उपयुक्त हैं।
• उदाहरण उपयोग मामला: यदि आप एक लॉगिन सुविधा का परीक्षण कर रहे हैं जिसके लिए डेटाबेस से उपयोगकर्ता डेटा की आवश्यकता है, तो वास्तविक डेटाबेस को कॉल किए बिना एक डमी उपयोगकर्ता को वापस करने के लिए एक स्टब का उपयोग करें।
मॉक का उपयोग कब करें
• इंटरेक्शन-आधारित परीक्षण: यदि ध्यान यह सुनिश्चित करने पर है कि सही तरीकों को सही मापदंडों के साथ बुलाया जाता है, तो एक मॉक का उपयोग करें।
• जटिल इंटरैक्शन का परीक्षण: मॉक उन घटकों के लिए आदर्श हैं जो कई सेवाओं या एपीआई के साथ इंटरैक्ट करते हैं।
• उदाहरण उपयोग मामला: यदि आप ईमेल भेजने वाली सेवा का परीक्षण कर रहे हैं, तो यह सत्यापित करने के लिए एक मॉक का उपयोग करें कि सेंडईमेल() फ़ंक्शन को अपेक्षित प्राप्तकर्ता और संदेश के साथ कॉल किया गया था।
क्या मोक्स और स्टब्स को एक साथ इस्तेमाल किया जा सकता है?
हां, कुछ मामलों में, इंटरेक्शन सत्यापन और नियंत्रित प्रतिक्रिया दोनों प्राप्त करने के लिए एक ही परीक्षण में मॉक और स्टब्स का एक साथ उपयोग किया जाता है। उदाहरण के लिए, आप विशिष्ट डेटा लौटाने के लिए एक स्टब का उपयोग कर सकते हैं और यह सत्यापित करने के लिए एक मॉक का उपयोग कर सकते हैं कि किसी विशेष सेवा को कॉल किया गया था।
मोक्स और स्टब्स के फायदे और नुकसान
स्टब्स के फायदे:
• सरल और कार्यान्वयन में आसान
• अलगाव में घटक तर्क का परीक्षण करने के लिए उपयोगी
स्टब्स के विपक्ष:
• विधि कॉल या पैरामीटर को मान्य नहीं कर सकता
• स्थिर प्रतिक्रियाओं तक सीमित
मोक्स के फायदे:
• व्यवहार, इंटरैक्शन और अनुक्रमों को सत्यापित करता है
• एकाधिक निर्भरता वाले जटिल परिदृश्यों के लिए उपयोगी
मोक्स के विपक्ष:
• अधिक सेटअप की आवश्यकता है और इससे परीक्षणों को पढ़ना कठिन हो सकता है
• यदि सावधानी से उपयोग नहीं किया गया तो परीक्षण नाजुक हो सकते हैं
मॉक बनाम स्टब: आपको किसका उपयोग करना चाहिए?
• यदि आपका परीक्षण किसी निर्भरता के आउटपुट पर निर्भर करता है और आप उस आउटपुट को नियंत्रित करना चाहते हैं, तो एक स्टब का उपयोग करें।
• यदि आपको यह सत्यापित करने की आवश्यकता है कि किसी विधि को कॉल किया गया था या घटकों के बीच इंटरैक्शन को मान्य करना है, तो एक मॉक का उपयोग करें।
• यूनिट परीक्षण के लिए, स्टब्स का आमतौर पर अधिक उपयोग किया जाता है क्योंकि फोकस आंतरिक तर्क के परीक्षण पर होता है।
• एकीकरण परीक्षण के लिए, सिस्टम के विभिन्न हिस्से कैसे इंटरैक्ट करते हैं, इसकी पुष्टि करते समय मॉक अधिक उपयोगी होते हैं।
निष्कर्ष
परीक्षण रणनीतियों में मॉक और स्टब्स दोनों आवश्यक भूमिका निभाते हैं, लेकिन प्रत्येक का एक अलग उद्देश्य होता है। जबकि स्टब्स डेटा को एक निर्भरता रिटर्न पर नियंत्रित करते हैं, मॉक यह सुनिश्चित करते हैं कि घटकों के बीच सही इंटरैक्शन हो। प्रत्येक का उपयोग कब और कैसे करना है, यह समझने से आपके परीक्षणों की गुणवत्ता में सुधार हो सकता है, जिससे अधिक विश्वसनीय सॉफ़्टवेयर प्राप्त हो सकता है। मॉक और स्टब्स को सही ढंग से लागू करके, टीमें बग को कम कर सकती हैं, विकास में तेजी ला सकती हैं और यूनिट और एकीकरण परीक्षणों दोनों के लिए बेहतर परीक्षण रणनीतियां बना सकती हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3