JMeter的function扩展——介绍
1. 介绍
近期需要在JMeter中集成一些公司业务相关的功能,如加密解密,API签名生成等相关功能。所以想到JMeter的Custom Function(下面简称function)功能来实现。
下面来简单介绍一下JMeter function
2. function扩展开发
开发一个JMeter的function非常容易,只需要满足三个条件:
-
扩展类,实现Function接口,或继承AbstractFunction
-
扩展类的命名空间需要包含.functions. (可以通过JMeter配置中classfinder.functions.contain项来修改)
-
把编译后的jar包放到JMeter目录lib/ext下,重启JMeter
想看下是否生效了?可以打开JMeter GUI,在Options->Function Helper Dialog选项查看所有自定义function
3. DES加密函数示例
下面来写一个示例,用于des加密,DesEncryption类自行编写:
3.1 扩展代码
3.2 代码要点
-
包管理时需要引入JMeter_core包,scope为provided,版本与最终运行版本一致
-
实现getReferenceKey方法:配置函数名
-
实现getArgumentDesc方法:设置函数参数的说明文字(非必要)
-
实现setParameters方法:从脚本中注册的表达式中获得参数
-
实现execute方法:获得返回值的主体方法,包含主要逻辑
3.3 使用方法
在JMeter中使用表达式直接调用
${__desEncrypt(${content},testDesK)}
-
注意不需要加引号
-
参数用逗号分隔,如果参数里也有逗号,需要使用\,转义
-
自定义function支持使用变量,具体实现原理下次再分析