Jmeter之BeanShell使用(全网最详细的介绍)-第九天

news2024/9/29 5:26:01

一.什么是BeanShell

  • Java写成的⼩型、免费的Java源代码解释器
  • 可以执⾏标准Java语句和表达式,完全符合java语法的java脚本语⾔(需要会javase语⾔)
  • 包括⼀些脚本命令,有⾃⼰的⼀些语法和⽅法,是⼀种松散类型的脚本语⾔(这点和JS类似)
  • ⽤于⼀些复杂的个性化需求,使⽤更灵活,功能更强⼤
  • 官⽹地址:http://www.beanshell.org

二.常用的BeanShell


Jmeter中包含如下BeanShell:
定时器:BeanShell Timer
前置处理器:BeanShell PreProcessor(提前对参数处理⽐如加密编码)
采样器:BeanShell 取样器
后置处理器:BeanShell 后置处理程序(对返回结果做处理)
断言:BeanShell断言(验证请求接⼝是否满⾜要求)
监听器:BeanShell监听器

 三.BeanShell内置对象,可以直接使⽤



3.1log

  • 作用:用于日志记录
  • 示例:

创建线程组-创建BeanShell取样器-编写脚本

打开日志(用于调试脚本)

 运行结果

 3.2vars

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

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

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

例:vars.get("title");从jmeter中获得变量值

vars.put("title","javase课程");数据存到jmeter变量中

3.3props

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

3.4prev

prev:获取前面的sample返回的信息

prev的常用方法:

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

b) getResponseCode() :获取响应code

四.实际运用场景

4.1项目环境准备

请先装好jdk和jmeter

windows环境可参考ant+jmeter+jenkins从0实现持续集成(包含jdk的安装教程)(Windows)-CSDN博客

linux环境可参考

Linux下安装jdk,jmeter,ant,tomcat,jenkins(超详细超全)_linux 安装ant-CSDN博客

4.2运行代码

我们这边提供了后端程序,直接本地启动运⾏即可

本人在windows下运行进行演示

如有需要上图的文件,可自行在资源中下载或者私信我!!!

 后端接⼝说明,端⼝8080

接⼝介绍接⼝路径参数和备注method
商品列表/api/v1/product/list不⽤参数get
登录接⼝/api/v1/user/login{"mail":"794666918@qq.com","pwd":"123456"}post
⽤户信息/api/v1/user/info需要登录,http的header⾥⾯加⼊token字段get
秒杀接⼝/api/v1/product/second_kill不⽤参数,⽤于测试接⼝耗时情况get
商品详情/api/v1/product/detail⽤于可变参数压测,参数:id和title

get

秒杀接口的代码讲解

注意:

  • 登录账号密码,程序⾥⾯只提供⼀个,所以需要按照上⾯进⾏操作
  • 常规就是get、post压测,1个接⼝到100个接⼝都类似
  • java -jar xdclass-edu.jar启动不能关闭,是运⾏程序

命令⾏进⼊程序所在路径启动(win、mac、linux命令自⾏参考下)

java -jar xdclass-edu.jar

运行代码

 

 想停止代码运行的话,可ctrl+c

验证代码是否运行成功,访问商品列表接口

4.3Http取样器和BeanShell组合应⽤实战

BeanShell取样器⾥⾯定义变量var

定义Http取样器(用商品详情接口)

读取var变量

引用变量的格式:

${id}、${title}

运行结果

 脚本如有需要,可在资源中自行下载

4.4BeanShell断⾔实战

需求

根据业务结果,⾃定义响应断⾔

步骤

新增BeanShell断⾔

核⼼变量

String data = prev.getResponseDataAsString();//获取响应信息

prev.getResponseCode(); //获取响应code

Failure = false;//表示断⾔成功

Failure = true;//表示断⾔失败

使⽤JSON⼯具jar包放⼊jmeter⽬录下的\lib\ext中(记得重启jmeter)

更多api参考https://stleary.github.io/JSON-java/org/json/JSONObject.html

import org.json.*;//导入json工具包
String data = prev.getResponseDataAsString();//获取响应信息
String responseCode = prev.getResponseCode();//获取http响应码
log.info("data="+data);//data是字符串类型,你要转成json类型
log.info("responseCode="+responseCode);//responseCode也是字符串类型
JSONObject jsonobj = new JSONObject(data);//转json对象

log.info(jsonobj.toString());

打开日志(选项-日志查看),查看BeanShell断言打印出来的内容 

 http请求

BeanShell 预处理程序

 BeanShell断言

运行结果

 

注意:如果想模拟断言失败的情况,把BeanShell断言的条件改为 code==1

再运行,就会报错

运行结果

4.5BeanShell使⽤外部Java⽂件实战

需求

  • 常规beanshell⾥⾯写代码,适合简单的逻辑
  • ⼯作⾥⾯还会⽤到更多⽅法逻辑,需要在idea编辑器⾥⾯写(语法有提示),然后进⾏调⽤
  • ⽅式
  1. jar包:放到的lib⽬录或ext⽬录下,前⾯演示过json⼯具类操作
  2. java⽂件

步骤

  • 使⽤source加载源码,路径可以是绝对路径和相对路径
  • 加载源⽂件后可以直接使⽤类名.⽅法名(参数) 

实战

CommonUtil.java文件内容

新建BeanShell取样器

source("E:\\愤怒吧小鸟\\小滴课堂\\6章-第6小节\\CommonUtil.java");
String randomCode=CommonUtil.getRandomCode(4);//调用外部CommonUtil.java的类和方法
log.info("randomCode="+randomCode);
String uuid = CommonUtil.generateUUID();
log.info("uuid====="+uuid);

点击运行,查看日志(选项-查看日志)

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

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

相关文章

静电消除器的产品功能介绍

省维护:超高等级 冲击波可引起空间隔断,从而将外部空气的进入降至最低。与以往的针尖保护构造相比,通过形成绝对的空气屏障,实现了低流量且惊人的省维护性能。 大范围消除静电 配备了 Hi-Power I.C.C. 系统,除了可根据…

普通话水平测试证书真的有用吗?

对于部分考生而言报名普通话水平测试只是随大流,看周围同学都考了,自己也来报名。还有一些呢是看到博主总结哪些证好考有用,先拿下再说但是并不知道具体有什么用。那么,普通话水平测试证书,究竟能为我们带来什么呢&…

MyBatis Generator 代码生成器数据库表新增字段,不覆盖原文件

1.数据库窜库&#xff0c;配置了覆盖插件他会找其他库中同名的表 修改数据库链接 添加 &amp;nullCatalogMeansCurrenttrue <!-- 配置数据源&#xff0c;需要根据自己的项目修改 --><jdbcConnection driverClass"com.mysql.cj.jdbc.Driver"connect…

钡铼技术防水分线盒M12双通道4路DIN智能建筑自动化

钡铼技术的DB系列4路M12双通道预铸线缆分线盒是专为智能建筑自动化和工业自动化设备设计的先进解决方案。其工业级设计和耐酸碱腐蚀材料壳体&#xff0c;使其能够在恶劣环境下稳定运行&#xff0c;并且具备IP67和IP69K防护等级&#xff0c;保证了在高压高温水流清洗条件下的可靠…

python学习自制彩色,自定义格式日志打印制作LLoghelper

python学习自制彩色&#xff0c;自定义格式日志打印LLoghelper python print(xxx) 打印出来只显示白色黑底&#xff0c;没有时间&#xff0c;路径&#xff0c;不同的控制台颜色&#xff0c;对一个没有错误崩溃的python项目来说这样调试起一些逻辑非常不方便 目标&#xff1a; …

下载mmcv或者mmcv-full第三方库失败(已解决)

一、问题描述 首先跑yolov8改进的时候要下载mmcv-full&#xff0c;直接在环境里pip install一直失败&#xff0c;或者下载了之后运行代码说不存在程序啥的&#xff0c;也是没下对的意思。 mmcv或者说mmcv-full第三方库下载的版本是有要求的&#xff0c;要和自己的pytorch版本对…

解决maven java.rmi.ConnectException: Connection refused to host: 127.0.0.1 错误

highlight: gruvbox-dark theme: cyanosis 你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;…

2.2 Python变量与数据类型

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

好用到哭的翻译工具,百度翻译领衔,2024新宠来袭!

