JMeter, ब्राउज़र और अधिकृत लक्ष्य एप्लिकेशन के बीच एक स्थानीय रिकॉर्डिंग प्रॉक्सी के रूप में कार्य करके HTTP अनुरोध सैम्पलर उत्पन्न कर सकता है। वर्तमान संस्करण इस घटक को HTTP(S) टेस्ट स्क्रिप्ट रिकॉर्डर कहते हैं । यह एक ब्राउज़र गतिविधि को रिकॉर्डिंग कंट्रोलर में कैप्चर करता है, जिसके बाद स्क्रिप्ट को प्रोटोकॉल-स्तरीय परीक्षण के रूप में साफ़, सहसंबंधित, मान्य और निष्पादित किया जाना चाहिए।

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

JMeter HTTP प्रॉक्सी सर्वर क्या है?

रिकॉर्डर आमतौर पर स्थानीय पोर्ट पर सुनता है। 8888एक ब्राउज़र उस प्रॉक्सी को HTTP और HTTPS अनुरोध भेजता है, और JMeter मिलान करने वाले ट्रैफ़िक को चयनित नियंत्रक के अंतर्गत सैम्पलर में परिवर्तित करता है। रीप्ले के दौरान, JMeter सीधे अनुरोध भेजता है; यह प्रत्येक वर्चुअल उपयोगकर्ता के लिए ब्राउज़र लॉन्च नहीं करता है।

स्क्रिप्ट को हाथ से लिखने के बजाय रिकॉर्डिंग क्यों करें?

  • यह वास्तविक अनुरोध क्रम, रीडायरेक्ट, फॉर्म और बैकग्राउंड एपीआई को कैप्चर करता है।
  • यह उन XHR या फ़ेच कॉल्स को उजागर करता है जिन्हें नज़रअंदाज़ करना आसान होता है।
  • यह एक जटिल उपयोगकर्ता यात्रा के लिए त्वरित आधार रेखा तैयार करता है।
  • हेडर और पैरामीटर में प्रतिलेखन त्रुटियों को कम करता है।

कम दस्तावेज़ों वाले API के लिए मैन्युअल निर्माण अधिक सुव्यवस्थित रहता है। ब्राउज़र नेटवर्क व्यवहार को पूरी तरह से न समझने पर रिकॉर्डिंग सहायक होती है। शब्दावली के लिए, हमारी प्रॉक्सी प्रकार मार्गदर्शिका देखें ।

JMeter 5.x में स्क्रिप्ट कैसे रिकॉर्ड करें

  1. स्क्रिप्ट बनाने के लिए JMeter को GUI मोड में शुरू करें।
  2. टेस्ट प्लान में एक थ्रेड ग्रुप जोड़ें।
  3. थ्रेड ग्रुप के अंतर्गत एक रिकॉर्डिंग कंट्रोलर जोड़ें।
  4. आवश्यकतानुसार HTTP अनुरोध डिफ़ॉल्ट और HTTP कुकी प्रबंधक जोड़ें।
  5. HTTP(S) टेस्ट स्क्रिप्ट रिकॉर्डर जोड़ें और रिकॉर्डिंग कंट्रोलर को इसके लक्ष्य के रूप में चुनें।
  6. असंबंधित ट्रैफ़िक को सीमित करने के लिए शामिल/बहिष्कृत पैटर्न का उपयोग करें।

आधिकारिक अपाचे जेमीटर रिकॉर्डिंग गाइड, संस्करण-विशिष्ट प्रामाणिक संदर्भ है।

एक स्वच्छ ब्राउज़र प्रोफ़ाइल का उपयोग करें: एक्सटेंशन, सिंक्रोनाइज़ेशन, टेलीमेट्री और असंबंधित टैब शोरगुल वाले अनुरोध उत्पन्न करते हैं।

चरण 1) HTTP प्रॉक्सी सर्वर सेट करना

रिकॉर्डर: किसी अप्रयुक्त स्थानीय पोर्ट का चयन करें, जैसे कि 8888लक्ष्य नियंत्रक सेट करें और क्लिक करें प्रारंभ.

