全栈性能测试修炼宝典-JMeter实战笔记(三)
JMeter体系结构
简介
JMeter是一款开源桌面应用软件,可用来模拟用户负载来完成性能测试工作。
JMeter体系结构
X1~X5是负载模拟的一个过程,使用这些组件来完成负载的模拟
Y1:包含的是负载模拟部分,负责模拟用户请求
Y2:结果验证部分,负责验证结果正确性
Z:负载结果的收集
JMeter基本原理:建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果。
X1取样器:用来模拟用户操作,向服务器发出HTTP请求、WebService请求或者Java请求等。取样器的访问路径:【测试计划】->【线程组】->【Sampler】
X1断言:用来验证结果是否正确,即用一个预设的结果与实际结果匹配。断言的访问路径:【测试计划】->【断言】
X1监听器:收集JMeter的测试结果:(1)添加结果监听,并保存测试结果到文件(2)展示结果。访问路径:【测试计划】->【监听器】
取样器、断言、监听器组合完成发送请求、验证结果、记录结果三项工作。
X2前置处理器:请求发送前环境或者参数的准备工作。访问路径:【测试计划】->【前置处理器】
X2配置元件:完成JMeter的参数化,记录服务器的返回数据。即它为取样器提供预备数据,然后由取样器发出请求。访问路径:【测试计划】->【配置元件】
X2后置处理器:处理服务器的返回结果。访问路径:【测试计划】->【后置处理器】
前置处理器、配置元件、后置处理器都是为取样器提供数据支持的,取样器关注的是业务逻辑。
X3控制器:访问路径:【测试计划】->【线程组】->【逻辑控制器】
X4定时器:为了真实模拟用户负载,需要模拟这些请求在同一时刻发送,定时器具备这种集合的功能。访问路径:【测试计划】->【线程组】->【定时器】
X5线程组:模拟大量用户负载的情况。一线程一用户,通过设置运行的线程数来模拟用户,还可以设置运行时长、定时运行等。访问路径:【测试计划】->【Threads(Users)】
JMeter运行原理:在JMeter中以线程的方式来运行。JMeter支持远程运行。
远程运行逻辑:
(1)远程负载机首先启动Agent程序,待控制机连接
(2)控制机连接上远程负载机
(3)控制机发送指令(脚本及启动命令)启动线程
(4)负载机运行脚本,回传状态(包括测试结果)
(5)控制机收集结果并显示
JMeter测试计划要素:JMeter中一个脚本即是一个测试计划,也是一个管理单元。
(1)要素一:脚本中测试计划只能有一个
(2)要素二:测试计划中至少要有一个线程组
(3)要素三:至少要有一个取样器
(4)要素四:至少要有一个监听器
JMeter与LoadRunner异同:
(1)LoadRunner是性能测试领域的王者,标准制定者;JMeter是后起之秀。
(2)LoadRunner是C语言开发,支持Java、VB、C#;JMeter是纯Java开发,支持多种Java脚本语言。
(3)LoadRunner费用高,JMeter免费;JMeter没有LoadRunner强大的录制功能。
(4)LoadRunner兼容性更好,支持市面上几乎所有的应用的性能测试。
JMeter运行逻辑:
(1)利用取样器模拟用户请求;使用配置管理器做一些数据及环境的准备;使用后置处理器对响应的数据做处理
(2)控制运行;使用线程组来设置运行场景,利用逻辑控制器来控制业务
(3)收集结果,利用断言来验证测试结果,利用监听器来收集显示测试结果