jmeter后置处理---BeanShell Sampler的使用

一、什么是BeanShell

BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型、命令、闭包等通用脚本来对其进行拓展。BeanShell不仅仅可以通过运行其内部的脚本来处理Java应用程序,还可以在运行过程中动态执行你java应用程序执行java代码。因为BeanShell是用java写的,运行在同一个虚拟机的应用程序,因此可以自由地引用对象脚本并返回结果。

二.、BeanShell的特点

·完整的java语法的动态执行,java代码片段,以及松散类型的java和其他脚本。

·透明地访问所有java对象和API

·运行在四种模式:命令行,控制台,小程序,远程会话服务器。

·可以在安全约束的环境中工作

·编译器是一个小于150K的jar文件

三、BeanShell Sampler的使用

Jmeter中的BeanShell主要有:定时器BeanShell Timer、前置处理器BeanShell PreProcessor、采样器BeanShell Sampler、、后置处理器BeanShell PostProcessor、断言BeanShell、断言监听器BeanShell Listener。

下面以BeanShell Smapler为例介绍BeanShell的用法,其他的BeanShell使用方法可以用此举一反三。

(一)BeanShell Sampler创建

首先创建一个线程组

jmeter后置处理---BeanShell Sampler的使用_第1张图片

创建成功线程组后,在线程组中创建一个BeanShell Sampler。

jmeter后置处理---BeanShell Sampler的使用_第2张图片

创建成功的BeanShell Sampler如下图所示,创建成功之后可以在其中编写BeanShell脚本。

jmeter后置处理---BeanShell Sampler的使用_第3张图片

(二)获取时间戳

在Jmeter中,可以利用${__time(,)}时间戳函数来获取十位的时间戳:

此处不填入具体的访问地址,仅关注时间戳函数的使用。

jmeter后置处理---BeanShell Sampler的使用_第4张图片

使用${__time(yyyy-MM-dd-HH-mm-ss,)}可以获得yyyy-MM-dd-HH-mm-ss格式的十位的时间戳,结果如下图:

jmeter后置处理---BeanShell Sampler的使用_第5张图片

但是在具体使用中,有时候需要传送较为复杂的时间格式,如“2016-07-31T21:24:07.581Z”此时不能直接调用time函数,因此可以利用BeanShell获取当前时间。

jmeter后置处理---BeanShell Sampler的使用_第6张图片

此处运用了内置对象vars对变量进行存取操作:

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

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

若使用该程序段,在Jmeter中调用变量${str}可以获得yyyy-MM-ddTHH:mm:ss.SSSZ格式的时间,调用变量${str0}可以获得yyyy-MM-ddTHH:mm:ssZ格式的时间。

(三)BeanShell脚本使用的几种的不同的场景

以文件的读写为例,对BeanShell脚本的使用的几种不同的场景做了一个简单的总结

1. 自定义函数

在BeanShell中编写自定义函数,直接利用脚本编译器编译

jmeter后置处理---BeanShell Sampler的使用_第7张图片

其中将读取出的文件中的内容,同时写入文件,并利用内置函数vars.put("emailtxt",str3);将内容赋予变量${emailtxt},在jmeter中就能够调用该变量。在该程序中,存了以数字命名的email,如“[email protected]”,利用读写文件,将email名+1,并使用该email进行注册。

在线程组中调用该变量:

jmeter后置处理---BeanShell Sampler的使用_第8张图片

Jmeter发送的email请求运行结果如下:

jmeter后置处理---BeanShell Sampler的使用_第9张图片

2. 调用外部java文件

如果我们已经有现成的java源文件,可以在BeanShell中直接编写和java引用外部文件时一样的语句来调用java外部文件。

还是之前读写文件的源程序,首先在eclipse中创建完整的工程,并在其中中编写相应的代码,需要注意的是引用的外部文件的返回值。

jmeter后置处理---BeanShell Sampler的使用_第10张图片

代码段如下所示:

jmeter后置处理---BeanShell Sampler的使用_第11张图片

其次,找到.java源文件的路径:

jmeter后置处理---BeanShell Sampler的使用_第12张图片

在BeanShell中引用该路径下的java源文件

jmeter后置处理---BeanShell Sampler的使用_第13张图片

3. 导入外部jar包

从上面两个场景可以知道,在BeanShell中引用外部文件和java是一样一样的,因此此处就不进行过多的描述,步骤为:

1·在eclipse写好代码,然后把该类打成jar包(在类上点击右键->Export->jar file)

2·把jar包放到jmeter目录\apache-jmeter-2.13\lib\ext下

3·打开jmeter,添加一个http sampler,在sampler下添加一个BeanShell Sampler

4·在BeanShell中的头文件中导入该jar包,例import testmail.src.hyq.utils.*

你可能感兴趣的:(测试工程师)