如何高效开发jmeter自定义函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何高效开发jmeter自定义函数相关的知识,希望对你有一定的参考价值。

Jmeter是一款开源的性能测试工具,目前是行业内使用率最高的性能测试工具之一,Jmeter是使用JAVA语言开发的,本文介绍如何使用JAVA语言开发自己需要的扩展函数

目前业界流行的两种开发模式,本文介绍第二种

1、使用Jmeter二次开源环境,直接在org.apache.jmeter.functions包下面开发自己需要的函数,然后导出该jar包,替换Jmeter目录的ApacheJMeter_functions.jar文件
2、直接在Maven 项目下开发自定义函数,然后打包,该方法、简单、高效

开发思路

1、使用Eclipse创建Maven 项目,配置Pom文件,引入扩展function所需的依赖包;
2、创建类,然后继承AbstractFunction,实现四个主方法;
3、对编写好的项目进行编译、打包
4、把打包好的函数放到jmeter扩展目录,调用自定义函数,检查是否正确;

一、新建Maven项目

1.File》New》Project,选择Maven》Maven Project,一直点击Next,此处Package包名一定要以.functions格式结束,否则开发出来的函数,Jmeter读取不到
技术图片
技术图片
2.配置Pom文件,Pom文件配置的Jmeter4.0版本,只要保存了Pom文件,系统就会自动下载和关联相应的jar包,Pom配置文件如下:
技术图片
3.保存Pom文件之后,系统会自动下载关联的依赖文件,如下图:
技术图片
技术图片
4.此时,由于对pom文件进行了修改,项目顶层会出现一把×,并且编译可能就会报错,需要执行Maven》Update Project更新外部依赖的Jar包

  • 更新前:
    技术图片
    技术图片
  • 更新后,编译、打包正常:
    技术图片
    二、编写自定义函数代码
  • 要实现扩展Jmeter function,主要有两点
    1. 实现function的类的package声明必须包含".functions"

      JMeter设计让一些核心的类可以在非UI的方式下运行的时候能被加载进来,这些类会被优先加载。加载这些类的时候是通过命名规则来实现的。所有实现function的类必需包含".functions",所以我们自定义实现的类里必须包含".functions",比如如下申明的包名为:"jmeter.test.functions"

技术图片

  1. 首先在Jmeter.test.functions包下创建一个类,类名称为Save_Variable,需要继承AbstractFunction类,然后实现父类的四个方法

    本次开发的函数实现的效果为通过传两个变量,一个是变量名,一个是变量,自动在执行脚本路径的上一个层级实现自动创建一个txt文档保存变量,已经有该文件则追加,测试过程中有时候需要对获取的变量及时保存,如果大批量就可以使用该方法

技术图片

  • 这里主要是定义变量desc、KEY 然后将描述显示到函数的参数描述中,如下图
    技术图片

技术图片

  • setParameters函数作用就是获取函数输入框界面输入的值,将输入的值传递给execute

技术图片

  • getReferenceKey函数是提供一个在Jmeter函数助手显示的函数名称
    技术图片
  • getArgumentDesc函数用来获取对输入参数的描述
    技术图片

  • execute函数用来实现获取输入的参数,然后通过对参数做需要的处理,该函数是开发中最重要的模块,并且进行最后执行,本次案例中主要实现的功能就是保存jmeter中传入的变量
    三、编译、打包
    1. 编写代码完成,就可以进行编译、打包操作了,右键点击项目》Run As》Maven build
      技术图片
    2. 在Goals中输入package,然后点击Apply》Run执行编译,打包操作
      技术图片
    3. 编译打包完成,在target目录会生成一个jar包,如下图所示
      技术图片
      技术图片

四、验证开发的函数是否正常

  1. 首先把Jmeter.test.functions函数放到jmeter的\lib\ext目录
    技术图片
  2. 然后启动jmeter,进入选项》函数助手对话框,选择 _Save_Variable,输入要保存的变量文件名,和变量值,点击生成按钮(点了生成,系统就会生成一个函数,然后就相当于做了复制功能,可以拷贝到需要调用的地方),本次以内部函数${__counter(false,i)}进行测试
    技术图片
  3. 使用一个sample调用该函数,如下所示
    技术图片
  4. 本次设置1线程,10循环,点击执行按钮,执行结果如下:
    技术图片
    技术图片
  5. 本次执行脚本的目录为script下,所以会在相同层级目录的data中生成
    技术图片
    完整源码如下:

技术图片

-----

如果对您有帮助,记得点个赞

以上是关于如何高效开发jmeter自定义函数的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段8——声明函数

VSCode插件开发全攻略代码片段设置自定义欢迎页

性能测试基础---jmeter函数二次开发

JMeter 扩展开发:自定义 JMeter 插件的调试

Jmeter自定义函数_myBillcode加密

扩展JMeter - 创建自定义函数 - String Joiner (翻译)