1 什么是beanshell
BeanShell是由Java编写的,是一个轻量级的脚本语言,可以理解用来强化JMeter的一门脚本语言。
我们可以在beanshell自义函数生成随机数,调用jar包获取值等等。
2 如何使用beanshell
在Bean Shell 预处理程序引用jar文件,举例子,现在我们需要进行一个用户借款请求压测,该接口会校验身份证、手机号等信息,那么我们可以通过beanshell引用一个工具类jar包,将获取到的值赋值给我们的请求参数。
使用方式如下:
1、添加Bean Shell 预处理程序
在请求右键 > 添加 > 前置处理器 > Bean Shell 预处理程序
2、在测试计划引入jar包
3、在beanshell中调用jar包
4、将beanshell里面的方法赋值给请求参数
代码语言:javascript复制#使用方式:将数据存到jmeter变量中
vars.put("key","value"):#举例
{
"generatedName":${generatedName},
"idCard":${idCard}
}
5、察看结果树
可以看到我们的请求里带着调用jar包获取的值啦。
6、添加Bean Shell 后置处理程序
在请求右键 > 添加 > 后置处理器 > Bean Shell 后置处理程序
后置处理程序和预处理程序的使用方式差不多,可以用于将解密后的响应进行解密。
7、随机数
我们在测试过程如果需要某个参数随机请求的,也可以通过beanshell来实现。
代码语言:javascript复制String[] str= new String[]{"张三", "李四", "王五"};
Random random = new Random();
int i = random.nextInt(str.length);
vars.put("str",str[i]);
log.info("随机字符:" str[i]);
3 总结
beanshell可以用来帮我们处理请求前的参数或者响应,如果遇到复杂的请求或者响应,通过正则表达式提取器或者JSON提取器不好实现的,那么可以考虑通过编写beanshell脚本来解决。
我最开始接触beanshell是因为要测一个借还款请求的接口,因为请求报文和响应报文是加密的,所以我们就需要在请求前将报文进行加密,将响应进行解密,来查看响应是否正确。
后来慢慢发现还可以用造自定义的随机数以及做断言,完全可以根据自己的需求进行定制化处理,所以说掌握一门语言是非常重要的,它可以帮助我们提高效率。
不说了,俺去写Java了......