JMeter के साथ सरल वेब-सर्विस रिग्रेशन टेस्ट
आउट-ऑफ़-द-बॉक्स, JMeter कई शक्तिशाली सैम्पलर्स के साथ आता है जो हमें एक टेस्ट प्लान लिखने और उसे विभिन्न परिवेशों में चलाने की अनुमति देते हैं। इनपुट डेटा, जो परिवेशों के बीच भिन्न हो सकता है, सीधे डेटाबेस से प्राप्त करने से टेस्ट केस तैयार करना बहुत सरल हो जाता है।
कुछ IntelliSense की कमी के साथ, JMeter में पारंगत होने में कुछ समय लगेगा। हालाँकि, आप एक काफी सरल टेस्ट बना सकते हैं, जो कई मामलों में, आपको बहुत अधिक मूल्य प्रदान करेगा। मैं आपको दिखाऊंगा कि कैसे एक ऐसा टेस्ट तैयार किया जाए जो वेब सेवा के रीड एंडपॉइंट्स में रिग्रेशन का पता लगाएगा।

संस्करणित API में रिग्रेशन
इसके सरलतम रूप में, आप एक ही संसाधन आईडी की वेब सेवा प्रतिक्रियाओं की तुलना करके रिग्रेशन की तलाश कर सकते हैं। इसके लिए, आपको कुछ इनपुट डेटा की आवश्यकता होगी। अक्सर, आप इस डेटा को टेस्ट प्लान पर उपयोगकर्ता चर, CSV फ़ाइल कॉन्फ़िगरेशन तत्व, या JDBC/HTTP सैम्पलर के माध्यम से फीड करेंगे।


इनपुट डेटा होने पर, बस ForEach नियंत्रक और API एंडपॉइंट के दोनों संस्करणों के लिए दो HTTP सैम्पलर जोड़ें। पहले सैम्पलर के तहत, मैं एक प्रतिक्रिया अभिकथन (Response Assertion) जोड़ता हूं जो स्टेटस जांच को अक्षम कर देता है। यह मुझे प्रतिक्रिया स्थिति को अनदेखा करने और बाद में अपने स्वयं के अभिकथनों पर भरोसा करने की अनुमति देता है। एक नियमित अभिव्यक्ति एक्सट्रैक्टर (Regular Expression Extractor) के साथ, मैं प्रतिक्रिया डेटा को एक चर में निकालता हूं।


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

सभी अंतर रिग्रेशन नहीं होते हैं। यह टेस्ट प्रदर्शन अनुकूलन के लिए मान्य है। कार्यात्मक परिवर्तनों के लिए, आप अपनी आवश्यकताओं से मेल खाने के लिए कुछ समायोजन करना चाह सकते हैं। डेटा के बजाय प्रतिक्रिया कोड सत्यापित करें, REGEX का दायरा बदलें या प्रतिक्रिया के प्रासंगिक भागों की तुलना करने के लिए JSON एक्सट्रैक्टर का उपयोग करें।
गैर-संस्करणित API में रिग्रेशन
एक और दृष्टिकोण जिसे आप उपयोग कर सकते हैं, वह है फ़ाइल में सहेजे गए सैम्पलर परिणामों की तुलना करना। यह विशेष रूप से तब उपयोगी होता है जब:
- आपके पास एक गैर-संस्करणित API है;
- जब आपके परिवर्तन कुछ आंतरिक झंडों के पीछे तैनात किए जाते हैं
- जब आप बस एंडपॉइंट में बाहरी परिवर्तनों के बावजूद रिग्रेशन का पता लगाना चाहते हैं।
इसके लिए टेस्ट प्लान बहुत सरल है यदि आपको प्रतिक्रिया को पोस्ट-प्रोसेस करने की आवश्यकता नहीं है। प्रारंभिक परिणामों को फ़ाइल में सहेजने के लिए व्यू रिजल्ट्स ट्री का उपयोग करें। अगला, इसे एक परिनियोजन या ध्वज को टॉगल करने के बाद फिर से लागू करें और दोनों फ़ाइलों में अंतर करें।
यदि आप समान निष्कर्षण तर्क प्राप्त करना चाहते हैं, तो एक साधारण JSR223 सैम्पलर का उपयोग करें। स्क्रिप्ट में vars["responseV1"]
लाइन के माध्यम से निकाले गए प्रतिक्रिया को प्रदर्शित करें, और इस सैम्पलर के तहत एक व्यू रिजल्ट्स ट्री जोड़ें।

सामग्री में अंतर करने के लिए, थ्रेड समूहों को लगातार चलाएं (टेस्ट प्लान स्तर) ताकि फ़ाइल एक थ्रेड समूह में सहेजी जाए और दूसरे में सत्यापित हो। अंतर चलाना OS प्रोसेस सैम्पलर diff
कमांड को दोनों फ़ाइलों पर उपयोग करने जितना आसान है। इस विकल्प के साथ, अपेक्षित रिटर्न कोड को कॉन्फ़िगर करना न भूलें। अन्यथा, एक OS-स्वतंत्र मार्ग में कोई भी अन्य सैम्पलर (जैसे एक डीबग सैम्पलर) शामिल होता है:
- दो उपयोगकर्ता पैरामीटर प्रीप्रोसेसर जो फ़ाइल सामग्री को एक चर में निकालते हैं:
${__FileToString(testResults1.xml)}
; - प्रतिक्रिया अभिकथन जो दोनों चरों की तुलना करता है।


वर्णित प्लान को JMeter 5.4.3 पर चलाया गया था जिसमें जावा 18 से jwebserver
द्वारा प्रतिक्रियाएं स्टब की गई थीं। आपको पृष्ठ के निचले भाग में प्रासंगिक स्रोत फ़ाइलें मिलेंगी। उन्हें अपने स्वयं के रिग्रेशन टेस्ट के लिए एक शुरुआती बिंदु के रूप में उपयोग करने के लिए स्वतंत्र महसूस करें।