如何在Jmeter中的两个线程组之间共享JSessionID
How to share JSessionID between two thread groups in Jmeter
对于我的 JMeter 测试,我想登录一次,然后与 multi-threads 同时浏览我的应用程序中的报告。
我创建了两个连续 运行 的线程组,第一个线程组包含一个线程设置为 运行 的登录 HTTP 请求。第二个线程组包含我的应用程序中每个报告的 HTTP 请求,它设置为 运行,有 50 个线程。
应用程序部署在 weblogic 服务器上,应用程序会话是有状态的。
我想在登录成功后通过weblogic将第一个线程组生成的JsessionID共享给第二个线程组HTTP Requests
问题在于第二个线程组中每个 HTTP 请求的 JsessionID 都是唯一的,并且与第一个线程组中登录 HTTP 请求的 JsessionID 不同。因此,应用程序无法调用验证调用。
JsessionID 嵌入在 header 的 cookie 中。我尝试使用正则表达式提取器(见附图)从第一个线程组的 HTTP 请求中提取它,并在 HTTP Cookie 管理器中定义它,但问题仍然存在。
Regular Expression Extractor config
- 获取 JSESSIONID cookie 值的方法更简单
将下一行添加到 user.properties 文件
CookieManager.save.cookies=true
- 重新启动 JMeter 以选择 属性
- 完成后,您将能够在需要时以
${COOKIE_JSESSIONID}
的形式访问 cookie 值
为了使其在第二个线程组中可用,您需要使用 __setProperty() function 将其转换为 JMeter 属性,例如:
${__setProperty(JSESSIONID,${COOKIE_JSESSIONID},)}
完成后,您将能够使用 __P() function 作为 ${__P(JSESSIONID,)}
访问第二个线程组中的值
供参考。有效:
我找到了一种不同的方法来完成我的测试,并成功地通过第一个线程组中生成的 cookie 抑制了第二个线程组中生成的 cookie,以绕过登录身份验证。
我在第一个线程组中写了一个小的 bsh 来提取 cookie 并将其存储在不同的变量中。
Extract cookies from the first thread group
然后我在第二个线程组中写了另一个 bsh,通过应用生成的变量来抑制 cookies
Applying cookies in the second thread group
现在我可以登录一次并使用共享相同 SessionID 的多线程浏览报告。
对于我的 JMeter 测试,我想登录一次,然后与 multi-threads 同时浏览我的应用程序中的报告。 我创建了两个连续 运行 的线程组,第一个线程组包含一个线程设置为 运行 的登录 HTTP 请求。第二个线程组包含我的应用程序中每个报告的 HTTP 请求,它设置为 运行,有 50 个线程。
应用程序部署在 weblogic 服务器上,应用程序会话是有状态的。
我想在登录成功后通过weblogic将第一个线程组生成的JsessionID共享给第二个线程组HTTP Requests
问题在于第二个线程组中每个 HTTP 请求的 JsessionID 都是唯一的,并且与第一个线程组中登录 HTTP 请求的 JsessionID 不同。因此,应用程序无法调用验证调用。
JsessionID 嵌入在 header 的 cookie 中。我尝试使用正则表达式提取器(见附图)从第一个线程组的 HTTP 请求中提取它,并在 HTTP Cookie 管理器中定义它,但问题仍然存在。 Regular Expression Extractor config
- 获取 JSESSIONID cookie 值的方法更简单
将下一行添加到 user.properties 文件
CookieManager.save.cookies=true
- 重新启动 JMeter 以选择 属性
- 完成后,您将能够在需要时以
${COOKIE_JSESSIONID}
的形式访问 cookie 值
为了使其在第二个线程组中可用,您需要使用 __setProperty() function 将其转换为 JMeter 属性,例如:
${__setProperty(JSESSIONID,${COOKIE_JSESSIONID},)}
完成后,您将能够使用 __P() function 作为
${__P(JSESSIONID,)}
访问第二个线程组中的值
供参考。有效:
我找到了一种不同的方法来完成我的测试,并成功地通过第一个线程组中生成的 cookie 抑制了第二个线程组中生成的 cookie,以绕过登录身份验证。
我在第一个线程组中写了一个小的 bsh 来提取 cookie 并将其存储在不同的变量中。 Extract cookies from the first thread group
然后我在第二个线程组中写了另一个 bsh,通过应用生成的变量来抑制 cookies
Applying cookies in the second thread group
现在我可以登录一次并使用共享相同 SessionID 的多线程浏览报告。