最近在学习jmeter性能测试,发现单点登录模式下,跨线程组使用cookie在获取cookie是比较困难,这个不是从登录接口获取cookie,而是在登录后自动单点登录跳转到相应页面时,取跳转后的cookie信息。下面总结下我使用分析的小心得,希望对大家能有帮助。
- 为了学习jmeter一些相关工具,我使用badboy录制功能来完成这个接口及相关页面的抓取。录制成功后首先保存为.bx文件。然后输出为jmeter文件,具体操作如下:
- 打开jmeter,去除一些重复或者录制过程中没必要的文件。
- 将所有录制的文件做分类,如下所示:
- 公司每个功能模块是用单点登录的方式实现的,我首先实现cookie信息获取。
- 先在apache-jmeter-5.1.1\bin文件夹下的jmeter.properties 文件中找到“CookieManager.save.cookies”将它的值改为true(图一);
- 添加HTTP cookie管理器(图二、图三),不需要填写任何信息。
(图一)
(图二)
(图三)
这时已经可以获取到cookie信息了,在同一个线程组下面可以使用。但是,跨线程组是不行的。那么就要分析获取具体的cookie信息。
- 分析发现要获取的cookie信息,并不是登录接口返回的cookie信息,而是登录后第一次跳转后的cookie信息----我们公司是登录后通过单点登录到每个应用模块中。(通过F12抓包分析每次单点登录时传递的cookie信息值)
- 右键---添加----后置处理器----正则表达式提取器。提取cookie信息(图四、图五)
- 添加调试取样器,添加结果树,运行后,查看cookie取值情况。(图六)
- 根据取值信息,添加bell预处理程序设置参数,以用于使用获取的cookie值。(图七)
- 设置全局作用的HTTP COOKIE managment ,并使用第3步获取的cookie值(图八)
(图四)
(图五)
(图六)
(图七)
(图八)
- 设置好cookie以后,就开始正式使用,添加线程组,之前录制的页面、接口等移动进来(图九)。
- 添加结果树,查看接口是否请求成功、添加调试取样器,查看是否生产cookie信息(有取到具体cookie信息,才能返回cookie信息。)。(图九、图十)
- 接口信息返回正确。如图说示(图十一)
- 如果没有cookie信息,会跳转到登录页面(图十二)
(图九)
(图十)
(图十一)
(图十二)