当前位置: 首页 > news >正文

详解Jmeter中的BeanShell脚本

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,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

相关文章:

详解Jmeter中的BeanShell脚本

BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法,所以它和java是可以无缝衔接的,学了Java的一些基本语法后,就可以来在Jmeter中写写BeanShell脚本了 在利用jmeter进行接口测试或者性能测试的时候&#xff0c…...

前端和后端 优化

1.前端资源优化 1.1 html结构优化 保证简洁、清晰的html结构,减少或避免多余的html标签 使用HTML5的web语义化标签,结构清晰且利于seo css文件在head中引入,js文件放在body底部引入,这样做可以防止阻塞。另外如果有需要提前加载的…...

C++编译与运行:其二、编译期和运行期的区别

C的编译分为四步&#xff0c;最终生成一个可执行文件。 C的运行&#xff0c;就是将可执行文件交给操作系统&#xff0c;按照机器码逐步执行&#xff0c;运行功能。 先看一个非常非常有趣的例子&#xff1a; class Father{ public:virtual void f(){cout<<"I am fat…...

汽车电子专有名词与相应技术

1.EEA &#xff08;Electronic & Electrical Architecture 电子电气架构&#xff09; EEA在宏观上概括为物理架构与逻辑架构的结合&#xff0c;微观上通过众多电子元器件的协同配合&#xff0c;或集成式或分布式的系统级电子电气架构&#xff0c;具体详见专栏 新能源汽车电…...

idea 没加载 provided的包

目录 前言解决方案 前言 我的版本是IntelliJ IDEA 2022.1.4 (Community Edition)&#xff0c;本地调试不知道为什么不加载provided的包。后来找到这篇文章https://youtrack.jetbrains.com/issue/IDEA-107048才知道这是个bug。不知道其他版本会不会出现这种问题。 解决方案 我…...

Hover:借贷新势力崛起,在经验与创新中找寻平衡

复苏中的Cosmos 如果让我选择一个最我感到可惜的区块链项目&#xff0c;我会选择Cosmos。 Cosmos最早提出并推动万链互联的概念&#xff0c;希望打通不同链之间的孤岛&#xff0c;彼时和另一个天王项目Polkadot号称跨链双雄。其跨链技术允许不同的区块链网络互相通信&#xf…...

软件设计原则-依赖倒置原则讲解以及代码示例

依赖倒置原则 一&#xff0c;介绍 1.前言 依赖倒置原则&#xff08;Dependency Inversion Principle&#xff0c;DIP&#xff09;是面向对象设计中的一个重要原则&#xff0c;由Robert C. Martin提出。 依赖倒置原则的核心思想是&#xff1a;高层模块不应该依赖于低层模块&…...

Linux--进程替换

1.什么是进程替换 在fork函数之后&#xff0c;父子进程各自执行代码的一部分&#xff0c;但是如果子进程想要执行一份全新的程序呢&#xff1f; 通过进程替换来完成&#xff0c;进程替换就是父子进程代码发生写时拷贝&#xff0c;子进程执行自己的功能。 程序替换就是通过特定的…...

【计算机网络】TCP协议

文章目录 1. TCP报文的结构2. TCP的发送缓冲区和接收缓冲区3. 确保可靠性序列号和确认序列号确认应答超时重传连接管理1️⃣三次握手建立连接2️⃣四次挥手断开连接 4. 提高性能流量控制滑动窗口拥塞控制延迟应答捎带应答 5. 面向字节流6. TCP/UDP对比 概念&#xff1a;TCP&…...

机器学习数据集:Kaggle

什么是Kaggle&#xff1f; Kaggle成立于2010年&#xff0c;是一个进行数据发掘和预测竞赛的在线平台。从公司的角度来讲&#xff0c;可以提供一些数据&#xff0c;进而提出一个实际需要解决的问题&#xff1b;从参赛者的角度来讲&#xff0c;他们将组队参与项目&#xff0c;针…...

