Apache JMeter
अपाचे JMeter के मानकीकरण
खोज…
परिचय
परिशोधन एक ही परीक्षण स्क्रिप्ट में विभिन्न उपयोगकर्ताओं के लिए अलग-अलग डेटा सेट का निर्माण है। उदाहरण के लिए, एक ही स्क्रिप्ट में विभिन्न उपयोगकर्ताओं को विभिन्न क्रेडेंशियल्स के साथ चलाना। यह प्रदर्शन परीक्षण निर्माण में मुख्य पहलुओं में से एक बनाता है।
बाहरी फ़ाइलों का उपयोग करके परिमापण
अपनी प्रदर्शन लिपियों को परिमार्जित करने के सामान्य तरीकों में से एक CSV फ़ाइल का उपयोग करना है। CSV इनपुट फ़ाइलों के उपयोग का सबसे अच्छा उदाहरण एक लॉगिन प्रक्रिया है। यदि आप विभिन्न उपयोगकर्ताओं में अपने एप्लिकेशन का परीक्षण करना चाहते हैं, तो आपको उपयोगकर्ता क्रेडेंशियल्स की एक सूची प्रदान करने की आवश्यकता है।
मान लें कि हमारे पास एक लॉगिन अनुरोध है जो एक विशिष्ट उपयोगकर्ता के लिए काम करता है:
हम बाहरी CSV फ़ाइल का उपयोग करके और विभिन्न उपयोगकर्ताओं में स्क्रिप्ट चलाकर उस अनुरोध को आसानी से स्वीकार कर सकते हैं। CSV पैरामीरीज़ेशन कॉन्फ़िगरेशन जोड़ने के लिए:
लॉगिन अनुरोध पर राइट क्लिक करें -> जोड़ें -> कॉन्फ़िगर तत्व -> सीएसवी डेटा सेट कॉन्फ़िगरेशन
'CSV डेटा सेट कॉन्फ़िगरेशन' मापदंडों की संक्षिप्त व्याख्या:
- नाम - तत्व का नाम क्योंकि इसका उपयोग JMeter के पेड़ में किया जाएगा
- फ़ाइल नाम - इनपुट फ़ाइल का नाम। सक्रिय परीक्षण योजना के पथ के आधार पर सापेक्ष फ़ाइल नाम हल किए जाते हैं। निरपेक्ष फ़ाइल नाम भी समर्थित हैं
- फ़ाइल एन्कोडिंग - इनपुट फ़ाइल की एन्कोडिंग, यदि यह प्लेटफ़ॉर्म डिफ़ॉल्ट नहीं है
- परिवर्तनीय नाम - अलग-अलग चर नामों की सूची जिन्हें पार्स किए गए मानों के लिए कंटेनर के रूप में उपयोग किया जाएगा। यदि रिक्त है, तो फ़ाइल की पहली पंक्ति को चर नामों की सूची के रूप में व्याख्या की जाएगी
- Delimiter - सीमांकक का उपयोग इनपुट फ़ाइल से पार्स किए गए मानों को विभाजित करने के लिए किया जाएगा
- उद्धृत डेटा की अनुमति दें? - यदि आप दोहरे उद्धरण चिह्नों को अनदेखा करना चाहते हैं और ऐसे तत्वों को परिसीमन में शामिल करना चाहते हैं, तो यह सच है।
- EOF पर रीसायकल? - यदि फ़ाइल परीक्षण योजना एक से अधिक बार फ़ाइल पर पुनरावृति देनी चाहिए, तो यह सच है। यह JMeter को फ़ाइल की शुरुआत में कर्सर ले जाने का निर्देश देगा
- ईओएफ पर धागा बंद करो? - CDC फ़ाइल पर लूप पुनरावृत्ति के मामले में गलत और यदि आप पूरी फ़ाइल पढ़ने के बाद थ्रेड को रोकना चाहते हैं तो सही है
- सहभाजन मोड:
- सभी थ्रेड्स - फ़ाइल सभी वर्चुअल उपयोगकर्ताओं (डिफ़ॉल्ट) के बीच साझा की जाती है
- वर्तमान थ्रेड समूह - फ़ाइल को प्रत्येक थ्रेड समूह के लिए एक बार खोला जाएगा
- वर्तमान थ्रेड - प्रत्येक फ़ाइल को प्रत्येक थ्रेड के लिए अलग से खोला जाएगा
- पहचानकर्ता - समान पहचानकर्ता को साझा करने वाले सभी धागे भी एक ही फ़ाइल साझा करते हैं
आइए एक सीएसवी फाइल बनाएं जिसमें विभिन्न उपयोगकर्ता नाम और पासवर्ड हों:
अब हम इस फाइल को CSV डेटा सेट कॉन्फिग के साथ उपयोग कर सकते हैं। हमारे मामले में, "फाइलनेम" और "वेरिएबल्स नेम्स" कॉन्फ़िगरेशन मानों को जोड़ना पर्याप्त है:
आखिरी कदम जो हमें उठाना है, वह है सीएसवी चर के साथ लॉगिन अनुरोध। यह सीएसवी डेटा सेट कॉन्फिगरेशन के "वैरिएबल नेम्स" कॉन्फ़िगरेशन फ़ील्ड से उपयुक्त चर के साथ प्रारंभिक मानों को प्रतिस्थापित करके किया जा सकता है: यदि हम अभी अपनी परीक्षण स्क्रिप्ट चलाते हैं, तो JMeter 'TestUsers.csv' फ़ाइल के मानों के साथ इन चरों को प्रतिस्थापित करेगा। प्रत्येक JMeter वर्चुअल उपयोगकर्ता को निम्नलिखित csv फ़ाइल लाइन से क्रेडेंशियल प्राप्त होंगे।
पहले उपयोगकर्ता द्वारा लॉगिन अनुरोध:
दूसरे उपयोगकर्ता द्वारा लॉगिन अनुरोध:
डेटाबेस का उपयोग करते हुए परिमाणीकरण
अपनी प्रदर्शन लिपियों को परिमार्जित करने का दूसरा तरीका JDBC के माध्यम से डेटाबेस डेटा का उपयोग करना है। JDBC एक एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस है जो परिभाषित करता है कि एक क्लाइंट किसी डेटाबेस तक कैसे पहुंच सकता है।
सबसे पहले, JDBC ड्राइवर को अपने डेटाबेस में डाउनलोड करें (डेटाबेस विक्रेता को देखें)। उदाहरण के लिए, mysql ड्राइवर यहां पाया जा सकता है। फिर, आप नीचे दिए गए फॉर्म का उपयोग करके .jar फ़ाइल को परीक्षण-योजना में जोड़ सकते हैं:
लेकिन जार फ़ाइल को lib फ़ोल्डर में जोड़ना और JMeter को पुनरारंभ करना बेहतर है।
उसके बाद, 'JDBC कनेक्शन कॉन्फ़िगरेशन' तत्व का उपयोग करके डेटाबेस कनेक्शन को कॉन्फ़िगर करें। इस तरह: थ्रेड ग्रुप पर राइट क्लिक करें -> एड -> कॉन्फिगरेशन एलिमेंट -> जेडडीबीसी कनेक्शन कॉन्फ़िगरेशन
'JDBC कनेक्शन कॉन्फ़िगरेशन' पैरामीटर:
- नाम - कनेक्शन कॉन्फ़िगरेशन का नाम जो थ्रेड समूह ट्री में दिखाया जाएगा
- परिवर्तनीय नाम - नाम जो db कनेक्शन के लिए विशिष्ट पहचानकर्ता के रूप में उपयोग किया जाएगा (कई कनेक्शन का उपयोग किया जा सकता है और प्रत्येक को एक अलग नाम से जोड़ा जाएगा)
- कनेक्शन की अधिकतम संख्या - कनेक्शन पूल में अधिकतम संख्या में कनेक्शन की अनुमति है। 0 के मामले में, प्रत्येक थ्रेड को इसमें एक एकल कनेक्शन के साथ अपना पूल मिलेगा
- अधिकतम प्रतीक्षा (एमएस) - पूल एक त्रुटि फेंकता है यदि निर्दिष्ट कनेक्शन डीबी कनेक्शन के दौरान पार हो गया है
- एविक्शन रन (ms) के बीच का समय - थ्रेड के रनों के बीच रुकने के लिए मिलीसेकंड की संख्या जो db पूल से अप्रयुक्त कनेक्शनों को दिखाती है
- ऑटो कमिट - संबंधित डीबी कनेक्शन के लिए ऑटो कमिट चालू करने के लिए हाँ
- टेस्ट जबकि आइडल - एक प्रभावी अनुरोध का पता लगाने से पहले निष्क्रिय कनेक्शन की जांच करें। अधिक जानकारी: BasicDataSource.html # getTestWhileIdle
- सॉफ्ट मिन इविक्टेबल आइडल टाइम (एमएस) - समय की अवधि जिसके दौरान एक निर्दिष्ट कनेक्शन को डीबी पूल में निष्क्रिय किया जा सकता है, इससे पहले कि इसे निकाला जा सके। अधिक जानकारी: BasicDataSource.html # getSoftMinEvictableIdleTimeMillis
- सत्यापन क्वेरी - स्वास्थ्य जांच क्वेरी जिसका उपयोग यह सत्यापित करने के लिए किया जाएगा कि डेटाबेस अभी भी प्रतिक्रिया दे रहा है
- डेटाबेस URL - डेटाबेस के लिए JDBC कनेक्शन स्ट्रिंग। उदाहरण के लिए यहाँ देखें
- JDBC चालक वर्ग - चालक वर्ग का उपयुक्त नाम (प्रत्येक db के लिए विशिष्ट)। उदाहरण के लिए, MySql db के लिए 'com.mysql.jdbc.Driver'
- उपयोगकर्ता नाम - डेटाबेस उपयोगकर्ता नाम
- पासवर्ड - डेटाबेस पासवर्ड (परीक्षण योजना में अनएन्क्रिप्टेड संग्रहीत किया जाएगा)
हमारे मामले में हमें केवल अनिवार्य फ़ील्ड सेट करने की आवश्यकता है:
- परिवर्तनीय नाम बाउंड टू पूल।
- डेटाबेस URL
- JDBC ड्राइवर वर्ग
- उपयोगकर्ता नाम
- कुंजिका
स्क्रीन के बाकी क्षेत्रों को चूक के रूप में छोड़ा जा सकता है:
मान लेते हैं कि हम डेटाबेस में उपयोगकर्ता क्रेडेंशियल्स का परीक्षण करते हैं:
अब जब डेटाबेस कनेक्शन कॉन्फ़िगर किया गया है, हम JDBC अनुरोध को स्वयं जोड़ सकते हैं और डेटाबेस से सभी क्रेडेंशियल्स प्राप्त करने के लिए इसकी क्वेरी का उपयोग कर सकते हैं: थ्रेड समूह पर राइट क्लिक करें -> Add -> नमूना -> JDBC अनुरोध
'स्टेटमेंट सलेक्ट' क्वेरी और 'वैरिएबल नेम्स' का उपयोग करके हम कस्टम चरों की प्रतिक्रिया को पार्स कर सकते हैं।
अब हमारे पास JMeter चर होंगे जिन्हें बाद के अनुरोधों में आगे उपयोग किया जा सकता है। निर्दिष्ट चर वृद्धिशील प्रत्यय (email_1, email_2, email_3… ..) के साथ बनाए जाएंगे।
'लॉगिन अनुरोध' में इन चरों का उपयोग करने के लिए, हमें एक काउंटर जोड़ने की जरूरत है जिसका उपयोग जेडीबीसी क्वेरी प्रतिक्रिया से सही मानों तक पहुंचने के लिए किया जाएगा। JMeter में 'काउंटर' तत्व जोड़ने के लिए: थ्रेड समूह पर राइट क्लिक करें -> ऐड -> कॉन्फ़िग एलिमेंट -> काउंटर
उसके बाद, हम __V फ़ंक्शन का उपयोग करके 'लॉगिन अनुरोध' को अपडेट कर सकते हैं। यह चर नाम अभिव्यक्ति का मूल्यांकन करने का परिणाम देता है और इसका उपयोग नेस्टेड चर संदर्भों के मूल्यांकन के लिए किया जा सकता है:
निर्दिष्ट कॉन्फ़िगरेशन अलग-अलग उपयोगकर्ताओं में स्क्रिप्ट को चलाने के लिए डेटाबेस मान का उपयोग करने के लिए पर्याप्त है:
Ized Parameterized नियंत्रक ’प्लगइन का उपयोग करके परिमापण
यदि आपको विभिन्न मापदंडों के साथ एक ही कार्रवाई के दोहराए जाने वाले अनुक्रम को निष्पादित करने की आवश्यकता है, तो JMeter-Plugins प्रोजेक्ट से 'Parameterized नियंत्रक' 3rd पार्टी प्लगइन का उपयोग करें।
आपको स्थापना प्रक्रिया का पालन करके पहले इस प्लगइन को स्थापित करना होगा।
मान लें कि हम लॉगिन वर्कफ़्लो को पैरामीटर बनाना चाहते हैं:
सबसे पहले, आपको 'Parameterized नियंत्रक' प्लगइन को स्थापित करने की आवश्यकता है क्योंकि यह JMeter कोर में शामिल नहीं है। उस प्रक्रिया के संस्थापन चरण यहां देखे जा सकते हैं।
आइए 'लॉगिन अनुरोध' को एक अलग नियंत्रक में ले जाएं और इसे अक्षम करें (इसे राइट-क्लिक करें और "अक्षम करें" चुनें)। यह आपकी परीक्षण योजना के अंदर एक मॉड्यूल कंटेनर रखने का सबसे बेहतर तरीका है और इस तरह के कंटेनर के रूप में कार्यक्षेत्र का उपयोग करने से बचें। स्थापना समाप्त होने के बाद, आप अलग-अलग उपयोगकर्ता क्रेडेंशियल्स के साथ दो 'Parameterized नियंत्रक' नियंत्रक जोड़ सकते हैं: थ्रेड समूह पर राइट क्लिक करें -> Add -> तर्क नियंत्रक -> Parameterized नियंत्रक
पैरामीटर नियंत्रित नियंत्रकों में 'उपयोगकर्ता परिभाषित चर' खंड होता है, जहाँ आप अपने मापदंडों को निर्दिष्ट कर सकते हैं। पहले उपयोगकर्ता के क्रेडेंशियल्स को पहले पैरामीटराइज्ड कंट्रोलर में और दूसरे यूजर क्रेडेंशियल्स को दूसरे पैरामीटर कंट्रोलर में रखें।
दोनों मानकीकृत नियंत्रकों के अंदर, विभिन्न मापदंडों के साथ 'लॉगिन अनुरोध' को कॉल करने के लिए 'पुन: प्रयोज्य नियंत्रक' के संदर्भ जोड़ें। इसे इस प्रकार किया जा सकता है:
'Parameterized Controller' -> 'Add' -> 'Logic Controller' -> 'मॉड्यूल कंट्रोलर' पर राइट क्लिक करें
अपनी स्क्रिप्ट चलाते समय, आप देखेंगे कि 'लॉगिन अनुरोध' ने प्रत्येक पैरामीटर को अलग से नियंत्रित किया। यदि आपको इनपुट मापदंडों के विभिन्न संयोजनों में अपनी स्क्रिप्ट चलाने की आवश्यकता है तो यह बहुत उपयोगी हो सकता है।