首页 > 系统相关 >JMeter前置处理器-Beanshell前置处理器详解

JMeter前置处理器-Beanshell前置处理器详解

时间:2024-04-01 17:34:00浏览次数:24  
标签:Jmeter log 前置 处理器 JMeter 变量 Beanshell

前言

在JMeter中,前置处理器用于在发送HTTP请求之前执行特定的操作。Beanshell前置处理器是一种非常强大的前置处理器,它允许您使用Java语言编写脚本来实现各种复杂的逻辑。本文将介绍如何使用Beanshell前置处理器来执行自定义操作以增强性能测试。

什么是Beanshell前置处理器?

Beanshell前置处理器是JMeter提供的一种前置处理器,它使用Beanshell脚本语言编写。Beanshell是一种类似于Java的脚本语言,它允许您使用Java语法编写代码,并且可以与Java类和库进行交互。这使得Beanshell前置处理器非常灵活,可以执行各种自定义逻辑,如参数化、数据处理、计算等。

如何在JMeter中添加Beanshell前置处理器?

要在JMeter中添加Beanshell前置处理器,我们可以按照以下步骤操作:

  • 打开JMeter,并打开您的测试计划。
  • 在添加Beanshell前置处理器的HTTP请求之前,右键单击目标HTTP请求,选择“添加” -> “前置处理器” -> “Beanshell 前置处理器”。

Beanshell的内置变量操作

  1. vars变量:用来操作Jmeter的变量值得,常用的方法有:
  • vars.get("key"):从Jmeter变量中获取指定键的值
  • vars.put("key","value"):向Jmeter变量设置变量键值对

示例如下:

代码如下:

string name = vars.get("name") //此处获取的jmeter变量值转换成Java变量
log.info("获取到的变量值为:="+name);//打印一下获取的变量值

vars.put("phone","13201100123"); //向Jmeter变量中设置一个phone变量
log.info("设置phone的变量值为:="+vars.get("phone")); //打印一下设置的phone值
  1. ctx变量:用来获取当前线程的上下文信息,常用的方法有:
  • ctx.getVariables().get("key"):等价于vars.get("key"),从Jmeter变量中获取指定键的值
  • ctx.getProperties().getProperty("key"):获取Jmeter的属性,这里可以获取Jmeter.properties配置文件下的属性
  • ctx.getThreadNum():获取当前线程组编号

示例如下:

代码如下:

log.info("=通过ctx形式获取一下Jmeter存储的变量:="+ctx.getVariables().get("name"));
log.info("=通过ctx形式获取一下Jmeter属性:="+ctx.getProperties().getProperty("sampleresult.default.encoding")); //此处验证我们配置的编码属性
log.info("=====通过ctx形式获取一下当前线程编号:="+ctx.getThreadNum());
  1. log变量:用来记录日志,会写进jmeter.log文件中,常用的方法有:
  • log.info():打印普通日志
  • log.warn():打印警告日志
  • log.error():打印错误日志

实例如下:

代码如下:

log.info("这是一条普通的日志");
log.warn("这是一条警告信息");
log.error("发生报错,请检查一下问题");
  1. props变量:用来操作jmeter的属性的,常用的方法有:
  • props.get("propName"):获取Jmeter的指定属性信息
  • props.put("propName","propValue"):给Jmeter设置属性
  • props.containsKey("key"):判断Jmeter是否存在指定key的属性
  • props.contains("values"):判断Jmeter是否存在指定value的属性

示例如下:

代码如下:

log.info("通过props变量获取下Jmeter的编码属性:"+props.get("sampleresult.default.encoding"));
log.info("通过props变量判断下Jmeter的编码属性是否存在:"+props.containsKey("sampleresult.default.encoding"));

实际使用

了解了各种变量之后,我们可以在执行测试时,实际使用Beanshell前置处理器,比如我们要在执行测试时,添加上时间变量,我们可以如下设置:

vars.put("time", "${__time(,)}");
log.info("时间参数:"+vars.get("time"));

运行脚本,查看结果树,如下:

总结

在本文中,我们介绍了如何使用Beanshell前置处理器来执行自定义操作以增强JMeter性能测试。通过编写Beanshell脚本,可以实现各种复杂的逻辑,从简单的参数化到数据处理和计算。Beanshell前置处理器为性能测试提供了更大的灵活性和可扩展性,使我们能够更好地模拟真实的使用场景,并发现潜在的性能问题。

