概述
接到上级通知,需要配合第三方供应商,对他们的合同签署流程进行一次压测。听起来很简单,但是中间涉及到的东西很多
业务流程
这个第三方的签署流程大致如下
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做参数化,并发去读取这三行参数
思路仅供参考