Jmeter源码分析(一)

Jmeter源码解析之架构分析

1.Jmeter架构

在这里插入图片描述
这是一个三维空间,三维坐标轴分别是X、Y、Z。
X维度实际上是描述的是不同的组件,这些组件是独立的个体,我们依靠这些组件完成性能测试中负载的模拟。
Y维度实际上是对性能测试进行了一个划分,Y1是负责模拟用户请求的部分,Y2是负责验证结果正确的部分,因为这两部分同时需要线程组,所以是相交的。
Z维度只有一个监听器(Listener),监听器用来负责结果收集,监听器不仅可以放在线程组之内,也可以放在线程组之外,所以监听器与它们是相交的。
X维度组件分别是:

X1采样器+断言+监听器

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

  • X1 采样器(Sampler):采样器用来向服务器发送HTTP请求,并接受服务器的响应数据;JMeter的采样器有很多种原件(采样器称为组件,其中的具体一种采样器如HTTP采样器称为元件),基本涵盖了常见的协议,如HTTP、FTP、JAVA、JMS、LDAP、MAIL、MongoDB、SMTP、SOAP、TCP、JUnit等;
  • X1 断言(Assertions):断言用来验证结果是否正确,即判断请求是否成功、返回数据是否符合要求等,通过预设的结果和实际返回的结果进行比较,匹配到了就说明断言成功,JMeter的断言组件也有多种元件,如响应断言、XML断言、BeanShell断言;
  • X1 监听器(Listener):监听器用来收集测试结果,监听器有两个任务,即添加结果监听和展示结果,监听器组件也有多种元件;

X2前置处理器+配置元件+后置处理器

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

  • X2 前置处理器(Pre Processors):前置处理器用来完成请求发送前的一些环境或者参数的准备工作,比如操作数据库前需要建立一个数据库连接;
  • X2 配置原件(Config Element):配置原件用来为采样器提供预备数据,比如做参数化,生成动态数据,或从文件中读取测试数据等;
  • X2 后置处理器(Post Processors):后置处理器用来处理服务器响应中的数据,比如获取登录后的session_id,后置处理器一般放在采样器之后;

X3 控制器(Logic Controller)

控制器用来控制采样器的执行逻辑,如执行顺序、执行次数等,各种控制器组合在一起,也能完成各种奇葩需求

X4 定时器(Timer)

定时器用来完成集合的功能,比如为了足够真实地模拟用户负载,会需要模拟这些请求在同一个时刻发送,定时器也有很多种类的元件;

X5 线程组(Threads)

线程组用来模拟大量用户负载的情况,可以设置运行的线程数(一个线程一个用户)、运行时长、定时运行等;

2.JMeter运行原理

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

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

  • GUI:图形用户界面运行模式,可视化,更加直观,使用鼠标操作,方便实时查看运行状态,如测试结果、运行线程数等;
  • 非GUI:命令行模式,对负载机的资源消耗更小,GUI模式会影响负载量的生成,比如非GUI模式100个线程可以产生100TPS的负载,而GUI模式只能产生80TPS的负载;

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

  • 本地运行:只运行一台JMeter机器,所有的请求从一台机器发出;
  • 远程运行:一台JMeter控制机(Master)控制远程的多台机器(Slave)来产生负载;

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

远程运行的逻辑

  • 远程机首先启动Agent程序(运行jmeter-server.bat);
  • 控制机连接上远程负载机(修改配置文件,会自动探测并连接);
  • 控制机发送指令(脚本及启动命令)启动线程(参数化文件或依赖包需要手工拷贝到远程负载机);
  • 负载机运行脚本,回传状态(包括测试结果);
  • 控制机收集结果并显示;

3.JMeter的运行逻辑主要是:

  • 采样器模拟用户请求;可使用前置管理器做环境及数据的准备;可使用后置处理器做响应数据的处理;
  • 控制运行:使用线程组来设置运行场景,利用逻辑控制器来控制业务(控制取样器);
  • 收集结果:利用断言来验证测试结果,利用监听器来收集显示测试结果;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值