2009-09-07 11 views
46

में सत्र/कुकी प्रबंधन हमारे पास एक आवेदन में एक साधारण प्रदर्शन परीक्षण प्रवाह है।अपाचे जेएमटर

  1. हम के लिए लॉग इन
  2. खोजें कुछ मानदंड
  3. विभिन्न मापदंडों के लिए बार-बार खोजों के आधार पर।

हम प्रदर्शन प्रदर्शन करने के लिए जेएमटर का उपयोग कर रहे हैं। स्केलेबल तरीके से इसका परीक्षण करने के लिए हमें कई धागे चलाना होगा।

जिस तरह से हम वर्तमान में इस व्यवस्था की है:

-Test Plan 
    - Thread Group 
     - Cookie Manager 
     - Login To application 
     - Search on param 1 
     - Search on param 2 
    - results summary table 
    - Summary report 

तो बुनियादी तौर पर हम सारांश वापसी तालिका है और योजना के स्तर पर उपस्थित रिपोर्ट जबकि कुकी प्रबंधक धागा समूह स्तर पर मौजूद है।

जब मैं एक धागे के लिए दौड़ता हूं तो यह ठीक चलता है और अच्छी तरह से पूरा करता है। जब मैं इसे कई धागे तक स्केल करता हूं, जैसे ही अगला थ्रेड बंद हो जाता है, अंतिम धागे के लिए सत्र अमान्य हो जाता है। यह नव निर्मित धागे के कारण पहले से चल रहे धागे के लिए विफलताओं का कारण बनता है।

मैं अवलोकन के साथ इस परिणाम पर पहुंच गया: परिणाम सारांश पेड़
2 में
1. अगर मैं एक से अधिक थ्रेड चलाने के लिए, केवल पिछले धागा मिल गया है वैध प्रतिक्रियाओं अगर मैं 10 सेकंड के रूप में अवधि बढ़ाना के साथ 2 धागे के साथ चलाने के लिए, जिसका अर्थ है कि प्रत्येक थ्रेड को खुद को खत्म करने का समय मिलता है, फिर दोनों सफलतापूर्वक भागते हैं।

मेरी समझ के अनुसार प्रत्येक थ्रेड लॉगिन एप्लिकेशन में है और चूंकि कुकी प्रबंधक थ्रेड स्तर पर है, तो मूल्य क्रमशः प्रत्येक थ्रेड के लिए सत्र आईडी के लिए बनाए रखा जाएगा? लेकिन क्या थ्रेड के बीच सत्र आईडी मान के ओवरराइड का कारण बन रहा है?

किसी भी मदद की बहुत सराहना की जाएगी।

उत्तर

46

JMeter दस्तावेज़ से कॉपी किया गया:

पिछले तत्व एक HTTP कुकी प्रबंधक है। एक कुकी प्रबंधक होना चाहिए सभी वेब परीक्षणों में जोड़ा गया - अन्यथा जेएमटर कुकीज को अनदेखा कर देगा। इसे थ्रेड समूह स्तर पर जोड़कर, हम सुनिश्चित करते हैं कि सभी HTTP अनुरोध समान कुकीज़ साझा करेंगे।

http://jmeter.apache.org/usermanual/test_plan.html में "4.2.2 तर्क नियंत्रक" अध्याय से।

EDIT: मुझे लगता है कि आपको कुकी प्रबंधक के साथ अपने अनुरोधों को समूहित करने के लिए http://jmeter.apache.org/usermanual/component_reference.html#Simple_Controller का उपयोग करना चाहिए।

1

रैंप अप समय बढ़ाने की कोशिश करें। मैं उसी मुद्दे पर भाग गया जहां रैंप अप समय लगभग 1 सेकंड था, फिर मैंने इसे प्रति थ्रेड में 3 सेकंड तक बढ़ा दिया और यह ठीक हो गया।

6

मुझे लगता है कि एंड्री का जवाब मदद नहीं कर सकता है।उन्होंने उद्धृत किया कि प्रत्येक अनुरोध एक ही कुकीज़ का उपयोग करेगा लेकिन जेएमटर मैनुअल के अनुसार:

प्रत्येक जेएमटर थ्रेड का अपना "कुकी स्टोरेज एरिया" होता है।

जहां तक ​​मैं प्रश्न समझता हूं, आप चाहते हैं कि प्रत्येक थ्रेड एक ही सत्र आईडी कुकी साझा करे। तो ऐसा लगता है कि आपको दो थ्रेड समूह होना चाहिए और उन्हें लगातार निष्पादित करना होगा। पहला धागा समूह (केवल एक थ्रेड के साथ जो केवल एक बार निष्पादित होता है) को सत्र कुकी कुकी मान को वैश्विक पैरामीटर में लॉग इन और सहेजना चाहिए (शायद आपको जेएमटर की स्क्रिप्टिंग क्षमताओं का उपयोग करने की आवश्यकता है)। फिर उस कुकी को दूसरे थ्रेड समूह के कुकी मैनेजर में सेट करें।

उम्मीद है कि मदद करता है।

+2

इस के लिए +1। * क्या एक ही टेस्ट प्लान के विभिन्न थ्रेड समूहों के माध्यम से कुकीज़ को "प्रसारित करना" संभव है? नहीं। जेएमटर धागे स्वतंत्र उपयोगकर्ताओं का प्रतिनिधित्व करने के लिए लक्षित हैं, इसलिए कुकीज और वेरिएबल थ्रेड के लिए स्थानीय हैं। * [इस] के अनुसार (http://jmeter.512774.n5.nabble.com/HTTP-cookie-manager -td544523.html)। –

0

इस प्रयास करें: JMeter

के बिन फ़ोल्डर में

ओपन user.properties वर्तमान

यह संपादित करें और निम्न पंक्ति जोड़ें:

CookieManager.check.cookies=false 

यह सहेजें और स्क्रिप्ट चलाने। मुझे उम्मीद है कि यह आपकी समस्या का समाधान करेगा।

0

सबसे पहले करने के लिए अपने कोड बदलने के लिए:

jmeter.properties 
CookieManager.save.cookies=true 
CookieManager.name.prefix=mycookie_ 

इसके बाद, अपने जावा नमूना के रूप में ही धागा समूह में एक HTTP कुकी प्रबंधक जोड़ें।

फिर अपने जावा नमूना में जोड़ें:

JMeterVariables jmv = JMeterContextService.getContext().getVariables(); 
Iterator<Map.Entry<String,Object>> it = jmv.getIterator(); 
while(it.hasNext()){ 
    Map.Entry<String,Object> v = it.next(); 
    System.out.println("name: " + v.getKey() + " value: " + v.getValue()); 
} 
संबंधित मुद्दे