详解Jmeter中的BeanShell脚本

news2024/9/20 18:51:23

BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法,所以它和java是可以无缝衔接的,学了Java的一些基本语法后,就可以来在Jmeter中写写BeanShell脚本了

在利用jmeter进行接口测试或者性能测试的时候,我们需要处理一些复杂的请求,此时就需要利用beanshell脚本了,BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法,所以它和java是可以无缝衔接的。beanshell由于内置了一些特有的变量,没法在一些集成代码工具上去调试。

学了Java的一些基本语法后,就可以来在Jmeter中写写BeanShell脚本了。

直接在线程组下创建一个BeanShell取样器,然后在脚本区写java代码:

在这里插入图片描述
写了个循环,执行后在这里看不到,要在jmeter.bat的windows批处理里看到:


JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互:

1、log:写入信息到jmeter.log文件,使用方法:log.info(“hahahahahahah”);

2、vars:操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:

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

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

添加日志查看:


使用vars:


在线程组2里面去访问vars变量,输出null,可见vars确实是个局部变量:


3、props:操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。

props的全局性:


4、prev:获取前面的sample返回的信息,常用方法:

a)getResponseDataAsString(): 获取响应信息;

b) getResponseCode(): 获取响应代码;

先发个接口请求,然后prev获取返回信息:


自定义函数:使用Java自定义函数来处理特定的逻辑,结合BeanShell的内置对象进行变量的存取,提高脚本的灵活性。

写了个自定义的静态函数,实现的是整数的累加:


发现报错,原来是函数的返回值是int类型的,而log.info()里面要的是String。这里把int类型的result转换为string有三种方法:
1、String.valueOf(result)

2、Integer.toString(result)

3、result+“”

任选一个即可。


引用外部java文件:在BeanShell中通过source(“代码路径”)方法引入Java文件,然后调用方法和java一样,new一个对象,通过

对象调用里面的方法。

写个静态方法,保存为Test.java文件,放在D盘下:


然后在BeanShell里引用Test.java,调用函数,传参100,日志输出:

引用外部jar包

首先打包:

1、把当前的Test作为运行文件,先运行一遍。


2、右键项目名–Export–Runnable JAR file.


3、在Launch找到运行文件,放到jmeter安装目录下lib/ext下。


4、在Jmeter的BeanShell里导包,调用方法。


这里我运行报错了,说方法找不到,摸索良久后尝试在测试计划里添加一下jar包,结果成功了。


到此这篇关于Jmeter中的BeanShell脚本的文章就介绍到这了


最后

如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!


以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

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

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

相关文章

Vue--》简易资金管理系统后台项目实战(前端)

今天开始使用 vue3 + ts + node 搭建一个简易资金管理系统的前后端分离项目,因为前后端分离所以会分两个专栏分别讲解前端与后端的实现,后端项目文章讲解可参考:后端链接,我会在前后端的两类专栏的最后一篇文章中会将项目代码开源到我的github上,大家可以自行去进行下载运…

C++多态(超级详细版)

目录 一、什么是多态 二、多态的定义及实现 1.多态构成条件 2.虚函数的重写和协变 虚函数重写的两个例外: 2.1协变 2.2析构函数的重写 (析构函数名统一处理成destructor) 3.重载、覆盖(重写)、隐藏(重定义)的对比 4.final 和 overr…

在本地模拟C/S,Socket套接字的使用

