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

相关推荐
测试小小怪下士25 分钟前
单元测试、集成测试、系统测试、验收测试、压力测试、性能测试、安全性测试、兼容性测试、回归测试(超详细的分类介绍及教学)
功能测试·单元测试·测试用例·集成测试·压力测试·模块测试·安全性测试
牧魂.2 小时前
软件测试入职要求汇总
自动化测试·软件测试·功能测试·接口测试·性能测试
Dreams°1238 小时前
【大数据测试HBase数据库 — 详细教程(含实例与监控调优)】
大数据·功能测试·单元测试
我非夏日12 小时前
JMeter进阶篇
jmeter
惜.己12 小时前
Jmeter中的配置原件(三)
功能测试·测试工具·jmeter·1024程序员节
綦枫Maple12 小时前
Jmeter基础篇(23)TPS和QPS的异同
数据库·jmeter·oracle
惜.己12 小时前
Jmeter中的配置原件(二)
测试工具·jmeter·1024程序员节
我非夏日12 小时前
JMeter项目实战
jmeter
川石课堂软件测试12 小时前
性能测试|JMeter接口与性能测试项目
javascript·数据库·python·jmeter·单元测试
古人诚不我欺12 小时前
jmeter常用配置元件介绍总结之后置处理器
人工智能·jmeter·tensorflow