SamplerBeanShellSampler的使用

by:授客 QQ1033553122

欢迎加入软件性能测试交流群:7156436

1.  Bean Shell简介

·         BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;

·         BeanShell是一种松散类型的脚本语言(这点和JS类似);

·         BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器。

·         BeanShell可执行标准Java语句和表达式,另外包括一些脚本命令和语法。

 

2.  Bean Shell常用内置变量

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

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

·         ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext

·         vars:即JMeterVariables,操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),常用方法:

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

b) vars.put(String key,String value):数据存到jmeter变量中,其作用可简单理解为赋值操作:key=value,更多方法可参考:org.apache.jmeter.threads.JMeterVariables

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

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

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

·         Parameters:从参数输入框中获取的参数值的集合

·         bsh.args:从参数输入框中获取的参数值的数组

3.  启动Jmeter ,添加测试计划,线程组等

 

4.  添加BeanShell Sampler

右键线程组->添加->Sampler->BeanShell Sampler

5.  应用举例

4.1 自定义脚本、函数

注:UUID含义是通用唯一识别码 (Universally Unique Identifier),java中可调用randomUUID直接生成。

代码如下:

使用保存的unique_id变量值

4.2 引用外部java文件

说明:运行结果,在d盘根目录下生成shouke.txt文件

附:eclipse中代码组织结构如下(下同,不再赘述):

其中:

CreateFile.java代码文件内容:

4.3
引用外部class文件

运行后,在d盘根目录下生成destfile.txt文件

注意:

addClassPath(String
class_path);

1)

这里的class_path可以不是绝对上级路径,只需要包含.class文件即可,比如可以是

addClassPath("D:\\workspace\\StudyProject\\");

addClassPath("D:\\ ");

2)class_path不能包含包名对应的目录路径

如上,如果改成addClassPath("D:\\workspace\\StudyProject\\bin\\
mypackage");

运行会报类似如下错误

2016/10/17 17:55:50 ERROR -
jmeter.util.BeanShellInterpreter: Error invoking bsh method:
eval  
CreateFile (wrong name: mypackage/CreateFile)

2016/10/17 17:55:50 WARN  -
jmeter.protocol.java.sampler.BeanShellSampler:
org.apache.jorphan.util.JMeterException: Error invoking bsh method:
eval   
CreateFile (wrong name: mypackage/CreateFile)

4.4
引用外部jar文件

如下,

1、在eclipse中单独把CreateFile.java文件打包成jar文件,比如create-file.jar

2、把create-file.jar文件放到JMeter安装目录->lib目录下

3、然后在JMeter的【测试计划】面板中添加打包的jar文件

4.5
JMeter内置变量演示

添加【配置原件】-【用户定义的变量】,并在面板中添加var1,var2两个变量

运行结果:

注:

1、log.info等方法会把日志写入到JMeter安装目录->bin目录下的jmeter.log文件中(形如:D:\Program Files
(x86)\Jmeter\apache-jmeter-2.13\bin jmeter.log)

2、参数输入框中也可以直接输入字符串参数值,如下

JMeter Sampler之BeanShellSampler的使用的更多相关文章

  1. jmeter sampler maven项目排错记

    eclipse 创建的maven项目,引入jar包之后出现红色叹号,一直找不到原因,连main方法都无法运行,提示找不到类: 错误: 找不到或无法加载主类 soapsampler.SoapSample ...

  2. 开源负载测试工具k6比JMeter更容易的5件事

    k6是GitHub上提供的开源负载测试工具.它是用Go编写的,并运行用JavaScript编写的测试脚本.它受到了开发人员,测试人员和DevOps团队的强烈兴趣,并拥有超过4400名GitHub明星. ...

  3. Beanshell vs JSR223 vs Java JMeter脚本:性能关闭你一直在等待!

    有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能.查看最流行的扩展机制,比较性能并分析哪一个是最好的. 这是乐队之战,JMeter风格. Beanshell V. JSR223 V ...

  4. jmeter之java请求

    通常情况下,推荐使用jmeter之java请求编写一beashell调用java代码(上篇)(推荐)编写Java 请求 有以下优势 脚本易维护 易调试 开发脚本周期短 不过网上扩展java请求文章比较 ...

  5. JMeter中BeanShell Sampler

    https://blog.51cto.com/11009785/2385492?source=dra 1.jmeter报错 jmeter.protocol.java.sampler.BeanShell ...

  6. JMeter学习-036-JMeter调试工具之三---Debug Sampler

    前面两篇文章分别讲述了 HTTP Mirror Server 和 Debug PostProcessor 的脚本调试实例.此文主要讲述第三种调试工具:DebugSampler,其主要是查看JMeter ...

  7. Jmeter学习(三十三)调试工具Debug Sampler

    一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter properties,JMeter v ...

  8. Jmeter组件8. BeanShell Sampler

    BeanShell是一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,像JavaScript和perl那样 ...

  9. Jmeter调试工具---Debug Sampler

    一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter properties,JMeter v ...

随机推荐

  1. Eclipse 中 Java 代码报版本错误的问题

    今天碰到了eclipse中的代码一直报错,后来发现是编译环境的问题,记录一下. 项目build path的JDK版本是开发的时候编译器需要使用到的,例如,如果用的JDK1.4就不能使用泛型. 而jav ...

  2. Android精通之OrmLite数据库框架,Picasso框架,Okio框架,OKHttp框架

    版权声明:未经博主允许不得转载 OrmLite基础知识 什么是OrmLite框架,在我没用这个框架时,不知道它有多好,用了才知道很方便哦,为了提供开发效率,Android开发者需要懂得运行多种框架进行 ...

  3. Java学习笔记51(综合项目:家庭记账系统)

    javaEE的开发模式 1.什么是模式 模式在开发过程中总结出的“套路”,总结出的一套约定俗成的设计模式 2.javaEE经历的模式 model1模式: 技术组成:jsp+javaBean model ...

  4. Swift5 语言指南(十) 枚举

    一个枚举定义了一个通用型的一组相关的值,使你在你的代码中的一个类型安全的方式这些值来工作. 如果您熟悉C,您将知道C枚举将相关名称分配给一组整数值.Swift中的枚举更灵活,并且不必为枚举的每个案例提 ...

  5. xtrabackup备份mysql-3 差异备份

    差异备份的特点是 基准点  指向第一次全备

  6. python中匿名函数lambda

    简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命 名一个函数的场合下使用,也就是指匿名函数. 先看它的几个用法: map( lambda x: x*x, [y f ...

  7. Python内置类型(3)——比较

    python有8种比较运算符:<.<=.>.>=.==.!=.is.is not,它们具有相同的优先级.它们具体的含义如下: 运算符 含义 < 小于 <= 小于或等 ...

  8. redis-cluster无备节点,安装脚本

    #!/bin/bash #安装gcc yum -y install gcc #安装RVM所需的程序包 yum -y install gcc-c++ patch readline readline-de ...

  9. 调试工具Chisel-LLDB插件

    Chisel-LLDB命令插件 相信每个人或多或少都在用LLDB来调试,比如po一个对象.LLDB的是非常强大的,且有内建的,完整的 Python 支持.今天我们主要介绍一个 facebook 开源的 ...

  10. Android 爬坑之路

    java.lang.ClassCastException: android.app.Application cannot be cast to com.example.lbsdemo.TrackApp ...