全栈性能测试修炼宝典-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)收集结果,利用断言来验证测试结果,利用监听器来收集显示测试结果
全栈性能测试修炼宝典-JMeter实战笔记(三)的更多相关文章
- 全栈性能测试修炼宝典-JMeter实战笔记(二)
性能测试初体验 性能测试实质:利用工具去模拟大量用户操作来验证系统能够承受的负载情况,找出潜在的性能问题,分析并解决:找出系统性能变化趋势,为后续的扩展提供参考 测试分类 测试内容中,负载测试.压力测 ...
- 全栈性能测试修炼宝典-JMeter实战笔记(一)
了解性能测试 性能测试不仅能够定位.分析问题,还要把握系统性能变化趋势:性能测试工程师能够帮助解决性能问题,搞定测试过程中的各种不合理配置,给出专业的优化建议. 第一章 性能方向职业发展 软件测试职业 ...
- 全栈性能测试修炼宝典--Jmeter实战(三)
JMeter体系结构 1.JMeter体系结构 (1)名词解释 元件:JMeter工具菜单中的一个子菜单,比如HTTP请求.事务控制器.响应断言就是一个元件. 组件:一组元件的集合,比如逻辑控制器中有 ...
- 《全栈性能测试修炼宝典JMeter实战》学习记录
说明:原书中jmeter版本为2.x,我的笔记中截图为5.x
- 全栈性能测试修炼宝典--Jmeter实战(二)
性能测试初体验 1.测试分类 从图中可以看出,性能测试在整个软件测试环节中占了50%的内容,比如负载测试.压力测试.性能测试.大数据量测试.恢复测试.内容泄露测试.竞品测试(比较测试)和可靠性测试. ...
- 全栈性能测试修炼宝典--Jmeter实战(一)
性能测试方向职业发展 1.软件测试发展路线 我们可以暂且把软件测试职业路线分为3个方向,分别是业务路线.技术路线.管理路线:4个象限,分别为执行层.中层.中高层过渡.高层. (1)业务路线 常见业务路 ...
- 老男孩python3.5全栈开发第9期+课件笔记(1-15部全 共125天完整无加密)
点击了解更多Python课程>>> 老男孩python3.5全栈开发第9期+课件笔记(1-15部全 共125天完整无加密)大小:236G 此课程为老男孩全栈开发最新完结课程,适合零基 ...
- mysql颠覆实战笔记(三)-- 用户登录(二):保存用户操作日志的方法
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记三之铭文升级版
铭文一级: Flume概述Flume is a distributed, reliable, and available service for efficiently collecting(收集), ...
随机推荐
- C# 中 ConcurrentDictionary 一定线程安全吗?
根据 .NET 官方文档的定义:ConcurrentDictionary<TKey,TValue> Class 表示可由多个线程同时访问的线程安全的键/值对集合.这也是我们在并发任务中比较 ...
- C# 中国日历 农历 阳历 星座 二十四节气 二十八星宿 节日 天干地支
using System; namespace DotNet.Utilities { /// <summary> /// 农历属性 /// </summary> public ...
- 个人MySQL的事务特性原理学习笔记总结
目录 个人MySQL的事务特性原理笔记总结 一.基础概念 2. 事务控制语句 3. 事务特性 二.原子性 1. 原子性定义 2. 实现 三.持久性 1. 定义 2. 实现 3. redo log存在的 ...
- java.lang.NoSuchMethodError的解决办法
开发一个知识图谱在线服务(基于springcloud+vue)构建中医理论的知识图谱构建帕金森的知识图谱提供免费的知识图谱服务,希望能为朋友们的生活.学习.工作提供帮助(敬请期待)PS:关注后,点击头 ...
- 广告计价方式:CPM,CPC,CPA
转自知乎链接:https://www.zhihu.com/question/20416888/answer/15076251 1.CPM 收费最科学的办法是按照有多少人看到你的广告来收费.按访问人次收 ...
- ROS代码经验系列-- tf进行位置查询变换
include文件: #include "tf/transform_broadcaster.h" #include "tf/transform_listener.h&qu ...
- String Boot有哪些优点
a.减少开发,测试时间和努力. b.使用 JavaConfig 有助于避免使用 XML.c.避免大量的 Maven 导入和各种版本冲突. d.通过提供默认值快速开始开发.没有单独的 Web 服务器需要 ...
- 【转载】Vue.nextTick 的原理和用途
对于 Vue.nextTick 方法,自己有些疑惑.在查询了各种资料后,总结了一下其原理和用途,如有错误,请不吝赐教. 概览 官方文档说明: 用法: 在下次 DOM 更新循环结束之后执行延迟回调.在修 ...
- MODBUS_RTU通信协议
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表.Modbus已经成为工业领域通信协议 ...
- Redis缓存篇(二)淘汰机制:缓存满了怎么办?
上一讲提到,缓存的容量总是小于后端数据库的.随着业务系统的使用,缓存数据会撑满内存空间,该怎么处理呢? 本节我们来学习内存淘汰机制.在Redis 4.0之前有6种内存淘汰策略,之后又增加2种,一共8种 ...