最近在学习jmeter性能测试,发现单点登录模式下,跨线程组使用cookie在获取cookie是比较困难,这个不是从登录接口获取cookie,而是在登录后自动单点登录跳转到相应页面时,取跳转后的cookie信息。下面总结下我使用分析的小心得,希望对大家能有帮助。

  • 为了学习jmeter一些相关工具,我使用badboy录制功能来完成这个接口及相关页面的抓取。录制成功后首先保存为.bx文件。然后输出为jmeter文件,具体操作如下:   

 

 

 

  • 打开jmeter,去除一些重复或者录制过程中没必要的文件。
  • 将所有录制的文件做分类,如下所示:

 

 

 

  • 公司每个功能模块是用单点登录的方式实现的,我首先实现cookie信息获取。
  1. 先在apache-jmeter-5.1.1\bin文件夹下的jmeter.properties  文件中找到“CookieManager.save.cookies”将它的值改为true(图一);
  2. 添加HTTP cookie管理器(图二、图三),不需要填写任何信息。

             

 (图一)

 

 

 (图二)

 

 

 

  (图三)

这时已经可以获取到cookie信息了,在同一个线程组下面可以使用。但是跨线程组是不行的。那么就要分析获取具体的cookie信息。

 

  • 分析发现要获取的cookie信息,并不是登录接口返回的cookie信息,而是登录后第一次跳转后的cookie信息----我们公司是登录后通过单点登录到每个应用模块中。(通过F12抓包分析每次单点登录时传递的cookie信息值)
  1.   右键---添加----后置处理器----正则表达式提取器。提取cookie信息(图四、图五)
  2. 添加调试取样器,添加结果树,运行后,查看cookie取值情况。(图六)
  3. 根据取值信息,添加bell预处理程序设置参数,以用于使用获取的cookie值。(图七)
  4. 设置全局作用的HTTP COOKIE managment ,并使用第3步获取的cookie值(图八)

 

 (图四) 

 

(图五)

 

 

 (图六)

 

 

 (图七)

 

 

 

 

 

 

 

 

  (图八)

  • 设置好cookie以后,就开始正式使用,添加线程组,之前录制的页面、接口等移动进来(图九)。
  • 添加结果树,查看接口是否请求成功、添加调试取样器,查看是否生产cookie信息(有取到具体cookie信息,才能返回cookie信息。)。(图九、图十)
  • 接口信息返回正确。如图说示(图十一)
  • 如果没有cookie信息,会跳转到登录页面(图十二)

 

 (图九)

 

 (图十)

 

 

 (图十一)

 

 

 (图十二)