首页 > 系统相关 >JMeter-BeanShell预处理程序和BeanShell后置处理程序的应用

JMeter-BeanShell预处理程序和BeanShell后置处理程序的应用

时间:2023-04-12 16:24:42浏览次数:60  
标签:requestTime 请求 后置 接口 sign BeanShell JMeter 预处理

一、什么是BeanShell?

BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,JMeter性能测试工具也充分接纳了BeanShell解释器,封装成了可配置的BeanShell前置和后置处理器,分别是

BeanShell Preprocessor(BeanShell预处理程序)和BeanShell Postprocessor(BeanShell后置处理程序),能通过编写代码的方式更好的处理接口性能测试中的请求前置入参和后置数据的获取等等。BeanShell配置原件在JMeter的位置如下图:

BeanShell Preprocessor(BeanShell预处理程序)

 

 

 BeanShell Postprocessor(BeanShell后置处理程序)

 

 

 二、BeanShell Preprocessor(BeanShell预处理程序)的基本应用

在进行接口性能测试时,往往经常用到的场景就是每次api请求的入参都是变化的,比如有些接口请求参数有时间戳、或者很多时候后台为了保证接口请求的安全性,需要请求携带sign入参甚至这个sign是通过加密算法得到的。也就是说,这样的接口基本都是每次请求前需要构建不同的入参数据。因此在对这样的接口做并发测试时就需要参数化请求入参,BeanShell Preprocessor(BeanShell预处理程序)这样的前置处理器就可以很方便构建参数化入参。看看如下实例:可以参数化时间戳、参数化sign签名。

添加BeanShell Preprocessor前置处理器,在脚本编辑框中编辑如下代码:

// 导入MD5加密需要用到的jar包。
import org.apache.commons.codec.digest.DigestUtils;

// 声明你需要拼接的字符串
//String requestTime = "1680089472000"; //生成时间戳
String requestTime = "${__time(,)}"; //生成时间戳
log.info("=====请求时间戳:=====>>"+requestTime);

String yan = "N[8HXx!57Ivy%)#R";
//拼接需要加密的字符串
String str = yan + requestTime;
// 加密已拼接的字符串
String sign = DigestUtils.md5Hex(str);
log.info("=====sign签名:=====>>"+sign);

vars.put("sign",sign); //设置变量,将md5加密后的值传递给变量sign

vars.put("requestTime", requestTime); //将时间传递给变量requestTime

 如上的BeanShell脚本中,定义了两个字符串:requestTime 和sign,设置了它们的取值,其中requestTime的值是${__time(,)},该函数可以按当前时间生成时间戳,sign的值是进行了md5加密后生成了一个32位小写的字符串,并将值传给变量requestTime 和sign用于后续接口请求参数化,然后脚本中也加入了日志打印,接口请求后可以在日志查看中输出参数日志信息

效果如下图:

 

 这样就完成了BeanShell预处理脚本的编写,然后我们将脚本中的requestTime 和sign参数引入接口请求中,如下图:

 

 最后,BeanShell预处理脚本以及请求参数化配置好后,我们运行JMeter看看请求效果和日志打印,请求2次接口:

 

 可以看到每次请求的时间戳和sign值都不一样,请求响应结果都是返回正确的。这样就完成了jmeter并发请求每次都是不一样的请求入参。

 三、BeanShell Postprocessor(BeanShell后置处理程序)的基本应用

BeanShell Postprocessor(BeanShell后置处理程序)其实就是通过脚本来获取响应相关的数据,用于做一些和其他接口有交互的场景,如接口A的响应结果的某个字段用于接口B的入参的时候,就可以通过BeanShell Postprocessor(BeanShell后置处理程序)来提取到接口A的响应结果的数据,然后参数化传递给接口B或者将提取的数据写入文件等。当然JMeter也提供了类似正则表达式提取器、json提取器等后置处理元件来提取响应或者请求数据,BeanShell Postprocessor(BeanShell后置处理程序)可能更方便通过脚本来自定义获取想要的数据。

添加BeanShell Postprocessor后置处理器,比如我们想要获取请求后的响应状态码、响应头响应体等数据都是可以的。在脚本编辑框中编辑脚本,如下图:

 

 这样我们就可以得到响应状态码、响应体、响应头等数据,用于后续接口响应断言等测试验证,运行结果如下:

 

 如上就是BeanShell Postprocessor后置处理器的基本应用了,当然还可以编写更加适用于测试场景的脚本和逻辑满足测试需要。

 

