01、JMeter基本组件类型及实现方法

JMeter基本组件类型及实现方法

对于JMeter的基本组件,可以将其简单的划分为两大类:

  • 一类是具备GUI的组件,即可以通过JMeter图形管理控制器测试计划Tree中进行添加的组件,主要包括
    • ThreadGroup(线程组)、Config(配置元件)、Timer(定时器)、Modifier(前置处理器)、Extractor(后置处理器)、Controller(逻辑控制器)、Sampler(测试抽样器)、Assertion(断言)和Listener(监听器);
  • 另一类是非GUI组件,这类组件典型的代表是Function(函数)和某些子测试抽样器,如JavaSamplerClient。

 

对于组件一般有两种实现方法:

  • GUI与逻辑控制分离
    • GUI部分,通过继承各种组件GUI抽象类
    • 逻辑控制部分,通过继承组件逻辑抽象类实现各种接口方式,从而实现不同组件的内部逻辑控制;
  • GUI与逻辑控制不分离
    • 与分离方法的区别在于,不单独实现GUI部分,在逻辑控制部分通过实现TestBean接口方法从而实现对GUI界面的配置。

 

JMeter插件式组件实现细节概述

TestElement是所有组件的最基本单元,组件类都是TestElement类的子类;

JMeter定义了上一章节所介绍的几种组件模型,并对其规范了各自所需发挥的作用。

 

(1)GUI部分的实现 

GUI部分的实现,可以在JMeter实现主类org.apache.jmeter.JMeter中发现端倪,该类实际实现了JMeterPlugin接口中的getIconMappings()方法,来映射组件所对应的GUI图标,并为映射关系定义了一个二维数组,如下代码:

可以看到只要是插件类的GUI部分继承了以下数组中的GUI类,JMeter框架便会自动将其映射为所对应的组件类型和图标。

private static final String[][] DEFAULT_ICONS = {
        { "org.apache.jmeter.control.gui.TestPlanGui", "org/apache/jmeter/images/beaker.gif" },
        { "org.apache.jmeter.timers.gui.AbstractTimerGui", "org/apache/jmeter/images/timer.gif" },
        { "org.apache.jmeter.threads.gui.ThreadGroupGui", "org/apache/jmeter/images/thread.gif" },
        { "org.apache.jmeter.visualizers.gui.AbstractListenerGui", "org/apache/jmeter/images/meter.png" },
        { "org.apache.jmeter.config.gui.AbstractConfigGui", "org/apache/jmeter/images/testtubes.png" },
        { "org.apache.jmeter.processor.gui.AbstractPreProcessorGui", "org/apache/jmeter/images/leafnode.gif"},
        { "org.apache.jmeter.processor.gui.AbstractPostProcessorGui", "org/apache/jmeter/images/leafnodeflip.gif"},
        { "org.apache.jmeter.control.gui.AbstractControllerGui", "org/apache/jmeter/images/knob.gif" },
        { "org.apache.jmeter.control.gui.WorkBenchGui", "org/apache/jmeter/images/clipboard.gif" },
        { "org.apache.jmeter.samplers.gui.AbstractSamplerGui", "org/apache/jmeter/images/pipet.png" },
        { "org.apache.jmeter.assertions.gui.AbstractAssertionGui", "org/apache/jmeter/images/question.gif"}
};

 

(2)逻辑控制部分的实现细节,根据组件类别进行介绍

这里写图片描述ThreadGroup(线程组)组件

  • ThreadGroup(线程组)组件,继承AbstractThreadGroup抽象类,通过重写各类控制方法,如void scheduleThread(JMeterThread thread) 、stopThread(String threadName, boolean now) 、threadFinished(JMeterThread thread)等,来达到控制和协调各线程(虚拟用户)的行为,线程组是构建一个性能测试模型的最基本组件。

这里写图片描述Config(配置元件)组件

Config(配置元件)组件相对其他组件比较特殊,通过继承ConfigTestElement类或只需要GUI部分的实现即可完成本体任务,而对于一个需要配置的组件类则需要实现ConfigMergabilityIndicator接口的public boolean applies(ConfigTestElement configElement)方法,用来指明哪些Config组件可以用来对其进行配置,这里参考TCPSampler的源代码如下:

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值