1. 什么是性能测试
性能测试时通过压测根据(Jmeter, Loadrunner),通过特定方式,对系统施加一定的压力:正常、异常负载以及峰值,得到各项性能指标、保证系统的性能需求。
价值和目的:
1. 评估系统的能力;
2. 识别系统的弱点、瓶颈;
3. 检查系统的隐藏问题;
4. 检验系统的稳定性和可靠性。
2. 性能测试指标
1. 虚拟用户数:线程=用户
2. 并发数:指在某一时间,一定数量的虚拟用户同时对系统的某个功能进行交互,一般通过集合点实现。
3. 事务:一个接口可以时事务,多个接口也可以时事务,一个流程也可以是事务,事务代表一个完整的功能,由测试人员决定。
4. 场景:性能测试的用例。
5. 响应时间 RT:Response Time
5.1 平均响应时间
5.2 中位数
5.3 90%
5.4 95%
5.5 99%
5.6 基准测试:1个用户请求接口,200-500 ms
5.7 压力测试:N 个用户并发请求接口, 2秒
6. TPS:每秒事务数,表示系统每秒能处理的事务(事务通常指一组原子性操作,如银行转账)。
Transactions per second
计算公式:总的事务数 / 总的运行时间
比如:某一个系统1分钟处理 1000 个事务,那么 TPS = 1000/60 = 16.7
7. QPS:每秒查询数,表示系统每秒能够处理的请求(一般指 查询类请求,如接口请求、SQL查询)。一般情况下 TPS <= QPS
8. 吞吐率:系统在单位时间内处理的数据量(比如 MB/s,文件下载、视频流场景常用)。
9. 资源利用率:服务器:CPU、内存、磁盘、网络
| CPU 使用率 | 系统 CPU 占用百分比,重点关注是否接近 100%。 |
| 内存使用率 | 系统内存消耗情况,是否存在内存泄漏或溢出。 |
| 磁盘 I/O | 读写速率(MB/s)、I/O 等待时间。 |
| 网络带宽 | 网络上传/下载流量,是否成为瓶颈(单位:Mbps、KBps)。 |
| 连接数 | 系统同时打开的网络连接数(Web 服务、数据库连接池常关注)。 |
3. 性能测试流程
3.1 需求分析及需求制定(指标值、场景、环境、人员)
3.2 性能测试计划和方案制定
| 类型 | 目标 | 测试方式 | 重点指标 |
|---|---|---|---|
| 基准测试 (Benchmarking) | 确定系统在标准条件下的性能基线 | 在固定、理想负载下运行,记录响应时间、吞吐量等,作为后续优化和比较的基线 | 吞吐量 (TPS/QPS)、响应时间 |
| 负载测试 (Load Testing) | 检查系统在期望负载范围内是否正常运行 | 持续增加负载(用户数/请求数)到业务期望值,观察是否还能正常服务 | 吞吐量、响应时间、错误率 |
| 压力测试 (Stress Testing) | 评估系统在超负荷情况下的极限能力 | 持续超出预期负载直到系统崩溃,观察系统的极限承载能力和崩溃恢复能力 | 最大并发、崩溃点、资源利用率 |
| 稳定性测试 (Soak / Endurance Testing) | 检查系统在长时间运行后的稳定性 | 在正常负载下运行长时间(几小时~几天),观察是否有内存泄漏/性能下降等问题 | 内存占用、CPU负载、错误率增长趋势 |
3.3 性能测试准备
3.4 性能测试执行
5. Jmeter
5.1 逻辑控制器:事务控制器、仅一次控制器、吞吐量控制器
| 控制器 | 作用 | 典型用途 |
|---|---|---|
| 事务控制器 | 统计整体事务耗时 | 多接口组成一个业务流程 |
| 仅一次控制器 | 只执行一次 | 用户登录一次,后续循环业务操作 |
| 吞吐量控制器 | 控制执行比例 | 模拟不同业务请求的流量占比 |
5.2 定时器
5.3 同步定时器(集合点)
📖 定义:
-
它会让一定数量的线程先等待,然后同时释放,实现“并发冲击”的效果。
-
本质上就是模拟多个用户在同一时间点一起访问系统的场景。
✅ 关键点:
-
等待线程达到设定数量 → 一起放行。
-
如果线程数没达到要求,等待时间到了,也会把已有线程一起放行。
| 参数 | 说明 |
|---|
| Number of Simultaneous Users | 同时释放的线程数,达到后触发。 |
| Timeout (可选) | 等待的最长时间(毫秒)。超时后即使没满员也会释放当前已有的线程。 |
总结
|
作用 | 使用场景 |
|---|---|
| 控制线程同时发起请求 | 模拟并发登录/抢购高峰 |
| 检查后端瞬时承载能力 | 压测接口瓶颈、瞬时流量冲击 |
4. Jmeter 插件的安装及监控的使用
1. 下载一个插件管理包 jmeter-plugins-manager.jar,放到 Jmeter 的 lib/ext 目录下,重启 Jmeter,就有了插件管理
PerfMon Metrics Collector 使用原理:
1. 需要在服务器安装一个 SeverAgent.zip,用于手机服务器的性能参数
2. 在 PerfMon Metrics Collector 组件中通过 4444 端口取捕服务器性能参数
监控图的作用:
1. 看趋势,找性能拐点
2. 写性能测试报告
5. 实际性能压测的场景设置
场景:性能测试用例
1. 旧系统来自于运维
2. 新系统来自于合理预估
服务器(集群)和压力机(集群)
1. 单接口基准测试:使用一个用户测试接口 5 分钟
目的:为了在没有任何压力的情况下查看各项性能指标
2. 单接口负责测试:通过逐渐的对一个接口进行施压直到出现性能拐点,获得被测接口的最大处理能力以及它的相关的性能指标。
3. 混合负载压测场景:目的是为了验证整个业务的最大的最优的性能体现。重点在于模型的设计。模型来源于数据。

- This group will start: 启动多少个线程
- First wait for 等待多少秒才开始,一般为 0
- Then start 一开始有多少个线程数,一般为 0
- Next add threads every using ranm-up: 每多少秒启动多少个虚拟用户数,每组数据持续运行多少秒
- Then hold load for 全部加载完毕后,负载运行多少秒
- Finally stop threads every 每一秒停止 X 个虚拟用户
4. 压力测试场景:验证系统的极限。直到有任何一个性能指标超出预期。
5. 稳定性测试场景:在压力测试的场景下持续运行 4-24 个小时。
5. 无界面压测
1. 节约系统资源
2. 更便捷,只需要启动命令即可进行压测
3. 主要是用于性能压测集成
-n 无界面压测
-t 指定 jmx 脚本
-l 生成 jtl 测试报告
-e -o 直接生成报告
-r 表示启动所有远程压力机进行压测
-R 指定特定的远程压力机进行压测,多台用 , 隔开

被折叠的 条评论
为什么被折叠?