टेस्ट ब्राउज़र को HTTP और HTTPS प्रॉक्सी होस्ट के साथ कॉन्फ़िगर करें 127.0.0.1 और वही पोर्ट। यदि ब्राउज़र किसी अन्य वर्चुअल मशीन या कंटेनर में चल रहा है, तो लोकलहोस्ट उस वातावरण को संदर्भित करता है; इसके बजाय एक स्वीकृत, पहुंच योग्य निजी पते का उपयोग करें।

Proxy host: 127.0.0.1
Proxy port: 8888

Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$

पहले चरण में बहुत अधिक फ़िल्टरिंग न करें क्योंकि हो सकता है कि एप्लिकेशन API किसी अन्य सबडोमेन का उपयोग कर रहा हो। एक बार रिकॉर्ड करें, होस्ट की जांच करें, फिर पैटर्न को परिष्कृत करें।

चरण 2) अपनी गतिविधि रिकॉर्ड करें

  1. रिकॉर्डर को प्रारंभ करें और केवल पृथक परीक्षण ब्राउज़र में ही इसके अस्थायी प्रमाणपत्र पर भरोसा करें।
  2. अधिकृत परीक्षण वातावरण खोलें।
  3. मानव गति से एक स्वच्छ यात्रा पूरी करें।
  4. अंतिम व्यावसायिक कार्रवाई पूरी होने के तुरंत बाद रिकॉर्डिंग बंद कर दें।
  5. ब्राउज़र की सामान्य प्रॉक्सी सेटिंग को पुनर्स्थापित करें।

व्यावसायिक कार्रवाई के आधार पर सैम्पलर का नाम बदलें और संबंधित अनुरोधों को ट्रांज़ैक्शन कंट्रोलर के अंतर्गत समूहित करें। एनालिटिक्स, विज्ञापन, ब्राउज़र अपडेट, चैट विजेट और डुप्लिकेट स्थिर संसाधनों को हटा दें, जब तक कि वे स्पष्ट रूप से दायरे में न हों।

प्रत्येक सैम्पलर में गुप्त जानकारियों की जांच करें। पासवर्ड सुरक्षित रनटाइम डेटा से प्राप्त होने चाहिए, जबकि टोकन बदलने के लिए सहसंबंध आवश्यक है।

चरण 3) अपनी परीक्षण योजना चलाएँ

लोड जोड़ने से पहले एक उपयोगकर्ता और एक चरण की पुष्टि करें। अस्थायी रूप से व्यू रिजल्ट्स ट्री का उपयोग करें, रीडायरेक्ट और रिस्पॉन्स बॉडी की जांच करें, और अपेक्षित व्यावसायिक परिणाम के लिए अभिकथन जोड़ें। केवल HTTP 200 से यह सिद्ध नहीं होता कि लॉगिन या चेकआउट सफल रहा।

Threads: 1
Ramp-up: 1 second
Loop Count: 1

डीबगिंग के बाद, हैवी लिसनर्स को हटा दें और नॉन-जीयूआई मोड में चलाएं:

jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report

रिपोर्ट निर्देशिका नई या खाली होनी चाहिए। लोड को धीरे-धीरे बढ़ाएं और लक्ष्य सिस्टम के साथ-साथ JMeter की भी निगरानी करें।

चरण 4) अपना परीक्षा परिणाम सुरक्षित करें

पुन: प्रयोज्य योजना को सहेजें .jmx उत्पन्न डेटा को अलग फ़ाइल में रखें:

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

योजना को गोपनीय न रहने वाली विशेषताओं और परीक्षण डेटा के साथ तैयार करें। JMeter और Java के संस्करण, लक्ष्य बिल्ड, वातावरण, उपयोगकर्ता संख्या, रैंप-अप और अवधि रिकॉर्ड करें।

ग्राफिकल यूजर इंटरफेस (GUI) से अधिक लोड न चलाएं। जीयूआई लिसनर मेमोरी का उपभोग करते हैं और परिणामों को विकृत कर सकते हैं।

HTTPS ट्रैफ़िक और प्रमाणपत्रों की रिकॉर्डिंग

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

  1. HTTP(S) टेस्ट स्क्रिप्ट रिकॉर्डर शुरू करें।
  2. जनरेट किए गए ApacheJMeterTemporaryRootCA प्रमाणपत्र का पता लगाएं।
  3. इसे पृथक प्रोफ़ाइल में एक विश्वसनीय प्राधिकरण के रूप में आयात करें।
  4. स्वीकृत HTTPS प्रक्रिया को रिकॉर्ड करें।
  5. काम पूरा होने पर प्रमाणपत्र हटा दें।

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

