Jmter实现跨线程组共享cookie

Jmter实现跨线程组共享cookie

测试需要登录的接口时,只需要在一个线程组中添加http cookie管理器就可以实现。此时进行压测,比如用户并发数100 ,相当于调用100次登录接口和100次需测试接口。但是在实际场景中,只需要调用1次登录接口,此时需要把登录和被测接C用多线程分开,并实现多线程共享cookie。

解决方法
1.创建setup线程,添加登录的http请求、添加察看结果树,执行后在结果树中查看登录接口返回的cookie。返回形式有两种:Response headers、Response body。本文讲解返回的cookie在Response headers中。有些会用token ,返回在response body。
Jmter实现跨线程组共享cookie
2.在登录的http请求下创建后置处理器- -正则表达式提取器,提取headers中的cookie信息。
引用名称: jsession
正则表达式: Set-Cookie:(.*)
模板: $ 1$
匹配数字: 1
缺省值: error
Jmter实现跨线程组共享cookie
Jmter实现跨线程组共享cookie
3.添加取样器-调试取样器,用于校验正则表达式取到的cookie是否正确。( 运行后可查看到)
Jmter实现跨线程组共享cookie
Jmter实现跨线程组共享cookie
.4.确认cokkie取值正确后,在登录请求下添加后置处理–BeanShel后置处理程序。将cookie值改为全局量,如图。
格式: $ {_ setProperty(转换成全局变量后的引用名 ,${正则表达式定义的变量名},)}

Jmter实现跨线程组共享cookie
Jmter实现跨线程组共享cookie
5.以上完成登录的线程组后,添加第2个线程组,添加被测接口的http请求,添加配置元件-http信息头管理器,设置cookie的值: ${_ _property(JSESSIONID)。
这一步在其他教程上看到过是添加在http cookie管理器中,但是我没有实现。
Jmter实现跨线程组共享cookie

Jmter实现跨线程组共享cookie
6.设置登录的线程数1 ,需测试接[的线程数2 ,运行后可看到被测接口的Request Body中有Cookie Data ,并且值与登录接口返回的信息头中的set-Cookie-致。