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

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.get,vars.put结合使用,在下面的请求中·使用$变量名1},${变量名2}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147309.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Django】4 Django模型

每个模型是一个Python 类,集成django.db.models.Modle类 该模型的每个属性表示一个数据库表字段 通过API 自动生成数据库访问 .../sign/modles.py 文件,通过模型完成表创建。 TypeError: ForeignKey.__init__() missing 1 required positional argumen…

【算法训练-贪心算法】一 买卖股票的最佳时机II

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【贪心算法】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…

【小沐学前端】Node.js实现基于Protobuf协议的UDP通信(UDP/TCP)

文章目录 1、简介1.1 node1.2 Protobuf 2、下载和安装2.1 node2.2 Protobuf2.2.1 安装2.2.2 工具 3、node 代码示例3.1 HTTP3.2 UDP单播3.4 UDP广播 4、Protobuf 代码示例4.1 例子: awesome.proto4.1.1 加载.proto文件方式4.1.2 加载.json文件方式4.1.3 加载.js文件方式 4.2 例…

idea Springboot在线商城系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 在线商城系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有 完整的源代码和数据库&…

多目标平衡优化器黏菌算法(MOEOSMA)求解CEC2020多模式多目标优化

多目标平衡优化器黏菌算法(MOEOSMA)比现有的多目标黏菌算法具有更好的优化性能。在MOEOSMA中,动态系数用于调整勘探和开采趋势。采用精英存档机制来促进算法的收敛性。使用拥挤距离法来保持Pareto前沿的分布。采用平衡池策略模拟黏菌的协同觅…

Redis持久化、主从与哨兵架构详解

文章目录 一、RDB、AOF及混合持久化详解RDB快照(snapshot)bgsave的写时复制(COW)机制save与bgsave对比: AOF(append-only file)AOF重写 RDB 和 AOF ,我应该用哪一个?Redis 4.0 混合持久化 二、R…

IDEA的使用

文章目录 1.IDEA配置1.1 idea界面说明1.2 git1.3 JDK1.4 maven1.5 Tomcat1.6 idea设置编码格式1.7 vscodenodejs1.8 windows下安装redis 2. IDEA问题2.1 setAttribute方法爆红2.2 idea cannot download sources解决办法2.3 springboot项目跑起来不停run 3. vscode3.1 vscode显示…

springcloud:四、nacos介绍+启动+服务分级存储模型/集群+NacosRule负载均衡

nacos介绍 nacos是阿里巴巴提供的SpringCloud的一个组件,算是eureka的替代品。 nacos启动 安装过程这里不再赘述,相关安装或启动的问题可以见我的另一篇博客: http://t.csdn.cn/tcQ76 单价模式启动命令:进入bin目录&#xff0…

Ant-Design-Vue:a-range-picker组件国际化配置

在使用Ant-Design-Vue中的时间范围选择器开发个人项目时,发现默认显示为英文。如何解决呢? date-picker分类 Antd-Vue提供了DatePicker、MonthPicker、RangePicker、WeekPicker 几种类型的时间选择器,分别用于选择日期、月份、日期范围、周范…

win10系统任务栏图标变成白色的解决办法

我平时都是用滴答清单进行管理这个自己的日程代办的,但是今天打开的时候发现这个快捷方式突然变成纯白色的了,重启电脑之后,这个图标的样式仍然没有变化。上网查找解决办法之后,终于搞好了,于是就有了下面的教程。 为什…

Android studio “Layout Inspector“工具在Android14 userdebug设备无法正常使用

背景描述 做rom开发的都知道,“Layout Inspector”和“Attach Debugger to Android Process”是studio里很好用的工具,可以用来查看布局、调试系统进程(比如setting、launcher、systemui)。 问题描述 最进刚开始一个Android 14…

(Note)机器学习面试题

机器学习 1.两位同事从上海出发前往深圳出差,他们在不同时间出发,搭乘的交通工具也不同,能准确描述两者“上海到深圳”距离差别的是: A.欧式距离 B.余弦距离 C.曼哈顿距离 D.切比雪夫距离 S:D 1. 欧几里得距离 计算公式&#x…

机器学习之SGD, Batch, and Mini Batch的简单介绍

文章目录 总述SGD(Stochastic Gradient Descent)(随机梯度下降)Batch (批量)mini Batch (迷你批量) 总述 SGD, Batch, and Mini Batch是可用于神经网络的监督学习计算权重更新的方案,即∆wij。 SGD(Stochastic Gradi…

【STM32】IAP升级03关闭总中断,检测栈顶指针

IAP升级方法 IAP升级时需要关闭总中断 TM32在使用时有时需要禁用全局中断,比如MCU在升级过程中需禁用外部中断,防止升级过程中外部中断触发导致升级失败。 ARM MDK中提供了如下两个接口来禁用和开启总中断: __disable_irq(); // 关闭总中…

emacs怎么安装插件

2023年9月26日,周二下午 不得不说,emacs安装插件确实要比vim要方便 虽然我曾经说过要只用vim,但vim安装插件起来太麻烦了 目录 Linux下Emacs的配置文件位置包管理器elpa怎么给elpa换源罗列可安装的插件怎么搜索插件怎么安装插件配置插件 L…

什么是FOSS

FOSS 是指 自由和开放源码软件(Free and Open Source Software)。这并不意味着软件是免费的。它意味着软件的源代码是开放的,任何人都可以自由使用、研究和修改代码。这个原则允许人们像一个社区一样为软件的开发和改进做出贡献。

CentOS密码重置

背景: 我有一个CentOS虚拟机,但是密码忘记了,偶尔记起可以重置密码,于是今天尝试记录一下,又因为我最近记性比较差,所以必须要记录一下。 过程: 1、在引导菜单界面(grub&#xff…

如何实现电脑语音输入功能?

现在的手机都具备语音输入功能,并且识别率非常高,语音输入是目前最快速的文字输入方式,但是电脑上却无语音输入的功能,那么如何实现在电脑端也可进行语音输入的梦想呢?现在介绍一款小工具“书剑电脑语音输入法”&#…

java并发编程 守护线程 用户线程 main

经常使用线程,没有对守护线程和用户线程的区别做彻底了解 下面写4个例子来验证一下 源码如下 /* Whether or not the thread is a daemon thread. */ private boolean daemon false;/*** Marks this thread as either a {linkplain #isDaemon daemon} thread*…

Python|OpenCV-如何给目标图像添加边框(7)

前言 本文是该专栏的第7篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在使用opencv处理图像的时候,会不可避免的对图像的一些具体区域进行一些操作。比如说,想要给目标图像创建一个围绕图像的边框。简单的来说,就是在图片的周围再填充一个粗线框。具体效果,…