Jmeter Beanshell 简单使用

引用https://www.sohu.com/a/340476400_371153

Jmeter 除了提供丰富的组件以外,还提供脚本支持,可通过编写脚本来丰富Jmeter,实现普通组件无法完成的功能。Beanshell是一种轻量级的Java脚本语言,完全符合Java规范,并且内置了一些独有的变量和方法,详细语法可参见Beanshell官网( http://www.beanshell.org/) 。

Jmeter支持多种脚本语言,包括Beanshell,Java和Groovy ,其中对Beanshell的支持最为全面,提供了多种Beanshell的组件:

1.Beanshell Sampler:Beanshell请求,完成Beanshell请求组件中定义的脚本功能

2.Beanshell Postprocessor: Beanshell后置处理器,可通过编程方式获取对应请求的响应结果

3. Beanshell 断言:可通过编程方式实现复杂的断言逻辑

4.Beanshell Preprocessor:Beanshell前置处理器,可通过编程方式在发起请求以前做预处理,比如编码或者加密

5.Beanshell Timer:Beanshell计时器,编程实现条件定时功能

6. Beanshell Listner:Beanshell监听器,监听Beanshell运行结果

Beanshell内置变量介绍

Beanshell有一些默认的内置变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:

  • log:写入信息到控制台中,帮助调试脚本
  • vars: 操作jmeter变量,生成/更新/获取当前脚本的jmeter变量
  • props: 操作jmeter属性,生成/更新/获取当前脚本的jmeter属性,使用方法和vars一样
  • ctx:获取当前线程上下文,可获取当前线程的请求信息和相应信息(eg:可以获取Http请求和响应的所有数据)
  • prev:获取当前请求的结果

Beanshell Sampler 示例

- vars/props/log

通过Beanshell Sampler,测试人员可以编写一些特定逻辑生成的数据,并且通过vars.get、vars.put 或者props.get、props.put 把相应的变量传递到Jmeter脚本当中。

比如有些程序对身份证有校验,就可以在Beanshell脚本中编写身份证生成的逻辑,通过代码生成满足位数以及省市区编码校验的身份证号,然后把生成的身份证号作为变量保存到vars或者props当中,供后续接口调用。

vars.get(String,String) 可以获取Jmeter中已经生成的变量

vars.put(String,String) 可以创建和更新Jmeter变量

props.get(String,String) 可以获取Jmeter中已经生成的属性

props.put(String,String) 可以创建和更新Jmeter属性

vars和props的区别是前者是变量,只能在同一线程组内传递,后者是属性,可以在整个测试计划中跨线程组传递。

og.info(String) 可以将信息输出到控制台,方便代码调试

Beanshell Postprocessor 示例

- ctx/prev

ctx内置变量可以获取上下文通常和Beanshell PostProcessor结合起来使用,用于解析请求的结果,具体代码如下所示。在Jmeter的Beanshell脚本编辑器里可以直接引用Jmeter的Jar包,Jmeter Jar包的Api参见官网(http://jmeter.apache.org/api/overview-summary.html)

 

 prev等同于ctx.getPreviousResult,通过prev可以直接获取到响应结果

 

 通过上述示例,大家对Beanshell编程有了初步的了解,Jmeter Beanshell组件有很多,其中最常用的是BeanShell Preprossor,BeanShell Postprocessor和Beanshell断言,这些Beanshell组件的界面部分大同小异,区别是用在请求的不同阶段

posted @ 2020-11-04 15:57  蘑菇慢慢  阅读(229)  评论(0)    收藏  举报