程序员如何做「性能测试」:不是压测,是保障
性能测试是上线前最重要的验证。
不做性能测试,上线就是赌运气。
一、性能测试的类型
1. 基准测试(Benchmark)
在标准环境下测试单个操作的性能。
用于对比优化效果。
2. 负载测试(Load Test)
模拟正常负载,测试系统能否承受。
目标:系统在预期负载下能正常运行。
3. 压力测试(Stress Test)
超过正常负载,看系统的极限在哪里。
目标:找到系统的崩溃点。
4. 浸泡测试(Soak Test)
长时间持续负载,看系统稳定性。
目标:发现内存泄漏、连接耗尽等问题。
二、性能测试的指标
1. 响应时间
- 平均响应时间
- P50/P90/P99 响应时间
- 最大响应时间
2. 吞吐量
- QPS(每秒请求数)
- TPS(每秒事务数)
3. 资源使用
- CPU 使用率
- 内存使用率
- 磁盘 I/O
- 网络 I/O
4. 错误率
- 请求失败率
- 超时率
三、性能测试的步骤
1. 确定目标
- 要测什么
- 目标 QPS 是多少
- 响应时间要求多少
2. 准备环境
- 测试环境要和生产一致
- 数据量要接近生产
3. 设计场景
- 用户行为模型
- 混合场景(读 80% / 写 20%)
4. 执行测试
- 逐步加压
- 记录各项指标
5. 分析结果
- 找到瓶颈
- 分析原因
- 给出建议
四、常用工具
1. JMeter
开源,功能强大,界面友好。
2. Gatling
Scala 编写,报告漂亮,适合 CI 集成。
3. wrk
命令行工具,简单快速,适合快速测试。
4. Locust
Python 编写,可编程,适合复杂场景。
五、性能测试的常见错误
❌ 测试环境不规范
测试环境和生产差太多,测了也没意义。
❌ 测试数据不真实
用假数据测,结果和实际不符。
❌ 只测 happy path
不测边界情况,线上遇到就崩。
❌ 不记录基准
没有基准,怎么知道优化有没有效果?
六、一句话总结
性能测试 = 确定目标 + 准备环境 + 设计场景 + 执行测试 + 分析结果,常用工具 JMeter/Gatling/wrk/Locust。