为什么需要自定义函数呢?
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,就可以在函数助手里调用自定义函数了: