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唯一,转载请注明出处。

相关推荐
明月与玄武12 小时前
Jmeter -- JDBC驱动连接数据库超详细指南
数据库·jmeter·配置jdbc连接
数巨小码人1 天前
Window下Jmeter多机压测方法
jmeter
暖暖木头2 天前
Jmeter【测试片段】之登录复用介绍
jmeter
跟我一起学测试呀2 天前
软件测试—接口测试面试题及jmeter面试题
软件测试·jmeter·面试
还是鼠鼠2 天前
JMeter 教程:编写 GET 请求脚本访问百度首页
功能测试·jmeter·单元测试
JZMSYYQ2 天前
磁光克尔效应在量子计算中的应用
功能测试·测试工具·制造
测试界萧萧2 天前
15:00开始面试,15:06就出来了,问的问题有点变态。。。
自动化测试·软件测试·功能测试·程序人生·面试·职场和发展
暖暖木头3 天前
Jmeter变量传递介绍
jmeter
小沈同学呀3 天前
Apache JMeter API 接口压测技术指南
jmeter·apache
nanzhuhe3 天前
‌JMeter聚合报告中的任务数和并发数区别
jmeter