标签:Jmeter,log,前置,处理器,JMeter,变量,Beanshell
From: https://www.cnblogs.com/hogwarts/p/18108988

相关文章

  • 注解处理器
    demo:/1:***定义注解*/@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceFruitProvider{/**供应商编号*/publicintid()default-1;/***供应商名称*/publicStringname()default"";13/04/2018Page108of283......
  • JMeter元件作用域和执行顺序
    JMeter元件作用域和执行顺序元件的基本介绍基本元件总结作用域的基本介绍作用域的原则元件执行顺序Jmeter第一个案例:Jmeter三个重要组件(重点)线程组特点线程组分类线程组的属性案例分析HTTP请求案例一(使用HTTP请求路径来传递get请求参数)案例二(使用参数列表来传递get请......
  • jmeter linux arm系统上无法启动
    1.jmeter5.4.1在arm系统上压测:报错Anerroroccurred:ErrorinNonGUIDriverProblemloadingXMLfrom:'/home/telpo/hbie/apache-jmeter-5.6.3/apache-jmeter-5.6.3/hbieCaseface1vn.jmx'.Cause:CannotResolveClassException:kg.apc.jmeter.threads.SteppingThreadG......
  • ETL工具-nifi干货系列 第五讲 处理器GenerateFlowFile
    1、今天我们一起来学习处理器GenerateFlowFile。这个处理器创建带有随机数据或自定义内容的FlowFiles。GenerateFlowFile对于负载测试、配置和模拟非常有用。从工具栏拖动处理器到画布,然后选择GenerateFlowFile即可。 2、点击add按钮或者双击 GenerateFlowFile可将此处理器......
  • [转帖]ARM发布新一代高性能处理器N3/V3
    https://zhuanlan.zhihu.com/p/371282138 就在2月21日,ARM发布了新一代面向服务器的高性能处理器N3和V3,N系列平衡性能和功耗,而V系列则注重更高的性能。此次发布的N3,单个die最高32核(并加入到CCS,ComputeSubsystems,包含Core,SystemIp等),以CCS来讨论,每瓦性能比上一代提升20%-5......
  • [转帖]尝试梳理下ARM处理器的发展历史
    大家好,这篇文章是我的朋友MichaelYao写的,我觉得非常不错,分享给大家。1.前言本文尝试简单梳理下ARM处理器的发展历史、架构的演进,包括不同处理器的应用方向,但我们重点还是围绕Cortex-A系列展开,也会介绍不同微架构处理器之间的继承关系,以及它们分别出自哪个设计团队等。不出......
  • JMeter前置处理器-用户参数详解
    简介在进行性能测试时,对于模拟真实用户行为和生成负载的需求日益增加。JMeter作为一款开源的性能测试工具,在这方面提供了丰富的功能和扩展性。其中,前置处理器是一项强大的功能,可以在发送请求之前对请求进行修改或添加额外的操作。本文将介绍前置处理器中非常重要的一个,用户参数......
  • Jmeter性能测试 —— 压力模式
    压力模式性能测试中的压力模式有两种。第一种是并发用户模式(虚拟用户模式)并发用户是指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。从客户端的角度出发,摸底业务系统各节点能同时承载的在线用户数,可以使用该模式设置目标并发,也就是Jmeter里面的线程数。第二种是R......
  • Jmeter压则数据库
    一、连接数据库有什么用用作参数据化数据(例如我们做的登录,要从数据库里面进行查询数据)清理垃圾数据(把没用的数据库里的数据进行清除)用作结果的断言(例如我们添加购物车下订单,检查接口返回的订单号,是否与数据库中生成的订单号一致)准备测试数据(通过数据库插入更多的数据)......
  • FPGA图像处理——前置基础篇
    FPGA图像处理——前置基础篇本系列博客旨在结合FPGA来进行图像处理,致力于各种图像处理算法的实现,同时参考了博客原创作者——咸鱼FPGA的资料。以下是前置基础三节,我会以一个小白的角度去思考,解析学习过程中遇到的各种问题。1.Modelsim联合Matlab的图像仿真平台这是一个用于验......