Jmeter接口测试sign验签脚本

在工作中遇到需要测试的接口有签名的验证,可以借助postman和jmeter两种工具实现,本人推荐postman来编写验签脚本,脚本简洁,使用的人也较多,遇到问题也好研究。

一、获取验签规则

验签规则一般是开发定义好的,在接口文档中有详细说明,可找开发提供接口文档和询问开发规则。验签规则如下:
在这里插入图片描述

二、添加请求

请求路径中拼接需求验证的参数
在这里插入图片描述

三、编写生成签名的脚本

签名一般是在发起请求前就要获取到的,所以这里使用的是Jmeter的前置处理器BeanShell PreProcessor
在这里插入图片描述

根据签名规则,第一步应该获取到毫秒时间戳,代码如下:

	//毫秒级时间戳
 long date =  new Date().getTime();
 //将long类型转换成String类型
 String dateTime = String.valueOf(date);
 log.info(dateTime);
 vars.put("timestamp",dateTime);  //将date存入timestamp变量中,请求中使用${timestamp}

第二步获取到请求中的body部分,代码如下:

//获取请求body
Arguments args = sampler.getArguments();
Map reqMap = args.getArgumentsAsMap();
log.info("------------------------body------------------");
//ArrayList list = new ArrayList();
strbody="";
for (String key : reqMap.keySet()) {
    strbody=reqMap.get(key);
    
}
log.info(strbody);

第三步,拼接body和URL,代码如下:

//拼接body和url
String strA=strbody+"appId="+appId+"&timestamp="+dateTime+"&";
log.info(strA);
String strSignSrc=strA+appkey;
log.info(strSignSrc);

第四步,使用MD5对拼接的strSignsrc进行加密,代码如下:

//使用MD5加密
String sign = DigestUtils.md5Hex(strSignSrc);
log.info("-----------MD5加密签名-------------");
log.info(sign);
//得到sign后将sign传给变量
vars.put("sign",sign);

四、连接数据库参数化

连接数据库参数化验签所需的变量,通过jmeter的jdbc Request连接数据库,获取到验签所需要的参数,jmetetr连接数据库时需要用到mysql-connector-java-5.1.46.jar包,请自行下载。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210402150702613.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDk2MDk3NQ==,size_16,color_FFFFFF,t_70
可通过调试解调器,查看获取的变量值
在这里插入图片描述
在脚本中调用连接数据库所获取到的变量值,代码如下:

//连接数据库获取到appkey
var appkey_k=vars.get("appkey_${k}");
String appkey="appKey="+appkey_k;
log.info(" ------------------appkey---------------------->");
log.info(appkey);

//获取数据库中的appId
String appId  = vars.getObject("appId_${k}");
//var appId = vars.get("${appId_${k}}");
log.info("appId----------->>"+appId);
//将appId返回至请求URL中
vars.put("appId",appId);

四、遍历参数请求

可通过Jmeter中的循环控制器和计数器轮询
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值