Jmeter的二次开发-自定义函数

为什么需要自定义函数呢?

Jmeter作为一个工具是有局限性的,在某些场景中,jmeter可能无法满足我们的测试需求,这时我们可以:

1,找第三方的插件:

2,对Jmeter进行二次开发:

一般来说,涉及到数据的处理相关问题,例如数据加密,数据格式转换等,可以通过自定义函数的方式来实现。


先使用Java IDE编写基于JMeter库的自定义函数:

第一步创建一个Java project:

在Java project的build Path中倒入Jmeter的依赖库ApacheJMeter_core.jar和ApacheJMeter_function.jar:

在Java project下面创建Java package,名字以functions结尾:

这时因为在Jmeter.propeties中定义了Jmeter查找class的规则:

创建java class,选择自定义java class的父类,继承自org.apache.jmeter.functions.AbstractFunction

注意:

1. 自定义函数的package的名字的最后必须是.functions

2. 自定义函数是需要继承Jmeter的org.apache.jmeter.functions.AbstractFunction

自动生成的class文件中,getReferenceKey()函数是用于返回自定义函数的名字,下面的例子中,自定义函数名是“__Hello”:

函数execute是Jmeter自定义函数的主要逻辑代码,在这里写自己的业务逻辑:

然后将写好的Java类函数导出为Jar file:

将导出的jar文件放入Jmeter的lib/ext下面,然后重启Jmeter:

在Jmeter的函数界面中就可以找到自定义的函数了:

上面是个简单的例子,只是介绍了Jmeter自定义函数的大致流程,下面介绍一下如何给自定义函数传递参数,和如何在自定义函数中使用业务jar包。

首先说明Jmeter自定义函数的原则,建议把业务相关的代码单独打成jar包,然后在Jmeter自定义函数中引用。

先写一个简单Java class来模拟业务逻辑代码:

把业务逻辑代码导出为jar包,在Jmeter自定义java project中倒入:

在Jmeter 自定义函数类中先定义输入参数列表和参数列表说明,需要结合具体的业务场景来设定。通过调用add方法来添加多个函数的输入参数:

定义全局变量用于接受输入的参数值:

修改setParameters方法来接受和处理用户调用函数时所传递的参数值:

接下来修改execute方法,把自定义函数的业务逻辑写在这个方法里面,先实例化业务类Calc,然后调用实例的方法处理输入参数,并返回相应的输出:

然后将写好的自定义函数导出为jar包,放入Jmeter的lib/ext目录下,再将业务逻辑包放入Jmeter的lib目录下,重启Jmeter,就可以在函数助手里调用自定义函数了:

你可能感兴趣的:(Jmeter的二次开发-自定义函数)