在全球化的浪潮中&#xff0c;语言障碍已经越来越不是问题了&#xff0c;翻译工具就像是我们的文化差异跨越助手。今天&#xff0c;我们就来聊聊几款翻译界的佼佼者&#xff0c;它们各有千秋&#xff0c;让我们的多语言之旅变得更加轻松。百度翻译算是其中的佼佼者&#xff0c;…

【机器学习】BP神经网络正向计算

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 BP神经网络正向计算1. 引言2. BP神经网络结构回顾3. 正向计算的基本原理4. 数学…

微信小程序通过code换取手机号

一、调用小程序验证组件&#xff0c;这两个组件都是可以文档地址。 二、首先还是得先拿到code &#xff08;1&#xff09;、必须在手机端去执行&#xff0c;开发者工具获取不到code。解决办法&#xff1a;将拿到的code在页面上渲染出来在复制一下就好了。 &#xff08;2&#…

文件上传漏洞(一,漏洞简介及简单利用)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 一&#xff0c;文件上传漏洞简介。 1&#xff0c;什么是文件上传漏洞。 文件上传漏洞&#xff0c;是指web应用允许用户上传诸如&#xff1a;木马&#xff0c;病毒&#xff0c;执行…

红酒与北美烧烤:自由的味蕾之旅

在繁星点点的夜空下&#xff0c;一场红酒与北美烧烤的盛宴悄然展开。这不是简单的味觉碰撞&#xff0c;而是一场自由的味蕾之旅&#xff0c;洒派红酒&#xff08;Bold & Generous&#xff09;与北美烧烤的结合&#xff0c;如同诗与远方的交汇&#xff0c;温柔而引人入胜。 …

产品经理-​如何做需求的优先级排序和版本规划(30)

如何做需求的优先级排序&#xff1f;如何做产品的版本规划&#xff1f;思考逻辑是什么&#xff1f; 需求优先级分析、产品版本规划 需求的分析和管理是产品经理的最核心技能&#xff0c;没有之一 作为一名产品经理&#xff0c;工作的产出物就是需求文档&#xff0c;在整个需求文…

制造知识普及(八)--企业内部物料编码(IPN)与制造商物料编码(MPN)

1、什么是物料编码 通常情况下&#xff0c;物料编码分两种&#xff0c;一种是企业内部物料编码&#xff08;IPN&#xff09;&#xff0c;由于在企业研发制造和生产中确认物料唯一性的&#xff0c;用于承载设计参数要求和技术要求。另一种是制造商物料编码&#xff08;MPN&…

【扒代码】ope.py

文件目录&#xff1a; 引用方式 if not self.zero_shot: # 非零样本情况下&#xff0c;计算边界框的宽度和高度 box_hw torch.zeros(bboxes.size(0), bboxes.size(1), 2).to(bboxes.device) box_hw[:, :, 0] bboxes[:, :, 2] - bboxes[:, :, 0] # 宽度 box_hw[:, :, 1] bbox…

html+css 实现hover中间展开背景

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目…

kickstart自动安装脚本制作并搭建pxe网络环境

目录 准备工作&#xff1a; 安装图形化kickstart自动安装脚本的工具 安装httpd 搭建DHCP服务 搭建pxe网络安装环境&#xff0c;实现服务器自动部署 pxe原理&#xff1a; 安装所需软件包 测试&#xff1a; 准备工作&#xff1a; 1、准备一台rhel7的主机,并开启主机的图形。 …

关于Git使用不成功的问题解决方案记录

关于Git使用不成功的问题解决方案记录 前言代理连接不成功总结 前言 项目中建立了Git小仓库&#xff0c;但是在使用中出现了无法push新的代码&#xff0c;显示端口出现问题&#xff0c;发现网站和端口都没有问题&#xff0c;可以打开网站。但是还是连接失败&#xff0c;无法下…

快速打造艺术作品,AI绘画软件超神奇

越来越多的人开始尝试使用人工智能技术来创作艺术作品。而其中最受欢迎的一种方式就是使用AI绘画软件。 AI绘画软件是一种能够帮助用户快速生成高质量的艺术作品的工具。它可以根据用户的输入&#xff0c;自动创建出各种风格各异的作品&#xff0c;如卡通人物、风景画等。 Aic…