JMeter处理接口签名之BeanShell实现MD5加密

项目A需要给项目B提供一个接口,这个接口加密了,现在需要测试这个接口,需要怎么编写脚本呢?实现接口签名的方式有两种:BeanShell实现MD5加密和函数助手实现MD5加密,之前已经分享过了函数助手实现MD5加密,今天就来分享下BeanShell实现MD5加密。

一、接口信息

POST /api/agent-pid

json请求参数

{

"app_id":1,

"timestamp":"1667033841",

"pid_num":2,

"sign":xxxxxxxxxxxxxxxxx

}

算法:

1、将请求参数按照键名进行升序排序,需要带上时间戳

即app_id=${app_id}&pid_num=${pid_num}&timestamp=${timestamp}

2、拼接秘钥,将秘钥拼接在参数后面

即app_id=${app_id}&pid_num=${pid_num}&timestamp=${timestamp}${key}

3、将拼接后的结果取md5值

即DigestUtils.md5Hex(app_id=${app_id}&pid_num=${pid_num}&timestamp=${timestamp}${key})

二、编写JMeter脚本

结构如下:添加测试计划,添加用户自定义变量app_id,pid_num和key,添加前置处理器BeanShell,通过MD5加密,得到请求参数sign,添加线程组, 添加http请求,添加断言,添加察看结果树。

一)添加测试计划

右键文件--新建--测试计划

二)添加用户定义的变量

选中测试计划,右键--添加--配置元件--用户定义的变量

定义三个变量,key,请求参数app_id和pid_num

三)添加前置处理器BeanShell

添加前置处理器BeanShell,来定义两个变量timestamp和sign。

选中测试计划,鼠标右键--添加--前置处理器--BeanShell PreProcessor,新建成功,命名为:timestamp,另一个变量sign方法类似。

1、时间戳timestamp

调用System.currentTimeMillis()函数,即可获取时间戳,具体代码如下:

//获得系统的时间,单位为毫秒,转换为秒

long timestamp1 = System.currentTimeMillis()/1000;

//将timestamp转化为string类型,并复制给变量timestamp

vars.put("timestamp",timestamp1.toString());

2、签名sign

主要用到md5Hex函数,取MD5值,具体代码如下:

import org.apache.commons.codec.digest.DigestUtils;

//将请求参数按照键名进行升序排序,需要带上时间戳

//拼接秘钥,将秘钥拼接在参数后面

String md5_str = "app_id=${app_id}&pid_num=${pid_num}&timestamp=${timestamp}${key}";

log.info("md5_str:"+ md5_str);

//将拼接后的结果取md5值

String sign = DigestUtils.md5Hex(md5_str);

vars.put("sign",sign);

log.info(sign);

四)添加线程组

鼠标右键测试计划,添加--Threads(Users)--线程组,命名为:test接口。

五)添加HTTP请求

鼠标右键线程组--添加--Sample--HTTP请求,命名为:test接口请求,填写方法、路径和请求参数的值,四个请求参数,分别为app_id,timestamp,sign,pid_num。

六)添加响应断言

选中HTTP请求,鼠标右键--添加--断言--响应断言,即可添加成功

七)添加察看结果树

选中HTTP请求,鼠标右键--添加--监听器--察看结果树,即可查看响应结果。

这样,一个结果脚本就完成了。

我是程序员馨馨,全网ID唯一,转载请注明出处。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值