一、什么是Bean Shell
- BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;
- BeanShell是一种松散类型的脚本语言(这点和JS类似);
- BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为175k。
- BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。
官网:http://www.BeanShell.org/
二、Jmeter有哪些Bean Shell
-
定时器: BeanShell Timer
-
前置处理器:BeanShell PreProcessor
-
采样器: BeanShell Sampler
-
后置处理器:BeanShell PostProcessor
-
断言: BeanShell断言
-
监听器: BeanShell Listener
三、BeanShell的用法
在此介绍下BeanShell PreProcessor的用法,其它的beahshell可以类推。在此我们使用beahshell调用自己写的工具类,工具类实现了密码的加、解密功能:
1.在eclipse写好代码,然后把该类打成jar包(在类上点击右键->Export->jar file)或者下载commons-codec-1.11.jar
2.把jar包放到jmeter目录\apache-jmeter-2.13\lib\ext下
3.在测试计划中,添加此jar包
4.打开jmeter,新增一个BeanShell Sampler,再添加一个http sampler(调用登录接口)
5.在BeanShell Sampler中导入我们的jar包,调用里面的加、解密码方法,把结果保存在jmeter变量中,下面两个方法是beanshell中我们最常用到的:
- vars.put(String key,String value):,将数据存到jmeter变量中
- vars.get(String paramStr):获得变量值
//导入jar包 import org.apache.commons.codec.digest.DigestUtils; //定义需要加密的参数并将其进行拼接 String parm="123456153452415"; //调用MD5hex方法生成最终的加密串 String mxd=DigestUtils.md5Hex(parm); //将生成的加密串赋值给变量mxd,这样可以便于后续的使用 vars.put("mxd",mxd);
6.把加密后的密码存到jmeter变量中,然后在http sampler中就可以通过${mxd}进行使用了:
7.执行脚本
http请求
Debug Sampler响应数据