jmeter跨线程组session共享

背景:

需要测试登录后的某个接口A的负载测试,目前的情况是:每测试一次这个接口A都需要登录一次,影响此接口A的测试结果。为了解决这个问题,可以参考如下的解决方案,有同线程组、跨线程组的区别,最终都达到session共享(cookie保持)。

一、同线程组的session共享

方式一:
在线程组中添加一个HTTP Cookie 管理器,即可自动获取登录。
方式二:
在同一个线程组中的不同控制器中实现session共享,将正则表达式获取的session值传递给HTTP Cookie 管理器.
jmeter跨线程组session共享_第1张图片

二、跨线程组的session共享

思路: 设置一个jmeter全局变量并调用。 — 使用正则表达式获取sessionid — BeanShell PostProcessor设置全局变量 — http cookie管理器引用全局变量。

整个测试计划树状结构如下:

备注:记得一定要勾选独立运行每一个线程组
jmeter跨线程组session共享_第2张图片

原理步骤解析:

1、在线程组1中,使用正则表达式获取JSESSIONID。
(JSESSIONID这个sessionid是登录接口的响应信息头中获取的,所以正则表达式获取字段勾选信息头)
jmeter跨线程组session共享_第3张图片
jmeter跨线程组session共享_第4张图片
2、通过BeanShell PostProcessor后置处理器设置全局变量。

${__setProperty(sessionid,${JSESSIONID},)}

jmeter跨线程组session共享_第5张图片
3、在测试计划中,添加http cookie管理器引用全局变量,作用范围在整个测试计划。也可以在具体是线程组中添加http cookie管理器引用全局变量,只作用在此线程组内。

${__P(sessionid)}

jmeter跨线程组session共享_第6张图片

注意:

1、可以添加一个debug sampler调试取样器,通过察看结果树记录正则表达式获取的值。
jmeter跨线程组session共享_第7张图片
jmeter跨线程组session共享_第8张图片

你可能感兴趣的:(jmeter,jmeter,session)