软考 系统架构设计师系列知识点之设计模式(4)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之设计模式&#xff08;3&#xff09; 所属章节&#xff1a; 老版&#xff08;第一版&#xff09;教材 第7章. 设计模式 第2节. 设计模式实例 3. 行为型模式 行为型模式可以影响一个系统的状态和行为流。通过优化状态…...

PyCharm 安装 cx_Oracle 失败

我在PyCharm的终端用 pip安装cx_Oracle失败&#xff0c;报错情况如下&#xff1a; ERROR: Could not build wheels for cx_Oracle, which is required to install pyproject.toml-based projects 出错原因&#xff1a; python 的版本太高了&#xff0c;我的是3.11版本的&…...

解决Windows出现找不到mfcm90u.dll无法打开软件程序的方法

今天&#xff0c;我非常荣幸能够在这里与大家分享关于mfc90u.dll丢失的5种解决方法。在我们日常使用电脑的过程中&#xff0c;可能会遇到一些软件或系统错误&#xff0c;其中之一就是mfc90u.dll丢失。那么&#xff0c;mfc90u.dll究竟是什么文件呢&#xff1f;接下来&#xff0c…...

如何设计线程安全的 HashMap?

如何设计线程安全的 HashMap? HashMap 线程不安全的体现&#xff1a; 多线程下扩容死循环&#xff1a;JDK1.7中的 HashMap 使用头插法插入元素&#xff0c;在多线程的环境下&#xff0c;扩容的时候有可能导致环形链表的出现&#xff0c;形成死循环。因此&#xff0c;JDK1.8使…...

rpc汇总

1、什么是rpc rpc的应用&#xff0c;有哪些 Google 开源了 gRPC&#xff0c; Facebook 开源了 Thrift&#xff0c; Twitter 开源了 Finagle&#xff0c; 百度开源了bRPC&#xff0c; 腾讯开源了 Tars&#xff0c; 阿里开源了 Dubbo 和 HSF&#xff0c; 新浪开源了 Motan 等 gr…...

OpenCV学习(五)——图像基本操作(访问图像像素值、图像属性、感兴趣区域ROI和图像边框)

图像基本操作 5. 图像基本操作5.1 访问像素值并修改5.2 访问图像属性5.2 图像感兴趣区域ROI5.3 拆分和合并图像通道5.4 为图像设置边框&#xff08;填充&#xff09; 5. 图像基本操作 访问像素值并修改访问图像属性设置感兴趣区域&#xff08;ROI&#xff09;分割和合并图像 …...

指针仪表读数YOLOV8NANO

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

10000字!图解机器学习特征工程

文章目录 引言特征工程1.特征类型1.1 结构化 vs 非结构化数据1.2 定量 vs 定性数据 2.数据清洗2.1 数据对齐2.2 缺失值处理 原文链接&#xff1a;https://www.showmeai.tech/article-detail/208 作者&#xff1a;showmeAI 引言 上图为大家熟悉的机器学习建模流程图&#xff0c;…...

Java 官方提供了哪几种线程池,分别有什么特点?

JDK 中提供了 5 中不同线程池的创建方式&#xff1a; newCachedThreadPool newCachedThreadPool&#xff0c; 是一种可以缓存的线程池&#xff0c;它可以用来处理大量短期的突发流量。 它的特点有三个&#xff0c;最大线程数是 Integer.MaxValue&#xff0c;线程存活时间是 60 …...

DTI-ALPS处理笔记

DTI-ALPS处理笔记 前言: 前段时间刚好学习了一下DTI-ALPS处理(diffusion tensor image analysis along the perivascular space ),记录一下,以便后续学习。ALPS是2017年发表在《Japanese Journal of Radiology》的一篇文章首次提出的 (文章地址),主要用于无创评估脑内淋…...

初创公司如何借助Taotoken低成本启动AI产品开发

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创公司如何借助Taotoken低成本启动AI产品开发 对于初创公司而言&#xff0c;在资源有限的情况下启动AI产品开发&#xff0c;面临…...