标签:requestTime,请求,后置,接口,sign,BeanShell,JMeter,预处理
From: https://www.cnblogs.com/tdp0108/p/17310176.html

相关文章

  • mac-m1安装jmeter详细步骤
    mac-m1安装jmeter详细步骤查看jdk安装路径:/usr/libexec/java_home-V修改jmeter的java路径vim/opt/homebrew/Cellar/jmeter/5.4.1/bin/jmeter修改java环境变量,jmeter需要给赋值写的权限,chmod+wjmeter修改成当前java的执行路径安装后的路径是:/opt/homebrew/Cellar/jmeter......
  • jmeter上传图片压测5
    1,前言2,jmeter脚本3,聚合报告本文永久更新地址:1,前言图片或文件测试上传压测需要考虑文件大小,不同大小的文件上传时对服务的压力是不一样,大文件压力要比小文件大场景准备两个不同大小的文件编写jmeter脚本2,jmeter脚本选择类型为文件上传mime类型为content-type的类......
  • jmeter插件的安装
    前言jmeter常用的插件有很多,本身安装的jmeter是没有安装插件的工具,需要下载一个jar包,通过插件安装工具去安装jmeter插件plugins-manager.jar这个jar包就是用来安装jmeter插件的jar把这个jar包下载后放到jmeter的lib/ext目录下重启jmeter就可以用这个工具安装更多的插件安装插件......
  • 性能测试之jmeter脚本监控3
    1,influxDb数据库2,安装influxDB服务3,配置jmeter监听器,后端监听器4,配置grafana可视化工具本文永久更新地址:1,influxDb数据库InfluxDB以更少的代码为分析、物联网和云原生服务构建实时应用程序。其核心是一个数据库,专门用于处理由传感器、应用程序和基础设施生成的海量数......
  • grafana+influxdb2+jmeter5.4搭建服务监控平台
    一.grafana+influxdb2安装通过docker的方式,创建个目录,写docker-compse1.docker-compse.ymlversion:"3"services:influxdb:image:influxdb:2.2.0container_name:influxdbports:-"8086:8086"grafana:image:grafana/grafana......
  • jmeter取样器javaRequest脚本8
    1,创建一个maven工程2,通过maven编译打包生成一个jar包3,重启jmeter,新建javarequest请求4,开始执行脚本本文永久更新地址:1,创建一个maven工程在pom.xml文件中添加maven下载地址:https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_java/5.4.1<depe......
  • mac-m1安装jmeter详细步骤
    mac-m1安装jmeter详细步骤查看jdk安装路径:/usr/libexec/java_home-V修改jmeter的java路径vim/opt/homebrew/Cellar/jmeter/5.4.1/bin/jmeter修改java环境变量,jmeter需要给赋值写的权限,chmod+wjmeter修改成当前java的执行路径安装后的路径是:/opt/homebrew/Cellar/jmeter......
  • jmeter上传图片压测5
    1,前言2,jmeter脚本3,聚合报告本文永久更新地址:1,前言图片或文件测试上传压测需要考虑文件大小,不同大小的文件上传时对服务的压力是不一样,大文件压力要比小文件大场景准备两个不同大小的文件编写jmeter脚本2,jmeter脚本选择类型为文件上传mime类型为content-type的类......
  • jmeter插件的安装
    前言jmeter常用的插件有很多,本身安装的jmeter是没有安装插件的工具,需要下载一个jar包,通过插件安装工具去安装jmeter插件plugins-manager.jar这个jar包就是用来安装jmeter插件的jar把这个jar包下载后放到jmeter的lib/ext目录下重启jmeter就可以用这个工具安装更多的插件安装插件......
  • jmeter动态修改线程数脚本4
    1,jmeter修改并发数2,shell脚本编写3,jmeter设置脚本本文永久更新地址:1,jmeter修改并发数jmeter进行压测的时候,相同的脚本不同的并发数,如果人工测试的话,每次并发结束后都需要人工修改并发数再次测试,如果通过shell脚本动态的修改并发数,等一个场景结束后自动进行下一个并发......