性能测试”测完了”和”测对了”是两件事。一份性能报告若只写”TPS 800、平均响应 200ms、测试通过”,对于真实生产环境几乎没有参考价值。性能问题在测试阶段最常以认知错误的形式埋下:把并发用户当作 TPS、用平均值掩盖长尾、用一台施压机扛全链路、用一万行数据测千万行系统。本文按 GB/T 25000.51-2016 性能效率特性(时间特性、资源利用性、容量)的视角,逐条拆解 8 个高频误区,并给出客观指标对照表与可落地的 5 阶段方法。
一、性能测试到底在测什么:回到国标定义
在讨论误区之前,需要先回到标准。GB/T 25000.51-2016《系统与软件工程 系统与软件质量要求和评价(SQuaRE)第 51 部分:就绪可用软件产品(RUSP)的质量要求和测试细则》将”性能效率”作为八大质量特性之一,下分三个子特性:
- 时间特性(Time behaviour):响应时间、处理时间、吞吐率。
- 资源利用性(Resource utilization):CPU、内存、磁盘、网络等资源占用量与上限。
- 容量(Capacity):在规定条件下可处理的数据量、用户量、事务数上限。
这三个子特性之间是相互约束的:吞吐率高了不一定好,要看响应时间是否仍在 SLA 内、资源利用率是否还有余量、是否达到了容量上限。一份合格的性能报告必须三者并列,缺一不可。
二、8 个最高频的性能测试误区
误区 1:把”并发用户数”等同于”TPS”
这是最普遍的认知错误。并发用户数(Concurrent Users)是同一时刻在系统中活跃的用户数;TPS(Transactions Per Second)是每秒完成的事务数。两者之间通过”思考时间 + 单次事务时长”换算,并非等量关系。
举例:1000 个并发用户,每用户平均 30 秒发起一次事务,TPS 仅约 33;同样 1000 并发,思考时间为 0、单事务 0.1 秒,TPS 可达近 10000。报告里只写”支持 1000 并发”而不写 TPS 与思考时间,结论无法复现。
误区 2:只看平均响应时间不看 P95/P99
平均值会被极少数极快请求拉低,掩盖长尾延迟。真实用户感知到的卡顿、超时、流失,几乎都发生在 P95 之外的长尾区域。一个 TPS 1000、平均 150ms 的系统,若 P99 已经到 4 秒,就意味着每 100 个用户里有 1 个直接体验到”卡死”。
正确做法:报告中至少同时给出 P50(中位数)、P95、P99 三个分位值,必要时附 P99.9。SLA 的承诺也必须以分位数为载体,例如”P95 < 500ms、P99 < 1.5s”。
误区 3:单台施压机测全系统性能
施压机本身受 CPU、网络带宽、文件句柄数、本机端口数(约 65535)的限制。当并发上千、TPS 上万时,施压机自身就会成为瓶颈,表现为:被测系统资源利用率不高,但 TPS 上不去、响应时间却显著上升。此时再加压力,测出的其实是施压机自己的极限。
正确做法:
- 压测前测算施压机理论上限(带宽、端口、CPU)。
- 大规模压测必须分布式部署,主控 + 多台从机。
- 压测中同步监控施压机自身资源,若 CPU > 70% 或网卡满载,结论无效。
误区 4:忽略思考时间(Think Time)
真实用户不会”点完一个按钮立即点下一个”,存在阅读、思考、输入等间隔,即思考时间。把思考时间设为 0,等于让所有用户用机器人速度无间歇刷接口,测出来的并发数会被严重高估,TPS 则被人为压低真实并发的需求。
建议:根据真实埋点统计平均操作间隔,或用 1~3 秒、3~10 秒等随机区间模拟。报告中必须明确写出思考时间设置,否则数据不可比。
误区 5:测试数据量级与生产严重不符
10 万行表上的查询走索引一切正常,1000 万行时索引选择性下降、缓存命中率变化、查询计划被重写,性能可能断崖式下跌。数据量级是性能测试的隐性变量,常被采购方和供应商共同忽视。
正确做法:测试库的数据量、表结构、索引、数据分布(特别是基数、热点 Key)应与生产同量级或同比例。冷数据、温数据、热数据的分布也需要还原,不能全部是新写入的”热缓存”。
误区 6:只压”接口”不压”业务全链路”
单接口压测往往很漂亮,但用户的真实业务路径通常包含登录、鉴权、查询、下单、支付、回调多个步骤,跨多个服务与数据库。接口性能好不等于用户体验好。链路上任一节点的抖动、限流、外部依赖(短信、第三方支付、对象存储)都会拖累整体。
正确做法:除单接口基准外,还要定义至少 3~5 条核心业务链路(“完成一次下单”“完成一次报名”等),按真实业务比例混合施压,并把外部依赖按真实 SLA 模拟。
误区 7:单点测试不做长稳测试
很多性能问题在压测开始的前 30 分钟看不出来:内存泄漏、连接池耗尽、慢日志堆积、磁盘填满、缓存击穿、定时任务冲突,几乎都需要数小时到数十小时才能暴露。只跑 15 分钟就出报告,不能称之为合格的性能测试。
建议:在核心业务混合模型下,至少跑 8 小时(一个工作日)压测,关键系统跑 24/72 小时长稳。期间监控内存增长曲线、GC 频率、连接池占用、慢 SQL 趋势。
误区 8:报告里只给 TPS 不给 SLA 对应
”TPS 1500”是数字,不是结论。脱离业务 SLA(响应时间承诺、可用性承诺、错误率承诺)的性能数字,没有商业判断价值。采购方拿到报告无法回答:”这个系统能不能支撑我们 618 大促 / 高考填报开放日 / 月末结算高峰?”
正确做法:报告首页须有”SLA 达成对照表”,列出每条业务链路在目标并发下的 P95/P99、错误率、资源利用率是否满足 SLA,并明确容量上限点(在哪个 TPS 之后某项指标开始劣化)。
三、客观指标 5 大对照表
下表是常见性能指标的定义、含义与行业基线参考。基线值只用于”快速判断量级”,具体阈值需结合业务场景与 SLA。
| 指标 | 定义 | 行业基线参考 | 测量方法 |
|---|---|---|---|
| TPS / QPS | 每秒完成的事务 / 查询数 | Web 业务接口单实例 200~2000;缓存型查询可达 5 万+ | 压测工具统计 + 服务端访问日志交叉校验 |
| 并发用户数 | 同一时刻活跃的用户会话数 | 与 TPS 通过思考时间换算,需独立报告 | 压测工具按 Ramp-up 曲线递增 |
| 响应时间 P50/P95/P99 | 响应时间分位值 | C 端 Web P95 < 1s、P99 < 3s;B 端可放宽至 P95 < 3s | 客户端打点 + 服务端打点双侧采集 |
| 错误率 | 非 2xx / 业务失败的请求占比 | SLA 通常要求 < 0.1%~0.5% | 压测工具 + 后端日志聚合 |
| 资源利用率 | CPU / 内存 / 磁盘 IO / 网络带宽占用 | 稳态运行 CPU < 70%、内存 < 80%、磁盘 IO 队列 < 5 | Prometheus / 主机监控 / 容器指标 |
四、性能测试 5 个阶段:从基准到失效
- 单接口基准测试:每个核心接口在轻压(10~50 并发)下测出”理想响应时间”和”单实例 TPS 上限”,作为后续对照基线。
- 容量探底测试:阶梯式加压(如每 5 分钟加 100 并发),找到 TPS 拐点和首个 SLA 破线点,确定系统当前容量。
- 业务混合压测:按真实业务模型混合多条链路按比例发压,得到”业务画像下的性能上限”。这是给采购方最有参考价值的数据。
- 长稳测试:在 70% 容量下持续 8~72 小时,观察内存泄漏、连接池、GC、慢查询、磁盘占用变化趋势。
- 异常恢复(FailOver)测试:人为关闭一个节点、断开数据库主从、限速依赖服务,验证系统降级、重试、熔断、切换的正确性与恢复时间(RTO/RPO)。
五、工具简介:开源与商业并存
| 工具 | 类型 | 典型场景 | 授权 |
|---|---|---|---|
| JMeter | 开源 | HTTP/数据库/JMS 通用压测,社区生态成熟 | Apache 2.0 |
| Gatling | 开源 | 高并发 HTTP 压测,DSL 脚本,资源消耗低 | Apache 2.0 / 企业版 |
| k6 | 开源 | JS 脚本,CI/CD 集成友好,云端 SaaS 可选 | AGPL / 企业版 |
| LoadRunner | 商业 | 大型企业级、协议覆盖广,金融/电信常用 | 商业授权 |
开源工具完全可以胜任绝大多数业务场景,商业工具的优势在协议覆盖(如 Citrix、SAP GUI 等遗留协议)、合规审计与厂商支持。工具不决定结论质量,方法论决定结论质量。
六、一份合格的性能测评报告至少要有这 7 项
- 测试目的与 SLA:明确写清业务承诺与可接受阈值。
- 测试环境拓扑:服务器配置、网络结构、被测系统版本、施压机部署方式。
- 测试模型:业务链路、并发模型、思考时间、数据量级、Ramp-up 策略。
- 核心指标结果:TPS、响应时间分位值、错误率、资源利用率,按场景分组列出。
- SLA 达成对照表:每条业务链路是否满足 SLA,破线点在哪。
- 问题列表与定位:长尾原因、瓶颈定位(CPU/IO/锁/GC/慢 SQL)。
- 优化建议与复测计划:可执行的改造建议与下一轮回归基线。
七、写给采购方与开发方的话
对采购方:拿到性能报告后,先看 SLA 达成对照表,再看测试模型是否贴近你的真实业务,不要被首页的大 TPS 数字误导。如果报告没有 P95/P99、没有思考时间、没有数据量级说明、没有长稳曲线,请打回重测。
对开发方:性能测试不是上线前的”过场”,而是设计、容量规划、SLA 制定的依据。把性能测试纳入研发流水线,每个版本跑一次基准对比,远比上线后救火便宜。第三方机构的价值是客观、可复现、可追溯,而不是”出一份漂亮报告”。
新亿诚作为深圳本地的第三方软件测评机构,参考 GB/T 25000.51-2016 出具性能效率测评报告,覆盖政企信息系统、SaaS 平台、移动端 App、信创替代验证等场景。如需性能测试方案设计或报告评审,欢迎联系我们沟通具体业务画像与测试目标。
具体的软件测试报告用途与报价咨询可直接联系顾问,1 小时内回电沟通。新亿诚作为持有 CMA + CNAS + ilac-MRA 国际互认协议的第三方软件测评机构,可为您提供本文场景下的检测服务。