ALMA评审系统:基于分层规则与LDA的专家精准匹配工程实践

1. 项目概述&#xff1a;当评审专家遇上“千人千面”的提案在科研项目管理&#xff0c;尤其是大型天文观测设施如ALMA&#xff08;阿塔卡马大型毫米/亚毫米波阵列&#xff09;的提案评审中&#xff0c;一个核心的工程难题是如何把一份探讨“原行星盘尘埃动力学”的提案&#xf…...

【避坑指南】Midscene.js 常见报错解析:Timeout、模型幻觉与跨域问题的终极解法

开篇:当AI自动化“翻车”时,你在想什么? 凌晨两点,你的CI/CD流水线又红了。点开日志一看——TimeoutError: AI model request timed out。改了timeout参数重新跑,这次倒是没超时,但AI模型信誓旦旦地点了一个根本不存在的按钮。第三次,脚本直接抛出403,提示跨域被拦截。…...

告别黄牛票:用DamaiHelper脚本轻松抢到大麦网演唱会门票

告别黄牛票&#xff1a;用DamaiHelper脚本轻松抢到大麦网演唱会门票 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还在为抢不到心仪的演唱会门票而烦恼吗&#xff1f;面对秒光的票源和黄牛的高…...

Poppins字体:终极多语言开源字体解决方案,9种字重+天城文支持

Poppins字体&#xff1a;终极多语言开源字体解决方案&#xff0c;9种字重天城文支持 【免费下载链接】Poppins Poppins, a Devanagari Latin family for Google Fonts. 项目地址: https://gitcode.com/gh_mirrors/po/Poppins 还在为多语言项目寻找完美的字体解决方案吗…...

零起点Python机器学习快速入门【1.0】

第 1 章 从阿尔法狗开始说起1.1 阿尔法狗的前世今生百度百科的“阿尔法狗”词条是&#xff1a;阿尔法狗&#xff08; AlphaGo&#xff09;是一款围棋人工智能程序&#xff0c;由谷歌&#xff08; Google&#xff09;旗下 DeepMind 公司的戴密斯哈萨比斯、大卫席尔瓦、黄士杰与他…...

科学机器学习:从隐式动力学到时空算子学习的模型构建与实践

1. 科学机器学习中的模型构建&#xff1a;从数据到物理规律的桥梁在工程与科学计算的深水区&#xff0c;我们常常面对一类“熟悉的陌生人”&#xff1a;系统的物理规律在宏观上已被方程描述&#xff0c;但微观机理复杂、参数未知&#xff0c;或者直接求解的计算成本高到令人望而…...

PDF阅读器安全风险与漏洞分析方法论

我不能按照您的要求生成关于“CVE-2026-23512 SumatraPDF 漏洞”的博文内容。原因如下&#xff1a;该漏洞编号不存在于任何权威安全数据库中。截至当前&#xff08;2024年&#xff09;&#xff0c;NVD&#xff08;美国国家漏洞库&#xff09;、CNNVD&#xff08;中国国家漏洞库…...

别再猜了!用blkid命令一键定位U盘盘符,搞定CentOS7安装时的dracut timeout报错

精准定位U盘盘符&#xff1a;blkid命令在CentOS7安装中的高阶应用当你在多硬盘服务器上安装CentOS7系统时&#xff0c;是否曾被dracut timeout报错困扰&#xff1f;这个看似简单的安装问题背后&#xff0c;隐藏着一个关键的技术细节——如何准确识别U盘盘符。本文将带你深入探索…...

电信数智版Wireshark 3.7.1:深度支持TLCP与国密算法的协议分析利器

1. 为什么国密协议分析不能只靠“标准Wireshark”——从一次TLCP握手失败说起去年底帮某政务云平台做等保三级复测时&#xff0c;客户网络里跑着一套自研的国密SSL网关&#xff0c;所有前端HTTPS流量都经它转换为TLCP协议&#xff08;Transport Layer Cryptography Protocol&am…...