public class SocketTCP01Server {public static void main(String[] args) throws IOException {/**1.在本机的 9999 端口监听 ,等待连接细节: 要求在本机没有其他服务在监听999细节:这个ServerSocket 可以通过accept()返回多个Socket[多个客…

指针仪表读数YOLOV8NANO

指针仪表读数YOLOV8 NANO 采用YOLOV8 NANO训练,标记,然后判断角度,得出角度,可以通过角度,换算成数据

End-to-End Adversarial-Attention Network for Multi-Modal Clustering

方法 融合表征h f _f f​ ∑ v \sum_v ∑v​w v _v v​ h v h^v hv 辅助信息 作者未提供代码

2558. 从数量最多的堆取走礼物

2558. 从数量最多的堆取走礼物 难度: 简单 来源: 每日一题 2023.10.28 给你一个整数数组 gifts ,表示各堆礼物的数量。每一秒,你需要执行以下操作: 选择礼物数量最多的那一堆。如果不止一堆都符合礼物数量最多,从中选择任一…

Java工具库——Commons IO的50个常用方法

工具库介绍 Commons IO(Apache Commons IO)是一个广泛用于 Java 开发的开源工具库,由Apache软件基金会维护和支持。这个库旨在简化文件和流操作,提供了各种实用工具类和方法,以便更轻松地进行输入输出操作。以下是 Com…

基于51单片机的温度测量报警系统的设计与制作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、实习目的二、实习任务2.1 设计温度测量报警系统硬件电路2.2 温度测量报警系统软件编程、仿真与调试;2.3 完成温度测量报警系统的实物制作与调试…

【蓝桥每日一题]-前缀和与差分(保姆级教程 篇2)#差分序列

昨天讲的概念和模板,今天讲一个差分序列的好题(好好体会里面的优化思想): 目录 题目: 思路: 题目: 手动打出样例哈 输入: 输出: 4 …

Android问题笔记四十二:signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) 的解决方法

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

etcd的mvcc源码剖析

mvcc简介 悲观锁 在对于一些临界资源进行读写的时候,为了防止其他人进行同步的修改数据,直接将当前的数据锁住,不让别人使用,来实现并发安全 乐观锁 在对临界资源进行操作的时候,不锁住数据,实现独占&…

锐捷NBR 1300G路由器 越权CLI命令执行漏洞

执行查看版本的命令不需要其它权限, 访问url: /WEB_VMS/LEVEL15/构造payload数据包: POST /WEB_VMS/LEVEL15/ HTTP/1.1commandshow version&strurlexec%04&mode%02PRIV_EXEC&signnameRed-Giant.回显如下: 测试发现…

软件测试之单元测试

前言 为什么我们需要测试? 让产品可以快速迭代,同时还能保持高质量 对于一些相对稳定的系统级别页面,自动化测试在提高测试的效率的方面起到非常重要的作用。前端的自动化测试主要包括:浏览器测试和单元测试。Vue官方脚手架自带…

Linux系统之watch命令的基本使用

Linux系统之watch命令的基本使用 一、watch命令介绍二、watch命令的使用帮助2.1 watch命令的help帮助2.2 watch命令的语法解释 三、watch命令的基本使用3.1 使用默认的2秒时间间隔执行ls命令3.2 每隔10秒执行一次ps命令3.3 每隔1秒输出一次磁盘使用情况3.4 高亮显示grep命令的输…

File 复制文件

一.代码 package org.example;import java.io.*;public class day05 {public static void main(String[] args) throws IOException {//复制图片//创建字节输入流管道与源文件接通final FileInputStream is new FileInputStream("D:\\temp\\day05\\图2.jpg");//创建…

软考高项-计算题(2)

题4 项目的总预算是包含管理储备的,所以总预算应该是:13238102*360 ETC(BAC-EV)/CPI BAC60 EV60*0.318 CPI18/200.9 ETC42/0.9 答案选择C A 题5 因为题目中提到了“按目前的状况继续发展”,那么是:ETC(BAC-EV)/CPI EV1230*0…

计算机网络基础二

课程目标 了解 OSI 七层模型分层结构 了解 TCP/IP 协议簇四层模型分层结构 能够说出 TCP/IP 协议簇中 运输层、网络层和数据链路 层常见的 相关协议 能够说出 TCP/IP 的三次握手四次断开过程 了解 Vmware 的三种网络模式 能够使用客户端工具连接虚拟机 掌握主机名、 DNS…

java原子类-Atomic

什么是原子类? java 1.5引进原子类,具体在java.util.concurrent.atomic包下,atomic包里面一共提供了13个类,分为4种类型,分别是: 原子更新基本类型,原子更新数组,原子更新引用&…

Redis(06)| 数据结构-整数集合

整数集合是 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素,并且元素数量不大时,就会使用整数集这个数据结构作为底层实现。 整数集合结构设计 整数集合本质上是一块连续内存空间,它的结构定义如下: typedef struct…

【黑马程序员】Springboot2 学习笔记

课程地址 1. Springboot parent和starter区别 parent:开发Springboot项目需要继承spring-boot-starter-parent,其中定义了若干个依赖管理(坐标版本号),避免依赖版本冲突;starter:开发Springboo…