【JMeter】Beanshell Sampler 常用方法


JMeter 中可以使用 Beanshell Sampler 编写一些简单的脚本,实现更多功能。

1、Beanshell

Beanshell 是一种轻量级的 Java 脚本,纯 Java 编写的,能够动态的执行标准 java 语法及一些扩展脚本语法,类似于 javaScript 和 perl。

2、内置变量

Beanshell Sampler 中除了可以使用标准 java 语法之外,还有一些定义好的变量,可以直接使用。

  • SampleResult
  • ResponseCode,
  • ResponseMessage
  • IsSuccess
  • Label
  • FileName
  • ctx
  • vars
  • props
  • log

下面我按使用频率,分别讲一下最常用的几种变量。

3、log

  • 用于打印日志,最常用,也最简单;
  • 打印在 jmeter.log 中,可以设置打印级别,可以打印字符串、变量等。

使用方法:

1、打印 info 形式的普通字符串日志:
log.info("hello world");  输出 hello world

2、拼接字符串和变量 (其中 token 是 jmeter 局部变量):
log.info("hello world" + "${token}");  输出 hello world 和 token 变量的拼接结果

3、打印自定义变量
str = "12345";
log.info(str);  输出 12345

4、打印 error 形式的普通字符串日志:
log.info("hihihi");
log.error("aaaaa");
输出的区别:
2018-12-27 19:05:13,158 INFO o.a.j.u.BeanShellTestElement: hihihi
2018-12-27 19:05:13,158 ERROR o.a.j.u.BeanShellTestElement: aaaaa
  • print() 打印日志

在 beanshell 中还可以使用 print() 函数来打印日志,输出字符串等信息;

print() 是在控制台中输出信息,log() 默认是在 jmeter.log 中输出信息。

4、vars

  • 用于存取 jmeter 局部变量,很常用,一定要掌握;
  • 通常用于存取字符串内容,也可以存取对象;

vars.get()

String mykey = vars.get("keyname"); 
获取变量名为 keyname 的值,并保存在 mykey 中。

vars.put()

vars.put("keyname","value");  
把变量 keyname(值为 value)保存到 jmeter 变量中。

vars.putObject("OBJname",new Object()); 
把一个对象 OBJname 保存到 jmeter 变量中

vars.remove()

vars.remove("keyname");
从 jmeter 变量中删除 keyname。

5、props

  • 用于存取 jmeter 全局的静态变量;
  • 其中的 key 和 value 均是字符串形式;
ymd = props.get("START.YMD");
获取属性 START.YMD 的值(脚本启动日期)。

props.put("PROP1","1234");
把 1234 存入全局属性 PROP1 中。

6、ctx

  • 当前线程的上下文信息;

使用举例:

ctx.getCurrentSampler(); 获取当前 sampler 请求

ctx.getPreviousSampler(); 获取前一个 sampler 请求

ctx.getThreadNum(); 获取当前线程的序号,从 0 开始计数

ctx.getThread(); 获取当前线程

ctx.getThreadGroup(); 获取当前线程组

ctx.getProperties(); 获取所有属性

ctx.getVariables(); 获取当前线程的所有变量

7、SampleResult

SampleResult.setResponseData(data);
自定义响应数据。
  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JMeter BeanShell Sampler是一种JMeterSampler,它使用BeanShell脚本语言编写。BeanShell是一种Java编写的脚本语言,它可以在JVM上运行,并且可以访问Java类和接口。使用BeanShell脚本,可以在JMeter中编写自定义的Sampler,以便执行更复杂的测试任务。BeanShell Sampler可以通过JMeter的GUI界面或者JMeter的脚本文件进行配置和使用。 ### 回答2: JMeter是一个性能测试工具,可以模拟大量用户对Web应用程序的访问,测试系统的性能。Beanshell Sampler则是JMeter的一个非常有用的组件,它允许测试人员使用Beanshell脚本来执行复杂的测试逻辑或对测试数据进行处理。 使用Beanshell Sampler的第一步是将它添加到JMeter测试计划中。可以在JMeter工具栏中选择“Sampler”菜单,然后选择“Beanshell Sampler”。在Beanshell Sampler配置页面中,可以编写自定义的Beanshell脚本。脚本可以使用类Java语法编写,可以使用Beanshell语法,也可以使用Java类库。 一个简单的Beanshell脚本可以像这样: ``` log.info("Hello, World!"); ``` 这个简单的脚本会将“Hello, World!”信息写入到JMeter的日志文件中。 Beanshell脚本既可以在每个请求之前执行,也可以在每个请求之后执行。默认情况下,Beanshell Sampler在每个请求之前执行。如果需要在每个请求之后执行,则需要将“Run thread group as a loop”选项设置为False,并将“Action to be taken after a sampler error”选项设置为“Continue”. 在脚本中,可以使用很多JMeter提供的对象和方法,如vars, log, prev,ctx等。vars对象允许在脚本中使用JMeter变量,log对象可以记录日志信息。 ``` log.info("Response code: " + prev.getResponseCode()); log.info("Response message: " + prev.getResponseMessage()); ``` prev对象包含了上一个请求的响应数据,ctx对象包含了JMeter上下文信息。 除了使用JMeter内置对象和方法Beanshell还可以使用Java类库的方法,只需要将需要使用的Java类库的jar文件放置在JMeter的lib目录下即可。 总之,Beanshell Sampler是JMeter非常有用的组件,通过编写Beanshell脚本,可以实现很多复杂的测试逻辑和数据处理操作,从而更好地完成性能测试任务。 ### 回答3: JMeter Beanshell Sampler是JMeter的一个组件,可以用于执行任意Java代码。使用JMeter Beanshell Sampler可以方便地对JMeter进行扩展和自定义。在JMeter中,可以通过以下步骤使用Beanshell Sampler: 1. 新建一个测试计划,然后选择添加“Thread Group”组件。 2. 在“Thread Group”组件中添加“Beanshell Sampler”组件。 3. 在“Beanshell Sampler”组件中编写Java代码。 4. 运行测试计划,查看测试结果。 在编写Beanshell脚本时,可以使用JMeter提供的Beanshell变量和方法,也可以使用自定义变量和方法。此外,还可以在Beanshell脚本中调用外部的Java类和方法。需要注意的是,Beanshell脚本的性能要比纯Java代码稍差,因为Beanshell是解释执行的。 在使用Beanshell Sampler时,可以实现一些常见的场景,例如: 1. 计算某些数据后再发送HTTP请求。 2. 根据条件控制请求的发送次数。 3. 根据特定的逻辑生成请求数据。 4. 在JMeter中实现自定义函数等功能。 需要注意的是,在使用Beanshell Sampler时需要谨慎操作,避免因为编写不当而导致性能问题或安全问题。因此,编写Beanshell脚本时需要遵循Java的最佳实践,尽量减少不必要的计算和I/O操作,同时进行充分的测试和验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值