如何高效开发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中生成

    完整源码如下:

-----

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

原文地址:https://blog.51cto.com/6183574/2390616

时间: 2024-08-03 14:33:33

如何高效开发jmeter自定义函数的相关文章

报表开发之自定义函数

对于报表开发,很多情况下,自带的函数就能满足大部分用户的报表制作需求,FineReport也不例外.但是在一些特殊领域,可能需要一些特殊的函数,在这种情况下,FineReport提供了自定义函数机制,可以由用户根据业务需要自己来定义一些函数,但这些函数必须满足函数定义规则. 先来了解一下FineReport的函数定义规则:Functionname(Para,Para,...),其中Functionname为函数名,Para为参数. 每一个函数都被定义成一个类,这个类必须要实现Function这个

Jmeter自定义函数_base64加密

新建一个类继承AbstractFunction,重写以下方法: execute setParameters getReferenceKey getArgumentDesc 这四个方法介绍如下: public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException JMeter会将上次运行的SampleResult和当前的Sampler作为参数传入到该方法

开发HIVE的UDTF自定义函数

[Author]: kwu UDTF(User-Defined Table-Generating Functions) 用来解决 输入一行输出多行(On-to-many maping) 的需求,开发HIVE的UDTF自定义函数具体步骤如下: 1.继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF,实现initialize, process, close三个方法. 2.UDTF首先会调用initialize方法,此方法返回UDTF的返回行的信息(

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

JMeter是测试自动化社区中最好的开源工具之一.它提供了所有可能的扩展,可以快速提供我们的测试脚本.为了让我们的生活更轻松,它还让我们通过实现几个接口来提出我们自己的插件. 在本文中,让我们看看如何创建自定义函数并使其出现在下面的JMeter 函数帮助器对话框中. 目标: 我的目标是创建一个简单的Join函数,它将使用给定的分隔符连接2个给定的字符串并将其存储在用户定义的变量中. 用法是   $ {__ join(string1,string2,delimiter,resultVariable

PHP移动互联网开发笔记(4)——自定义函数及数组

原文地址:http://www.php100.com/html/php/rumen/2014/0326/6705.html 一.自定义函数 自定义函数就是我们自己定义的函数,在PHP中自定义函数格式如下: function funname(arg1, arg2, arg3......){ //TODO return values; } view source print? 01.<?php  02.function fun($m, $n){  03.if($m==0 || $n==0){  04

Hive自定义函数UDAF开发

Hive支持自定义函数,UDAF是接受多行,输出一行. 通常是group by时用到这种函数. 其实最好的学习资料就是官方自带的examples了. 我这里用的是0.10版本hive,所以对于的examples在 https://github.com/apache/hive/tree/branch-0.10/contrib/src/java/org/apache/hadoop/hive/contrib/udaf/example 我这里的功能需求是: actionCount(act_code,ac

LoadRunner 7 脚本开发和常用函数

开发性能测试脚本原则.简单 正确 高效 在lr中,脚本运行是解释执行的.所以在运行时,需要先编译. 局部变量和全局变量 1.在init.action.end中定义的变量就是局部变量 2.在globals.h中定义的变量是全局变量 3.什么时候定义全局变量 ? 整个过程中固定不变的,例如URL地址.KEY.其他 int a=100;//这个a是文件级别的.除了globals.h 都可访问 Action() { int a =10; int b =6; //在lr要使用变量,必须放在最上面. pri

iOS 高效开发-----实现description 方法 (续)

在 “iOS 高效开发-----实现description 方法”这篇文章的最后,我留下了一个问题,就是,如果要给每个自定义的类覆写description方法和debugDescription方法 ,那将是一件非常庞大的工作量 ,因为自定义的类很多 ,而且每个自定义的类中的属性都会随着需求的修改出现变化 ,那么就又得修改这两个方法,那就变得无穷无尽了,永无宁日了,要么不用,要么就要找到更好得方法去用. 接下来,我们会用到动态运行时runtime. 我们先假设我们要处理的类中的属性都是OC的对象,

《Python高效开发实战:Django、Tornado、Flask、Twisted》PDF+源码

Python高效开发实战 链接:https://pan.baidu.com/s/1udqe8V2QSh0CMTVg2vEblQ  提取码:igo0 ? 作者: 刘长龙出版社: 电子工业出版社出版年: 2016-10页数: 516定价: 89装帧: 平装ISBN: 9787121300103 内容简介  · · · · · · 也许你听说过全栈工程师,他们善于设计系统架构,精通数据库建模.通用网络协议.后端并发处理.前端界面设计,在学术研究或工程项目上能独当一面.通过对Python及其周边Web框