zoukankan      html  css  js  c++  java
  • 如何高效开发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扩展目录,调用自定义函数,检查是否正确;
    JDK环境Jmeter依赖包版本Maven仓库版本
    1.8 4.0 3.5.3

    一、新建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包
    更新前:
    在这里插入图片描述在这里插入图片描述
    更新后,编译、打包正常:
    [外链图片转存失败(img-g2Pq7CcV-1566810365234)(https://s1.51cto.com/images/blog/201905/07/41250469faa016c078aedccb88e65bf6.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
    二、编写自定义函数代码

    要实现扩展Jmeter function,主要有两点


    1. 实现function的类的package声明必须包含".functions"

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

    在这里插入图片描述
    2. 首先在Jmeter.test.functions包下创建一个类,类名称为Save_Variable,需要继承AbstractFunction类,然后实现父类的四个方法
    在这里插入图片描述
    3. 这里主要是定义变量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的libext目录
    在这里插入图片描述
    2. 然后启动jmeter,进入选项》函数助手对话框,选择 _Media_Save_Variable,输入要保存的变量文件名,和变量值,点击生成按钮(点了生成,系统就会生成一个函数,然后就相当于做了复制功能,可以拷贝到需要调用的地方),本次以内部函数KaTeX parse error: Expected group after '_' at position 2: {_̲_time(yyyy-MM-d…{__counter(false,i)}进行测试
    在这里插入图片描述
    3. 使用一个sample调用该函数,如下所示,也可以使用后置处理器调用
    在这里插入图片描述
    在这里插入图片描述
    4. 本次设置2线程,5循环,点击执行按钮,执行结果如下:
    在这里插入图片描述
    在这里插入图片描述
    5. 本次执行脚本的目录为script下,所以会在相同层级目录的data中生成
    在这里插入图片描述
    函数功能介绍

    1、本次开发的函数实现的效果为通过传两个变量,一个是文件名(用来保存参数),一个是变量(可以传入多个参数),自动保存获取的变量
    2、根据你执行脚本的路径,如果是在script下执行,就会在上一个层级的data目录(无则自动生成该目录)保存该变量,如果是在其它目录执行脚本,则会在执行目录下的data目录(无则自动生成该目录)保存该变量,变量文件夹也是会自动创建,如果已经存在该文件,则会自动追加变量到该文件
    3、实现变量值筛选,如果获取的变量有一个为空值,也不会保存该次获取的其它变量
    4、windows和linux环境都可用
    5、性能测试过程中,经常有需求想要大批量保存获取的变量,并且是关联的变量,需要实现多个变量保存在同一行csv,方便其它案例调用,目前jmeter内置函数没有该功能,本次开发的函数就能实现该需求
    Jmeter.test.functions.jar下载方法见文章末尾介绍

    完整源码如下:

    在这里插入图片描述
    踩坑记录
    1. 开发一个新的自定义函数,调用函数报错如下,报错信息是提示访问了未定义的变量或者类名
    在这里插入图片描述
    2. 经过排查,发现是本次传入了三个参数,但是setParameters中定义的最大参数个数还是2,所以导致报错,修改该方法即可,如下
    在这里插入图片描述
    在这里插入图片描述


    如果文章对你有帮助,欢迎关注本人公众号,公众号与本平台文章同步,方便大家查阅,本人会持续推出与测试有关的文章,与大家分享测试技术,每一篇原创文章都是用心编写,杜绝抄袭复制


    QQ技术交流群:加群请输入验证信息 CSDN
                  在这里插入图片描述


    微信二维码关注公众号:

    在这里插入图片描述


    关注之后,回复资源下载,即可获取本人共享的各种资源下载地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dkyHNY2D-1569554485737)(https://s1.51cto.com/images/blog/201908/06/2e62f8806e1dc1c391c4332ac7fd70b1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]

  • 相关阅读:
    vs 视图其它窗口命令窗口
    WPF 翻转动画实现(转)
    ASP.NET的后台代码和前台JS代码相互调用
    LINQ学习心得分享(三)LINQ语法详解2
    LINQ学习心得分享(二)LINQ语法详解
    《AJAX学习心得分享(三)AJAX+JSON无刷新加载大量后台数据》
    A simple poem
    LINQ学习心得分享(五)LINQ TO SQL实用详解
    LINQ学习心得分享(四)LINQ TO XML实用解析
    AJAX学习心得分享(一)AJAX初识+原生态AJAX
  • 原文地址:https://www.cnblogs.com/Jmeter-Automation/p/12730569.html
Copyright © 2011-2022 走看看