目录
1、引言
BeanShell是一种小型的,免费的,可嵌入的符合Java语法规范的源代码解释器,具有对象脚本语言特性。
在Jmeter实践中,由于BeanShell组件较高的自由度,通常被用来处理较为复杂,其它组件难以处理的问题 - 干脏活累活。而使用BeanShell组件自然需要一定的代码基础,最好是java编程基础。
Jmeter5.0提供的BeanShell组件包括:
- 取样器 - BeanShell取样器
- 前置处理器 - BeanShell前置处理器
- 后置处理器 - BeanShell后置处理器
- 断言 - BeanShell断言
- 定时器 - BeanShell定时器
- 监听器 - BeanShell监听器
下面我们通过一个典型的应用实例来讲解BeanShell在一次性能测试中的具体应用方法。
2、需求
现在我们有这样一个接口做为压测对象:
其使用HTTP协议进行交互,使用RSA加密算法进行加密传输,然后进行密文报文反馈。
其请求报文体基础格式为JSON,如下所示:
{
"format":"json",
"message":{
"head":{
"branchCode":"2110",
"channel":"BESK",
"timeStamp":"20180827105901487",
"transCode":"billQuery",
"transFlag":"01",
"transSeqNum":"BP180827105846210047"
},
"info":{
"epayCode":"VC-PAY2018080265602",
"input1":"123456",
"merchantId":"103881104410001",
"traceNo":"VC180827105846813462",
"userId":"1637206339848118"
}
}
}
我们无法用Jmeter的其它组件来实现报文体加密,因此引入Beanshell前置处理器将报文进行加密,接收到返回后再引入Beanshell断言解密返回报文并断言测试结果,具体拆分步骤如下:
- 在线程组下加入HTTP取样器
- 在取样器下加入HTTP信息头管理
- 在取样器下加入BeanShell预处理器,并完成JSON格式报文组装
- 在BeanShell处理器中完成报文体RSA加密验签,使用Jmeter变量保存
- 配置HTTP取样器使其使用上一步变量值发送加密报文
- 在取样器下加入BeanShell断言,解密返回报文并断言结果
- 配置其它监控器如查看结果树和聚合报告等监控测试结果
3、BeanShell实现
3.1、原始单元测试的java代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|