对于我的JMeter测试,我想登录一次,然后与多线程同时浏览应用程序中的报告。 我创建了两个连续运行的线程组,第一个线程组包含设置为与一个线程一起运行的登录HTTP请求。第二个线程组包含我的应用程序中每个报告的HTTP请求,并设置为运行50个线程。
该应用程序已部署在Weblogic服务器上,并且应用程序会话是有状态的。
我想在成功登录后通过weblogic与第二个线程组HTTP请求共享由第一个线程组通过weblogic生成的JsessionID。
问题在于第二个线程组中每个HTTP请求的JsessionID是唯一的,并且与第一个线程组中登录HTTP请求的JsessionID都不同。结果,应用程序无法调用对呼叫进行身份验证。
JsessionID嵌入在标头内的cookie中。我尝试使用正则表达式提取器从第一个线程组的HTTP请求中提取它(请参见附图),并在HTTP Cookie Manager中定义它,但是问题仍然存在。 Regular Expression Extractor config
答案 0 :(得分:2)
有一种使用HTTP Cookie Manager
来获取JSESSIONID cookie值的简便方法。将下一行添加到 user.properties 文件
CookieManager.save.cookies=true
${COOKIE_JSESSIONID}
的身份访问Cookie值要使其在第二个线程组中可用,您需要使用__setProperty() function将其转换为JMeter属性,例如:
${__setProperty(JSESSIONID,${COOKIE_JSESSIONID},)}
完成后,您将可以使用__P() function作为${__P(JSESSIONID,)}
答案 1 :(得分:0)
供参考。它的工作原理:
我找到了另一种方法来完成测试,并通过第一个线程组中生成的cookie来成功抑制第二个线程组中生成的cookie,从而绕过登录身份验证。
我在第一个线程组中写了一个小bsh来提取cookie并将其存储在不同的变量中。 Extract cookies from the first thread group
然后我在第二个线程组中编写了另一个bsh,以通过应用生成的变量来抑制cookie
Applying cookies in the second thread group
现在我可以登录一次,并使用共享相同SessionID的多线程浏览报告。