测试驿栈-由浅入深学性能 jmeter 压测签名算法
「原创声明:保留所有权利,禁止转载」
概述
接到上级通知,需要配合第三方供应商,对他们的合同签署流程进行一次压测。听起来很简单,但是中间涉及到的东西很多
业务流程
这个第三方的签署流程大致如下
1.登录获取 token
2.获取当前时间戳
3.对合同 pdf 进行 base64 转码
4.转码过的合同写到 body 里
5.根据 token,时间戳,body,以及我们的私钥,通过算法生成一个 sign 签名
6.sign 计算之后,body 里面的 base64 会再一次转码
7.将 token,时间戳,私钥,sign 签名作为头部信息,和二次转码的 body 一起传参
大致如下图
技术难点
1.token 是动态的
2.时间戳是动态的
3.合同 pdf 转码之后太长,没有办法直接贴到 jmeter 的 body 里面,贴进去就彻底卡死
4.由于上面的几个参数都是动态,导致生成的 sign 也是动态的,随时在变
5.同一份合同只能签署一次,也就意味着如果想做压测,只能手动传不同的合同,不停地改 sign
解决方案
写 java 方法,实现以下功能
1.调接口自动获取 token
2.自动获取当前时间戳
3.读取本地文件的转码 body
4.通过 body,时间戳,token 生成 sign,然后将这三组参数分列存到本地文件。如果有多份 pdf 文件,就生成多组。如下所示
| sign | time | body |
| -------- | -------- |
| 1 | 2 | 3 |
5.jmeter 做参数化,并发去读取这三行参数
大致思路就是这些
TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
除非获得原作者的单独授权,任何第三方不得转载标注了「原创声明:保留所有权利,禁止转载」的内容,否则均视为侵权。
具体请参见TesterHome 知识产权保护协议。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!