说组件之前,我们先来看一下JMeter的结构图,如下图,把JMeter拆解为三个维度,X空间5个维度,Y空间2个维度,Z空间1个维度。
介绍
X1~X5是负载模拟的整个过程,Y1是负载模拟部分,这部分主要负责模拟用户请求;Y2是断言,主要负责判断结果的正确性;Z主要负责收集结果的收集,进行结果的处理。
JMeter的基本原理是建立一个线程池,多线程运行取样器产生大量负载,在运行的过程中,通过断言来验证结果的正确性,通过监听器来收集测试结果。
组件介绍
笔者用的JMeter是5.4.1版本,X1 取样器(Sampler)有23个,基本涵盖了常见的各种协议。同时,JMeter本身还支持BeanShell脚本,可以进行扩展。取样器路径如下图:【Thread Droup】—【Add】—【Sampler】。
断言
X1断言(Assertions)有15个元件,涉及的断言类型也很多,比如JSON断言、响应断言、XML断言等。当然了,也可以通过BeanShell来写脚本完成校验。断言路径如下图:【Thread Droup】—【Add】—【Assertions】。
监听器
X1监听器(Listener)有19个元件。监听器主要负责测试结果的收集。主要有两个功能:一是收集测试结果,展示在页面;二是收集测试结果,保存为文件。监听器路径如下图:【Thread Droup】—【Add】—【Listener】。
前置处理器
X2前置处理器(Pre Processors)共有元件8个。前置处理器主要是在请求前,进行一些环境或者参数的准备工作。比如:如果在测试需要建立一个数据库链接,前置处理器就可以完成这个功能。前置处理器的访问路径:
【Thread Droup】—【Add】—【Pre Processors】。
配置元件
X2配置元件(Config Element)共有20个。它的作用有两个:一是获取或者记录测试数据,比如CSV Data Set Config,就可以从文件中获取测试数据;二是提供测试函数,生成动态数据。简而言之,配置元件就是为测试提供预备数据。配置元件路径:
【Thread Droup】—【Add】—【Config Element】。
后置处理器
X2后置处理器(Post Processors)共有12个元件。主要负责响应数据的处理。访问路径:【Thread Droup】—【Add】—【Post Processors】。
总之,X2的这些元件,都是为取样器提供支持的。
控制器
X3控制器(Logic Controller)共有元件19个。如果我们要对一个结果进行判断是不是与其他值相等,这时候就可以用If控制器。当然,控制器还有其他种类,需要根据业务逻辑进行选择。访问路径如下:
【Thread Droup】—【Add】—【Logic Controller】。
定时器
X4定时器(Timer)共有9种。主要是为了请求在同一时间发送,发送多久。定时器的种类也很多,可以根据自己的需求进行选择。访问路径:
【Thread Droup】—【Add】—【Timer】。
线程组
X5线程组(Theads)。测试需要模拟用户,线程组就是做这个工作的,在此元件内,可以设置运行的线程数,运行时长以及定时运行等。访问路径:
【Thread Droup】—【Add】—【Theads】。
测试片段
测试片段(Test Fragment),它是一个辅助组件,在它的下面可以放所有元件,但是单独的测试片段是不执行的,需要被模块控制器来调用。访问路径:
【Thread Droup】—【Add】—【Test Fragment】。
以上就是JMeter的结构以及组成,从以上介绍中也不难发现,JMeter是以线程的方式来运行的。这样做,是由于JMeter是运行在JVM虚拟机上的,如果以进程方式来执行,每台负载机的进程数量就不会出现很多,在很多测试中,我们并发是要很多负载机的。显然,这样做不经济,再者,Java也是支持多线程的,所以JMeter选择了一线程的方式来运行。
今天的分享到这就结束了,下次我们将会挑几个重要的组件,聊一下JMeter中组件的用法。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
在我的QQ技术交流群里(技术交流和资源共享,广告勿扰)