सहसंबंध: रिकॉर्ड की गई स्क्रिप्ट को पुनः चलाने योग्य बनाना

सेशन आईडी, सीएसआरएफ टोकन, ओएऑथ स्थिति, अनुरोध हस्ताक्षर और संसाधन आईडी प्रत्येक रन के बीच बदलते रहते हैं। सहसंबंध एक प्रतिक्रिया से एक नया मान निकालता है और उसे बाद के अनुरोधों में प्रतिस्थापित करता है।

  1. उस प्रतिक्रिया का पता लगाएं जिसमें सबसे पहले गतिशील मान मौजूद हो।
  2. JSON, CSS, XPath या रेगुलर एक्सप्रेशन एक्सट्रैक्टर जोड़ें।
  3. परिणाम को एक नाम वाले JMeter वेरिएबल में स्टोर करें।
  4. बाद में हार्ड-कोड किए गए मानों को वेरिएबल संदर्भ से बदलें।
  5. निष्कर्षण में कोई मिलान न मिलने पर स्पष्ट रूप से विफलता का संकेत दें।
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND

Later header:
X-CSRF-Token: ${csrfToken}

पैरामीटराइजेशन स्वतंत्र उपयोगकर्ता डेटा प्रदान करता है, जो अक्सर CSV फ़ाइल से लिया जाता है। कोरिलेशन निष्पादन के दौरान सर्वर द्वारा उत्पन्न डेटा को कैप्चर करता है। व्यावहारिक योजनाओं में आमतौर पर दोनों की आवश्यकता होती है।

समस्या निवारण

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

JMeter एक प्रोटोकॉल परफॉर्मेंस टूल है। यह अपने आप Largest Contentful Paint जैसे विज़ुअल इवेंट्स को माप नहीं सकता।

अक्सर पूछे जाने वाले प्रश्न

JMeter में HTTP प्रॉक्सी सर्वर नाम को किस नाम से बदल दिया गया है?

अब इस कंपोनेंट को HTTP(S) टेस्ट स्क्रिप्ट रिकॉर्डर कहा जाता है।

मुझे कौन सा रिकॉर्डर पोर्ट इस्तेमाल करना चाहिए?

कोई भी अप्रयुक्त स्थानीय पोर्ट काम करता है। पोर्ट 8888 सामान्य है, और ब्राउज़र को भी इसी मान का उपयोग करना चाहिए।

क्या JMeter HTTPS ट्रैफिक को रिकॉर्ड कर सकता है?

हां, जब पृथक परीक्षण ब्राउज़र JMeter के अस्थायी रिकॉर्डिंग प्रमाणपत्र पर भरोसा करता है।

रिकॉर्ड की गई स्क्रिप्ट रीप्ले करने पर विफल क्यों हो जाती है?

डायनामिक टोकन, कुकीज़, प्रमाणीकरण प्रवाह, होस्ट अंतर और गुम डेटा के लिए आमतौर पर सहसंबंध और पैरामीटराइजेशन की आवश्यकता होती है।

क्या JMeter क्रोम को रिकॉर्ड कर सकता है?

जी हां। JMeter के लोकल रिकॉर्डर का उपयोग करने के लिए एक साफ क्रोम प्रोफाइल कॉन्फ़िगर करें।

क्या मुझे JMeter GUI से लोड टेस्ट चलाने चाहिए?

नहीं। पहले GUI मोड में बिल्ड और डीबग करें, फिर नॉन-GUI मोड में लोड करें।

क्या JMeter एक असली ब्राउज़र की तरह काम करता है?

नहीं। यह प्रोटोकॉल अनुरोध भेजता है लेकिन एचटीएमएल को रेंडर नहीं करता या ब्राउज़र जावास्क्रिप्ट को निष्पादित नहीं करता है।

क्या प्रोडक्शन लॉगिन को रिकॉर्ड करना सुरक्षित है?

स्टेजिंग और टेस्ट अकाउंट को प्राथमिकता दें। प्रोडक्शन कैप्चर के लिए स्पष्ट प्राधिकरण और सख्त गोपनीयता आवश्यक है।