jmeter 常用场景总结
1.接口登录
登录接口往往是最常用的接口,下面介绍这种接口如何使用
1.1 登录接口参数需要加密,登录成功后返回关键属性auth,其他接口均需要请求头中添加此auth才能请求成功。
步骤1.新建线程组,在逻辑控制器中添加用户变量auth。
步骤2.新建csv文件,列名为参数名,列值为请求参数值
步骤3.bin目录下新增目录UserParametersFiles,将csv文件放入目录
步骤4.将加密及解密类打jar包,单独功能类复制
步骤5.bin目录下新增目录UserJavaFiles,如果类文件放入此目录,jar文件放入lib-》ext目录下。
步骤6.测试计划新增用户变量,分别存储、UserParametersFiles、UserJavaFiles、IP、等关键目录地址
步骤7.测试计划新增配置元件-》HTTP信息头管理,增加auth 值为${auth}
步骤8.测试计划新增threads->setup thread group,做功能测试配置线程数据1次循环即可
步骤9.选择线程组->添加配置元件->用户定义的变量 添加一组用户信息
步骤10.在新建的thread group下,新增sampler->http 请求
步骤11.选择http 请求添加-》前置处理器-》用户参数:新增几组请求参数
步骤12.选择线程组,配置元件-》csv data set Config,
文件名:${UserParametersFiles}loginPars.csv
变量名:依次是文件列名
步骤13.定制化http 请求参数读取,步骤9 、11、12都是可以进行http请求参数化的,其中9适合单用户功能,11 12 适合多用户参数化性能测试
配置请求地址,配置读取相应的参数。在用户定义的变量中定义一个配置变量
在登录http请求前,创建前置处理器 bealshell 。获取配置参数
//引入类文件 同原java文件的import import com.fujiaxi.des.*; //进行加密操作根据索要读取的的数据源 //读取用户配置 String config=vars.get("ParDataFrom"); //log.info("登录用户-config值为:"+config); //UserID_Cvs UserID_Define UserID_Samper String userJiami=""; String passwordJiami=""; if(config.equals("1")) { // log.info("登录用户-读取用户自定义变量"); userJiami=DESUtil.getDesData(vars.get("UserID_Define"), ""); passwordJiami=DESUtil.getDesData(vars.get("Password_Samper"), ""); } else if(config.equals("2")) { // log.info("登录用户-读取cvs文件变量"); userJiami=DESUtil.getDesData(vars.get("UserID_Cvs"), ""); passwordJiami=DESUtil.getDesData(vars.get("Password_Cvs"), ""); } else if(config.equals("3")) { // log.info("登录用户-读取用户参数变量"); userJiami=DESUtil.getDesData(vars.get("UserID_Samper"), ""); passwordJiami=DESUtil.getDesData(vars.get("Password_Samper"), ""); } else { log.info("登录用户-读取用户参数错误,请检查配置"); } //存储加密后变量 vars.put("userJiam",userJiami); vars.put("passwordJiami",passwordJiami); //输出log //log.info("用户id加密值:"+userJiami+"---密码加密值:"+passwordJiami);
然后添加后置处理器,获取返回的唯一标志 ,并设置属性
import com.zf.zson.ZSON; import com.zf.zson.result.ZsonResult; //将获取的auth 加入请求头变量 String getRspone = prev.getResponseDataAsString(); //log.info("登录返回结果:"+getRspone); //使用zson 获取auth ZsonResult z= ZSON.parseJson(getRspone); //vars.put("auth",z.getString("//auth")); //vars.put("testauth",z.getString("//auth")); //设置auth属性 props.put("auth",z.getString("//auth")); log.info("登录-auth:"+props.get("auth"));
在下一个http 请求前更新,auth变量,值为上一步存储的属性
//获取当前auth属性 String myAuth=props.get("auth"); //复制当前auth变量 vars.put("auth",myAuth); log.info("实施启动-auth:"+vars.get("auth"));
如此便可以使用后续接口了。