测试开发

JMeter篇02:JMeter内部原理

2018-10-17  本文已影响0人  _stefan__

上一篇文章,我们介绍了JMeter的安装。

在使用JMeter这款工具之前,首先要了解JMeter是如何工作的,也就是JMeter的内部原理,理解了原理,我们才能更好地使用工具。

1、JMeter的体系结构

JMeter的结构图如下所示。这是一个三维空间,三维坐标轴分别是X、Y、Z。这张图来源于网络,在很多讲JMeter原理的文章中都可以看到,但是理解起来比较抽象,很难简单明了地看懂,我在此尝试描述一下。

X维度实际上是描述的是不同的组件,这些组件是独立的个体,我们依靠这些组件完成性能测试中负载的模拟,这些组件分别是:

采样器+断言+监听器,组合在一起就可以完成发送请求、验证结果、记录结果这样的工作;

前置处理器+配置元件+后置处理器,都是为采样器提供数据支持的,而采样器关注的是业务逻辑。

Y维度实际上是对性能测试进行了一个划分,Y1是负责模拟用户请求的部分,Y2是负责验证结果正确的部分,因为这两部分同时需要线程组,所以是相交的。

Z维度只有一个监听器(Listener),监听器用来负责结果的收集,监听器不仅可以放在线程组之内,也可以放在线程组之外,所以监听器与它们是相交的。

上述的这些组件是JMeter的主要组成部分,除此之外,还有其他的一些组件,比如Test Fragment,这是一个辅助的组件,在此节点下可以放置任何JMeter测试元件,但它一般不会被运行,它的作用主要有两个:在脚本开发过程中备份元件、利用Test Fragment来模块化请求,供模块控制器调用。

2、JMeter运行原理

JMeter是以线程的方式运行的,通过线程组来驱动多线程运行测试脚本,对被测服务器发起负载,每一个负载机上都可以运行多个线程组。

JMeter的场景运行,基于操作方式,可以分为两种:

所以每次启动JMeter的时候,你都会看到这个提示“Don't use GUI mode for load testing !”。

基于运行架构,也可以分为两种,即(本地化运行或称单机运行)、远程运行,不论是GUI模式还是非GUI模式,都支持本地运行与远程运行。

  • 负载机:向被测服务器发起负载请求的机器,与其他支持远程运行的测试工具一样,负载机受控制机管理时首先启动一个客户端Agent程序,控制机才可以接管负载机;
  • 控制机:控制机也是一台负载机,只不过是多台负载机中被选中作为管理机的那台机器,所以控制机也可以参与脚本的运行,同时担负着管理和指挥远程的负载机运行的任务,并且收集远程的负载机的测试结果;

远程运行的逻辑是:

3、JMeter测试计划的要素

JMeter中一个脚本,就是一个测试计划,也是一个管理单元。JMeter的请求模拟、并发数(即设置的线程数,一个线程代表一个虚拟用户)的设置都在脚本文件中一起设置。

LoadRunner中,脚本与虚拟用户的设置是分开的。

至于JMeter中的其他元件,都是为这些要素服务的。

4、JMeter的工作目录

学习完JMeter的基础原理后,我们再来看下JMeter的工作目录,更好地了解JMeter。JMeter的工作目录下主要有以下的文件夹/文件:

5、小结

本篇文章框架性地介绍了JMeter的组成及运行原理,实际上与大多数的性能测试工具原理上是相似的,比较理论化,虽然这些理论比较枯燥,但这是后续学习JMeter的一个基础,有了理论,才能更好地实践。

JMeter的运行逻辑主要是:

同时JMeter也支持远程运行,弥补单台机器负载不够的情况。

上一篇下一篇

猜你喜欢

热点阅读