首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jmeter之Bean shell使用

一、Bean shell是什么

·BeanShell是一种完全符合Java语法规范的脚本语言;

·BeanShell并且又拥有自己的一些语法和方法的脚本语言(和JS类似);

·BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器;

·BeanShell具有对象脚本语言特性;

·BeanShell是非常精简的解释器,是一个jar文件(大小为175k)。

二、Bean shell种类

·定时器:  BeanShell Timer

·前置处理器:BeanShell PreProcessor

·采样器:  BeanShell Sampler

·后置处理器:BeanShell PostProcessor

·断言:   BeanShell断言

·监听器:  BeanShell Listener

三、使用Bean shell

此节详细介绍BeanShellPreProcessor的使用方法,其它的beahshell使用方法类似,就不一一介绍。参考此方法即可。如使用beahshell调用自己写的工具类,工具类实现了密码的加密、解密的功能:

1、在eclipse写好加密、解密的代码,然后打成jar包(选中该类点击右键->Export->jar file)

2、把打好的jar包放到jmeter目录下的apache-jmeter目录的lib\ext下;

3、打开jmeter,添加http sampler,在sampler下添加一个BeanShell PreProcessor;

4、在beanshell PreProcessor导入步骤一的jar包,调用jar包里的加密码方法和解密码方法,并把结果保存在jmeter变量中,下面两个是beanshell中最常用到的方法:

·vars.get(String paramStr):获取变量值

·vars.put(String key,String value):把数据存到jmeter变量。

//加密

String password ="123123";

String encode =SecurityUtils.getKey(password);//调用工具类中的方法进行加密

vars.put("encode",encode);//把值保存到jmeter变量encode中

StringgetEncode=vars.get("encode");

5、把加密后的密码存到jmeter变量中,然后在http sampler中就可通过$使用:

6、执行测试脚本:

四、Bean shell常用内置变量

JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:

·log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);

·vars- (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:

a) vars.get(String key):从jmeter中获得变量值

b) vars.put(String key,String value):数据存到jmeter变量中

·props- (JMeterProperties -class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。

a)props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义

b)props.put("PROP1","1234");

·prev- (SampleResult):获取前面的sample返回的信息,常用方法:

a) getResponseDataAsString():获取响应信息

b) getResponseCode():获取响应code

·sampler- (Sampler):givesaccess to the current sampler

五、操作Bean shell变量

通过使用Bean shell内置对象vars可以对变量进行存取操作

a) vars.get("name"):从jmeter中获得变量值

b) vars.put("key","value"):数据存到jmeter变量中

六、操作Bean shell属性

通过使用Bean shell内置对象props可以对属性进行存取操作

a)props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义

b)props.put("PROP1","1234");

七、自定义Bean shell函数

在BeanShell中,我们可以使用java语言自定义函数来处理特定的逻辑,结合BeanShell的内置对象进行变量的存取,方便我们进行测试提高脚本的灵活性。

示例:

1、在TestPlan中添加一个变量:hello =kitty

2、Debugsampler-1和Debugsampler-2什么都不处理,用来查询对比beahshell处理前后的结果

3、BeanShellSampler中的脚本如下:

八、引用外部java文件

有没有觉得上面(三)中自定义函数这样的方式太麻烦并且也不美观?而且如果我们已经有现成的java源文件或者class文件时,我们有没有什么办法直接在jemter中引用?这就是这部分要介绍的内容,直接上示例:

1、假如我有一个java源文件,名为:Myclass.java,代码如下:

packagetest;

publicclassMyclass

{

publicintadd(inta,intb)

{

returna +b;

}

}

2、Bean Shell使用代码如下:

九、引用外部class文件

在jmeter中可以直接引用class文件,方法如下:

1、BeanShell使用直接引用class文件,示例代码如下:

用addClassPath("D:\\")方法引入class文件,再用import导入包、类,然后就可以像java一样调用了。

2、运行结果:

十、引用外部Jar 包

前面已经介绍了如何引用外部java和class文件,如果文件比较多,可以把它们打成一个jar包,再在jemter中调用。调用方法前面已经讲过,这里介绍如何在jmeter中引入jar的方法:

1、把打好的jar包放到jmeter目录下的apache-jmeter目录的lib\ext下;

2、在TestPlan的右侧面板最下方直接添加需要引用的jar包,如下图:

十一、其它

1、在TestPlan中定义如下三个变量:

2、在BeanShell中使用变量的方法如下:

a、beanshell可接受传入参数,如下图:$$ $;

b、参数可通过bsh.args[]按顺序获取;

c、beanshell还提供了一个用来保存参数集合的内置变量Parameters;

3、运行后,结果如下:

在下图的“1”中输入如下设置:

ResponseCode = 500;

ResponseMessage = "This is a test";

在下图的“2”中输入如下设置:

log.info(Parameters);

log.info(Label);

请关注

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181221G1LUCZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券