性能工具之Jmeter扩展函数及压测ActiveMQ实践

厌伴老儒烹瓠叶,强随举子踏槐花。这篇文章主要讲述性能工具之Jmeter扩展函数及压测ActiveMQ实践相关的知识,希望能为你提供帮助。
简介

JMeter作为Apache的开源性能测试工具允许使用者对其进行二次开发扩展,比如用户可以扩展自定义的函数(函数是可以在测试脚本中插入到任何Sampler或者测试元素中,可以封装一些功能,比如对用户名加解密函数或者得到一个自定义功能等)
首先本文将以java扩展一个返回两个数值之和函数的例子来简单演示整个过程。总体来说,二次开发扩展JMeter的函数可以分成下面几个步骤:
  • 新建Maven项目,引入扩展JMeter Function所需的依赖包
  • 编写实现自定义函数的代码,并对其编译打包
  • 将编译好的包拷贝至JMeter的扩展目录,编辑测试脚本,调用自定义函数
  • 使用并查看自定义的函数是否正确
参考参考JMeter官方API的AbstractFunction,它将指导我们创建自己的函数 ??& __7DDemoPlus??函数,以便我们了解它是怎么生成的。
创建Java Maven项目新建一个Maven项目,打开pom.xml,加入ApacheJMeter_functions依赖库
1.< dependencies>

2.< dependency>

3.< groupId> org.apache.jmeter< /groupId>

4.< artifactId> ApacheJMeter_functions< /artifactId>

5.< version> 4.0< /version>

6.< /dependency>

7.< /dependencies>

扩展自定义函数要实现二次扩展函数,主要有两点:
  • 定义function的类的package声明必须包含".functions"
  • 需要继承实现AbstractFunction四个方法
定义包名
【性能工具之Jmeter扩展函数及压测ActiveMQ实践】
性能工具之Jmeter扩展函数及压测ActiveMQ实践

文章图片

继承并实现AbstractFunction四个抽象方法:
  • execute方法用于接收Jmeter传入的参数值并执行工作
  • setParameters方法用于传递执行过程中的实际参数值
  • getReferenceKey方法用于定义函数名字
  • getArgumentDesc方法用于描述函数参数
1. public class Plus extends AbstractFunction {

2.

3.//定义一个obect对象去接受传入变量值

4.private Object[] values;

5.//存储第一个和第二个参数

6.private CompoundVariable first,second;

7.

8./**

9.* 执行方法

10.* @param sampleResult

11.* @param sampler

12.* @return

13.* @throws InvalidVariableException

14.*/

15.public String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException {

16.//接住第一个参数值

17.first = (CompoundVariable) values[0];

18.//接住第二个参数值

19.second = (CompoundVariable) values[1];

20.

21.//计算两个参数的和

22.int count = new Integer(first.execute().trim()) + new Integer(second.execute().trim());

23.System.out.println("两个参数的和是:"+count);

24.

25.//返回一个String类型的和

26.return String.valueOf(count);

27.}

28.

29./**

30.* 设置参数,接受用户传递的参数

31.* @param collection

32.* @throws InvalidVariableException

33.*/

34.public void setParameters(Collection< CompoundVariable> collection) throws InvalidVariableException {

35.//检查参数是否合法

36.checkParameterCount(collection,2);

37.//转换成数组

38.values = collection.toArray();

39.}

40.

41./**

42.* 函数名称

43.* @return

44.*/

45.public String getReferenceKey() {

46.return "__7DDemoPlus";

47.}

48.

49./**

50.* 函数描述,获取参数描述

51.* @return

52.*/

53.public List< String> getArgumentDesc() {

54.List desc = new ArrayList();

55.//界面上显示两行参数描述

56.desc.add("第一个数字");

57.desc.add("第二个数字");

58.

59.return desc;

60.}

61. }

在控制台使用 ??mvn cleanpackage??打包
性能工具之Jmeter扩展函数及压测ActiveMQ实践

文章图片

拷贝自定义函数包文件到jmeter/lib/ext目录下
性能工具之Jmeter扩展函数及压测ActiveMQ实践

文章图片

重启Jmeter后打开函数助手,并生成并复制自定义函数表达式
性能工具之Jmeter扩展函数及压测ActiveMQ实践

文章图片

并使用BeanShell调用自定义函数,并检查结果
性能工具之Jmeter扩展函数及压测ActiveMQ实践

文章图片

我们可以看到控制台已经正确输出函数结果了
至此,我们的Jmeter扩展函数已经完成了,同学们是不是so easy。。。

    推荐阅读