2011-01-21 13 views
7

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

ThreadGroup: 
Htp requestdefault 
HTTP cookie manager 
    once only controller 
login Http request 
Http request for number of users 

उत्तर

0

आप लूप नियंत्रक में एक बार केवल नियंत्रक और सामान्य "HTTP अनुरोध" में "लॉगिन HTTP अनुरोध" डाल सकते हैं। अब आप HTTP अनुरोध 100 या 200 बार निष्पादित करने के लिए लूप सेट कर सकते हैं। देखें: jmeter.apache.org/usermanual/component_reference.html#Loop_Controller

अधिक यथार्थवादी परीक्षण करने के लिए टाइमर का उपयोग करें। मान लें कि आप 120 सेकंड में 200 अनुरोध होने की इच्छा रखते हैं तो आप प्रत्येक अनुरोध को 120/200 सेकेंड के लिए रोक सकते हैं। अधिकांश टाइमर मिलिसेकंड के साथ काम करते हैं ताकि आप उस नंबर (120/200 * 1000) मिलीसेकंड बना सकें। देखें: jmeter.apache.org/usermanual/component_reference.html#timers

आप एक अलग सेटअप थ्रेड ग्रुप भी बना सकते हैं जहां आप अपना लॉगिन करते हैं और 200 धागे को किसी अन्य थ्रेड ग्रुप में करते हैं। इस आलेख को देखें: http://www.informit.com/guides/content.aspx?g=java&seqNum=520

यह सारी जानकारी आपको सही दिशा में मदद करनी चाहिए। सौभाग्य!

+0

मैं एक बार में सभी अनुरोध भेजने, अगर मैं "सामान्य HTTP अनुरोध" लूप नियंत्रक के अंदर डाल दिया तो प्रत्येक अनुरोध एक पहले अनुरोध केवल यह होगा पूरा करने के बाद इसका मतलब है कि द्वारा एक निष्पादित करेंगे चाहते हैं दूसरा शुरू करें। इसलिए मैं यह नहीं ढूंढ पा रहा हूं कि कनेक्शन कितने अनुरोध को क्रैश करेगा। और मुझे केवल एक बार नियंत्रक के बारे में एक और संदेह है, और मैं अभी भी एक बार नियंत्रक की कार्यक्षमता को समझने में असमर्थ हूं। मेरे परीक्षण मामलों में यह थ्रेड समूह में वर्णित सभी धागे के लिए चल रहा है। इसे परीक्षण मामलों के लिए केवल एक बार चलाना चाहिए सही?। कृपया इस रिपोर्ट पर सहायता करें – prashant

21

"केवल एक बार" नियंत्रक जिस तरह से आपको लगता है वह काम नहीं करता है।

यह प्रति थ्रेड "केवल एक बार" चलाता है। इस प्रकार, यदि आपके पास 100 धागे हैं, तो यह 100 बार चलाएगा।

आप इसे एक बार परीक्षण प्रति चलाना चाहते हैं, निम्न कार्य करें:

Test Plan (Set thread groups to "run consecutively" 
- Cookie Manager 
- Thread Group A (1 thread, 1 loop) 
- - - Login Logic 
- Thread Group B 
- - - Rest of test 

कृपया ध्यान दें, यदि आप threadgroups ए और बी के बीच किसी भी चर साझा करने के लिए की जरूरत है, तो आप उन्हें गुण के रूप में स्थापित करने की जरूरत है। चर को धागे समूहों के बीच साझा नहीं किया जा सकता है, लेकिन गुण कर सकते हैं। इसके लिए आपको गुण फ़ंक्शन का उपयोग करना होगा।

फ़ंक्शन __setProperty स्वचालित रूप से मान को वैश्विक चर के रूप में संग्रहीत करता है। __setProperty को शुरू करने का सबसे साफ तरीका एक पोस्ट-प्रोसेसर बीन्सहेल स्क्रिप्ट को नमूने के लिए एक बच्चे के रूप में बनाना होगा जो थ्रेड ए में कुकी बनाता है। THREAD B में मान पुनर्प्राप्त करने के लिए, आप __property फ़ंक्शन को पैरामीटर के लिए VALUE के रूप में जोड़ते हैं कुकी मूल्य की आवश्यकता है।

BeanShell स्क्रिप्ट कुछ इस तरह दिखेगा:

props.put("COOKIENAME","COOKIEVALUE"); //creates a property "COOKIENAME" with value "COOKIEVALUE" 
print(props.get("COOKIENAME")); //prints the value out to the console 

ऊपर कोड हमेशा COOKIENAME के ​​लिए एक ही मूल्य है, कम तो विचार करना होगा। इसलिए, हमें यह सुनिश्चित करना होगा कि "COOKIEVALUE" गतिशील है। मैं कुकी मूल्य निकालने के लिए एक पोस्ट-प्रोसेसर नियमित अभिव्यक्ति डालने की अनुशंसा करता हूं, और उसके बाद इसे बीन्सहेल स्क्रिप्ट में पास कर दूंगा।

तो, हमारी परीक्षा योजना अब इस तरह दिखता है:

Test Plan (Set thread groups to "run consecutively" 
- Thread Group A (1 thread, 1 loop) 
- - - Login Logic 
- - - - - Regex to grab cookie, store as "regexCookie" 
- - - - - Beanshell to set property 
- Thread Group B 
- - - Rest of test 

और हमारे BeanShell स्क्रिप्ट अब की तरह दिखता है:

+0

अरे आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद लेकिन मैं अभी भी संपत्ति मूल्यों को स्टोर और प्राप्त करने के तरीके से संघर्ष कर रहा हूं। क्या आप कृपया मुझे बता सकते हैं कि संपत्ति मूल्य कहां स्टोर करें और उन्हें किसी अन्य थ्रेड में कैसे प्राप्त करें। मैं "थ्रेड ए" से कुकी मैनेजर वैल्यू स्टोर करना चाहता हूं और इसे "थ्रेड बी" में लाऊंगा। फ़ंक्शन हेल्पर का उपयोग करके मुझे फ़ंक्शन _प्रोपर्टी चुनकर एक स्ट्रिंग मिल रही है, लेकिन मैं इस स्ट्रिंग को वैश्विक बनाने के लिए कहां स्टोर कर सकता हूं। – prashant

+1

फ़ंक्शन __property स्वचालित रूप से इसे वैश्विक चर के रूप में संग्रहीत करता है। __setProperty शुरू करने का सबसे साफ तरीका एक पोस्ट-प्रोसेसर बीन्सहेल स्क्रिप्ट को नमूने के लिए एक बच्चे के रूप में बनाना होगा जो थ्रेड ए में कुकी को अनुदान देता है। THREAD B में मान पुनर्प्राप्त करने के लिए, आप पैरामीटर के लिए __property फ़ंक्शन को VALUE के रूप में जोड़ते हैं कुकी मूल्य की आवश्यकता है। उम्मीद है कि यह मदद करता है (इसे प्रतिबिंबित करने के लिए मूल प्रतिक्रिया संपादित) – BlackGaff

+0

यह एक अच्छा जवाब है।मैं जोड़ूंगा कि आप इस तरह के अन्य थ्रेड समूहों से संपत्ति मूल्य पुनर्प्राप्त कर सकते हैं: $ {__ संपत्ति (COOKIENAME)} – jlunavtgrad

0

केवल एक बार नियंत्रक रास्ता BlackGaff यह समझाया काम करता है।

जो आप करने की कोशिश कर रहे हैं वह गलत लगता है क्योंकि इसका मतलब यह होगा कि आप अपने 100 उपयोगकर्ताओं को एक ही लॉगिन/पासवर्ड से प्रमाणित करते हैं।

लेकिन यदि आप अभी भी ऐसा करना चाहते हैं, तो आप एक उपयोगकर्ता के साथ सेटअप थ्रेड का उपयोग कर सकते हैं, यह आमतौर पर परीक्षण पर कुछ init कार्य के लिए उपयोगी होता है लेकिन इसका मतलब यह नहीं है कि यह आपकी आवश्यकता का उत्तर देता है जो मुझे गलत लगता है।

0

जेमीटर 2.9 में, आप ऐसा करने के लिए "एक बार केवल नियंत्रक" और "लूप नियंत्रक" का उपयोग कर सकते हैं।

यह अद्भुत है!

फ्रेंकी

+0

यह सही नहीं है, वास्तव में भी एक उत्तर नहीं है –

2

JMeter के नए संस्करण में आप एक "सेटअप थ्रेड समूह" कि वास्तव में आप क्या आवश्यकता है जोड़ सकते हैं।

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

http://jmeter.apache.org/usermanual/component_reference.html#setUp_Thread_Group

संबंधित मुद्दे