0


Jmeter5.x性能测试之BeanShell关联接口压测实战(二)

前言

    互联网项目中,越流行前后端分离开发,让前端工程师和后端工程师各自专注专业领域的开发,后期数据交互再通过接口进行联调对接。

    前后端分离的项目中,用户登录成功之后,后台返回唯一身份令牌token,前端保存token来与服务器其他接口进行数据交互。如,使用token获取订单列表,使用token进行下单操作等。

    同样,测试人员在进行接口测试时,如果接口需要token进行验证才可以获取到有效数据,也必须先模拟用户登录获取token,再使用token向其他接口发起请求。本章节的BeanShell关联接口测试,就可以很完美的解决该问题。

实战案例:

需求:使用“用户登录”接口模拟用户登录获取token,并使用token调用“用户详情”接口获取用户信息;

思路分析:参数化批量请求“用户登录”接口,获取相关响应,提取token数据并保存为文件;通过参数化批量请求“用户详情”接口,并读取“用户登录”接口登录成功后保存下来的token文件l列表一并请求;

1、准备用户登录信息CSV文件;将每个账户独立一行;方面后面Jmeter进行解析;

2、分别创建:线程组,HTTP信息请求头管理器,HTTP采样器,CSV数据文件设置,BeanShell后置处理器程序,察看结果树

线程组:线程数这里设置10个,保持与csv的账号个数一直;

HTTP信息头管理器:用户登录接口是post方式提交,并且是json数据格式;需声明,否则会报错

** HTTP采样器:**主要配置消息体数据的变量名名称,需要保持和 CSV数据文件设置变量名要一致;

CSV数据文件设置:选择CSV文件所在位置,设置自定义变量名名称,分隔符设置一个CSV文件不存在的符号;Jmeter识别不到有效的分隔符,会将一行数据直接赋值给变量,即:userinfo={"mail":"admin","pwd":"123456"}

BeanShell后置处理器程序:关键代码部分,BeanShell提取登录结果,将token追加的方式写入到本地文件;

import org.json.*;

//String responseCode = prev.getResponseCode();
String data = prev.getResponseDataAsString();  //获取响应信息

JSONObject jsonobj = new JSONObject(data);  //转json对象
log.info(jsonobj.toString());

int code = jsonobj.getInt("code");

if(code == 0 ){

  FileWriter fstream  = new FileWriter("D:/article/tokens.txt",true);//写入token的文件路径
  
  BufferedWriter out = new BufferedWriter(fstream);
  
  out.write(jsonobj.get("data")+"\n");
  out.close();
  fstream.close();
}else{

}

用户登录获取token测试结果:本地成功保存token列表文件,且可以与察看结果树的数据一致;

3、根据token获取用户信息;分别新建HTTP信息请求头管理器,HTTP采样器,CSV数据文件设置;

HTTP信息请求头管理器:请求头输入token参数和变量名;变量名${token}要与CSV导入配置的变量名保持一致;

CSV数据文件设置:设置token文件所在位置,变量名,分隔符设置为无效符号。

HTTP采样器:主要设置“获取用户信息”接口的相关参数;

测试结果:通过观察察看结果树可以发现,请求发起成功,且接口响应数据的token和原本发起的token可以对应上;

综上所述,完成了接口关联测试。在实际项目压测中,每个接口的QPS都是进行独立压测,如果混合压测是很难知道一个接口准确的QPS;后期在对接口进行压测,也都是独立压测,最后形成聚合报告汇总。


本文转载自: https://blog.csdn.net/u011673769/article/details/127501911
版权归原作者 ♂老码♂ 所有, 如有侵权,请联系我们删除。

“Jmeter5.x性能测试之BeanShell关联接口压测实战(二)”的评论:

还没有评论