Jmeter-Beanshell取样器中引入自制的java脚本(jar java class)-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1、内置变量log写入信息到jmeter.log使用方法

log.info(“hello,world”)也可以在jmetergui上看到打印的信息。

 2、设置Jmeter变量的值将定义的变量或提取的变量做修改后再进行传参

Vars:操作jmeter变量这个变量实际上引用了Jmeter线程中的局部变量容器本质是map测试用例可以通过它获取到变量的值使用方法

①vars.get(Stringkey)从jmeter中获得变量值

②vars.put(Stringkey,Stringvalue)数据存到jmeter变量中

3、props该变量引用jmeter的配置信息可以获取jmeter的属性用法如下

①props.get(Stringkey)获取jmeter.properties中的属性值

②props.put(Stringkey,Stringvalue)设置jmeter.properties中的属性值

 4、prev对应SampleResult获取前面Sampler返回的信息常用方法

①getResponseDataAsString()获取响应正文

②getResponseCode()获取响应Code

③getResponseMessage()获取响应信息

 使用场景

①beanshell一般可以处理数据加解密

②根据上一个请求的返回值不同设置不同的参数给下面的请求

③jmeter虽然支持协议丰富但还是可能会出现不支持的此时可以用beanshell

5、BeanShell中如何编写脚本

①直接编写代码

②调用外部的Java源码实现

 注意事项

1.class_path可以不是绝对上级路径只需要包含.class文件即可如/Users/liuqingjun/workspace/T139/

2.class_path一般不能包含包名对应的目录路径如/Users/liuqingjun/workspace/T139/bin/com/test否则可能会报错Errorinvokingbshmethod:evalCreateFile(wrongname:***/***)
遇到的问题:

1. error invoking bash method:eve(wrong name:/)  至今未解决

tips:

BeanShell中再编写Java代码时对分号";"有着强要求代码写完必须以分号结束才开始写第二句代码否则会报错


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

BeanShell是一种松散类型的脚本语言

BeanShell是用Java写成的一个小型的、免费的、可以下载、嵌入式的 Java源代码解释器具有对象脚本的特性

BeanShell可以执行标准Java语句和表达式以及另外自身的一些脚本命令 和语法。

Jmeter中的BeanShell组件
定时器BeanShell Timer
前置处理器BeanShell PreProcessor
采样器BeanShell Sampler
后置处理器BeanShell PostProcessor
断言BeanShell Assert
监听器BeanShell Listener

BeanShell常用内置变量
log写入信息到jmeter.log使用方法log.info(“hello,world”)也可以在 jmeter gui上看到打印的信息。

注意如果想在jmeter工具中看到打印的日志点击jmeter——选项——日志查看

示例

vars操作jmeter变量这个变量实际上引用了Jmeter线程中的局部变量容器 本质是map测试用例可以通过它获取到变量的值

1、vars.get(String key)从jmeter中获得变量值

示例

2、vars.put(String key, String value)数据存到jmeter变量中

示例

props该变量引用jmeter的配置信息可以获取jmeter的属性jmeter属性为全局变量用法如下
1、props.get(String key) 获取jmeter.properties中的属性值

2、props.put(String key, String value) 设置jmeter.properties中的属性值不常用且没必要因为不会实际调整文件内的值

prev对应SampleResult获取前面Sampler返回的信息常用方法
1、getResponseDataAsString()获取响应信息
2、getResponseCode()获取响应Code
3、getResponseMessage()获取响应信息

示例

BeanShell 调用java源码
方式一、通过 beanshell sampler 直接执行 Java 编码
示例

 方法二引入外部 Java 源码文件
外部java文件内容如下

beanshell引入代码如下

 方法三引入外部class文件


注意事项
1、class_path可以不是绝对上级路径只需要包含.class文件即可
如 /Users/xiaoming/workspace/demo139/
2、class_path一般不能包含包名对应的目录路径
如 /Users/xiaoming/workspace/demo139/bin/com/test
否则可能会报错
Error invoking bsh method: eval CreateFile (wrong name: ***/***)

方法四引入外部jar包推荐常用
1、在eclipse\IDEA中把所需的java文件打包成jar文件比如Calc.jar
2、方式一把Calc.jar文件放置到JMeter安装目录->lib目录下
   方式二在测试计划界面的添加目录或jar包到classpath处点击浏览找到对应的jar包加载进去
4、直接在beanshell中导入应用即可如果执行错误把jmeter重启一下

方式一的示图

 方式二的示图

beanshell企业实战
备注在上一家公司的经历一个web网站密码进行加密传输通过和开发沟通了解到密码是通过MD5加密的开发人员对密码加密的逻辑是MD5加密后的字符串的前后各加三个任意字符后台只对前后三个任意字符的中间字符串进行解密来达到密码加密的逻辑所以遇到密码加密的情况需要和开发沟通了解加密的逻辑是怎么样的才能做接口自动化测试或者偷懒的方式通过手动登录获取token把token放到header里面

1、从开发处获取jar包,先在eclipse中使用jar包检查每一个小功能(咨询开发·加解密函数名称以及如何传参)。

非对称加密的jar包地址文章末尾安排

2、把jar包导入到jmeter一般通过测试计划导入jar包

3、导入jar包后在beanshell中编写代码测试是否可以把图中的"123456"进行加密;

 4、查看日志日志中指定的值进行的加密说明代码测试成功

5、在beanshell中一般使用: 调用jar包时一般和 vars.getvars.put结合使用在下面的请求中·使用$变量名1}${变量名2}

 通过察看结果树中的调试取样器可看到加密后的值如下图

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shellJava