Jmeter接口测试sign验签脚本

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

一、获取验签规则

验签规则一般是开发定义好的,在接口文档中有详细说明,可找开发提供接口文档和询问开发规则。验签规则如下:
Jmeter接口测试sign验签脚本_第1张图片

二、添加请求

请求路径中拼接需求验证的参数
Jmeter接口测试sign验签脚本_第2张图片

三、编写生成签名的脚本

签名一般是在发起请求前就要获取到的,所以这里使用的是Jmeter的前置处理器BeanShell PreProcessor
Jmeter接口测试sign验签脚本_第3张图片

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

	//毫秒级时间戳
 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+"×tamp="+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
可通过调试解调器,查看获取的变量值
Jmeter接口测试sign验签脚本_第4张图片
在脚本中调用连接数据库所获取到的变量值,代码如下:

//连接数据库获取到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中的循环控制器和计数器轮询
Jmeter接口测试sign验签脚本_第5张图片
Jmeter接口测试sign验签脚本_第6张图片

你可能感兴趣的:(Jmeter接口测试sign验签脚本)