全栈性能测试修炼宝典-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(收集), ...
随机推荐
- C4 模型 - 可视化架构设计
前言 世界上最难的两件事是: 1. 把我的思想放进你的脑袋 2. 把你的钱放进我的口袋 第二点我们不探讨,因为这是众所周知的,不信?过来试试:) 对于第一点,对我们程序员来说,其实也是我个人一直强调的 ...
- jquery 局部刷新load 某个div或者某个表格
在使用 ajax 进行删除用户操作的时候,可以在 success 里写一个 window.location.reload(); 让页面刷新. 但是,我不想那样,我只想局部刷新 比如,我删除几个用户后, ...
- 使用CodeSmith编写ADO.Net三层
说明 自本文发布日起,发现和完善了编写的CodeSmith几处代码. 故,不再直接在文章添加代码,最新代码参见GitHub https://github.com/catbiscuit/CodeSmit ...
- Java“微服务”还能这么玩!
"微服务"加个引号是因为这不是传统定义的微服务架构,顶多算是"小服务"架构,因为服务实例由集群节点统一加载,非独立部署.下面以图说明一下服务调用流程. 一. ...
- JVM笔记【1】-- 运行时数据区
目录 (一)java内存区域管理 1.1 程序计数器 1.2 虚拟机栈 1.3 本地方法栈 1.4 java堆 1.5 方法区 1.5.1 运行时常量池 (二)直接内存 (一)java内存区域管理 C ...
- list转long[]数组
//list转long数组List<Long> list = new ArrayList<>(); Long[] skuIds = list.toArray(new Long[ ...
- 简单的xml数据库设计
我的需求 有时候系统需要存储一些简单的关系型属性,不考虑并发,不考虑性能(一次操作在几ms),数据库没有其他依赖引用,拿过来就可以用 为什么选xml作为数据库? 可读性好 实体的对应关系不严格 , 二 ...
- Python & Matplotlib: Monte Carlos Method
Hey! 这里是Lindy:) Hope you guys are doing well! 今天想记录的概念叫做 蒙特·卡罗 方法,是今年在cs课上老师做的扩展延伸.其实我在初次接触这个概念时觉得很新 ...
- java nio中,HeapByteBuffer与DirectByteBuffer的区别
HeapByteBuffer,顾名思义,是写在jvm堆上面的一个buffer,底层的本质是一个数组,用类封装维护了很多的索引(limit/position/capacity等) DirectByteB ...
- Android多activity启动两种方式浅谈
(1)第一种方式就是常见的通过intent来启动,被启动的activity需要在mainfest里面注册activity (2)第二种就是通过setContentView来启动,这里activity不 ...