JMeter Sampler之BeanShellSampler的使用
Sampler之BeanShellSampler的使用
by:授客 QQ:1033553122
欢迎加入软件性能测试交流群: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的使用的更多相关文章
- jmeter sampler maven项目排错记
eclipse 创建的maven项目,引入jar包之后出现红色叹号,一直找不到原因,连main方法都无法运行,提示找不到类: 错误: 找不到或无法加载主类 soapsampler.SoapSample ...
- 开源负载测试工具k6比JMeter更容易的5件事
k6是GitHub上提供的开源负载测试工具.它是用Go编写的,并运行用JavaScript编写的测试脚本.它受到了开发人员,测试人员和DevOps团队的强烈兴趣,并拥有超过4400名GitHub明星. ...
- Beanshell vs JSR223 vs Java JMeter脚本:性能关闭你一直在等待!
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能.查看最流行的扩展机制,比较性能并分析哪一个是最好的. 这是乐队之战,JMeter风格. Beanshell V. JSR223 V ...
- jmeter之java请求
通常情况下,推荐使用jmeter之java请求编写一beashell调用java代码(上篇)(推荐)编写Java 请求 有以下优势 脚本易维护 易调试 开发脚本周期短 不过网上扩展java请求文章比较 ...
- JMeter中BeanShell Sampler
https://blog.51cto.com/11009785/2385492?source=dra 1.jmeter报错 jmeter.protocol.java.sampler.BeanShell ...
- JMeter学习-036-JMeter调试工具之三---Debug Sampler
前面两篇文章分别讲述了 HTTP Mirror Server 和 Debug PostProcessor 的脚本调试实例.此文主要讲述第三种调试工具:DebugSampler,其主要是查看JMeter ...
- Jmeter学习(三十三)调试工具Debug Sampler
一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter properties,JMeter v ...
- Jmeter组件8. BeanShell Sampler
BeanShell是一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,像JavaScript和perl那样 ...
- Jmeter调试工具---Debug Sampler
一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter properties,JMeter v ...
随机推荐
- Java 实现 Http 请求工具类
package com.demo.util; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...
- SQL-2--TRIGGER
触发器TRIGGER 是一个被指定关联到一个表的数据库对象,当对一个表的特定事件出现时,它将被激活. 触发器是数据库响应 INSERT , UPDATE, DELITE 语句而自动执行的一条SQL语句 ...
- 90 % Java 程序员被误导的一个性能优化策略
我们经常看到一些 Java 性能优化的书或者理念,说不要在循环内定义变量,这样会占用过多的内存影响性能,而要在循环外面定义.接触 Java 这么久以来,相信很多 Java 程序员都被这种代码性能优化策 ...
- 使用pipenv隔离不同项目的依赖包
pipenv可以为不同的路径创建python环境和依赖包,结合pyenv可以达到为不同项目使用不同python版本,不同依赖包的目的. pip install pipenv #安装pipenv 使用p ...
- shell编程中的if语句
if语句在任何编程中都是必不可少.至关重要的分支语句,shell也是如此,只不过各种编程中的方式和格式有点不太一样 shell编程中的if语句基本格式如下: if [ X$1 = XA ];then ...
- Jpush极光推送的一些心得
在集成极光推送的时候,test完全正常.部署到服务器后只发送一条推送之后推送不继续发送.经排查: 2018-06-28 10:24:26.394 [ThreadPoolTaskExecutor-4] ...
- HW2018校招研发笔试编程题
1. 数字处理 题目描述:给出一个不多于5位的整数,进行反序处理,要求 (1)求出它是几位数 (2)分别输出每一个数字(空格隔开) (3)按逆序输出各位数字(仅数字间以空格间隔,负号与数字之间不需要间 ...
- HTTPS到底是个什么鬼?
HTTPS随处可见,那么它到底是个什么鬼?本文我们一起来探讨一下HTTPS为什么是安全的,以及HTTPS连接建立的过程. 一.HTTPS为什么是安全的? HTTP使用明文通信,可能会被第三方窃听.篡改 ...
- spring security 实践 + 源码分析
前言 本文将从示例.原理.应用3个方面介绍 spring data jpa. 以下分析基于spring boot 2.0 + spring 5.0.4版本源码 概述 Spring Security 是 ...
- mysql 开发进阶篇系列 27 数据库字符集设置
在安装完数据库后,使用汉字插入到表中,会报错,需要修改字符集类型,如下图所示: -- 插入汉字时报错 INSERT INTO User2 VALUES('张三') -- 查看字符集 SHOW VARI ...