“你们报告里写的响应时间1.2秒,吞吐量300 TPS,这些数字到底怎么来的?不会是随便填的吧?”
这话我们听过很多次。客户拿到报告,看到一堆指标,心里犯嘀咕:这些数是怎么算出来的?今天就把测量过程拆开讲清楚。

软件指标测试
响应时间,说白了就是从你按下按钮那一刻,到屏幕上完整显示结果那一刻,中间隔了多久。
但“按下按钮”和“显示结果”这个描述太模糊了,测试工具不认。工具认的是时间戳。
我们做测试的时候,会在客户端和服务器之间布一个“探针”。客户端发出请求的瞬间,工具记下一个时间戳;收到服务器返回的最后一个字节时,再记一个时间戳。两个一减,就是这次请求的响应时间。
这个过程不是测一次就完事。一个接口,我们会让它跑几千次、几万次,每次记一个数。然后把这些数从小到大排队,取第95%个位置的值,就是P95响应时间。取第99%个位置的值,就是P99。报告里写的“P95响应时间1.2秒”,意思是100次请求里有95次都在1.2秒以内完成。
为什么不用平均值?因为平均值会骗人。99次都是0.5秒,1次是50秒,平均下来才1秒出头,看起来挺美。但那个等50秒的用户,早就把App卸载了。
吞吐量,通常用TPS表示:每秒能处理多少笔事务。
这个数字怎么来的?简单说,就是压测工具在测试期间,统计成功完成的请求总数,除以测试持续的时间。跑了10分钟,完成了18万笔事务,那TPS就是300。
但这里面有个关键:什么叫“成功完成”?不是服务器返回个200就算成功。得业务逻辑走通了:订单真的创建了、支付真的扣款了、数据真的写进数据库了。我们做测试的时候,会设计一套完整的业务场景,让虚拟用户走完整流程,只有全流程跑通的才算数。
而且TPS不是单独看的。100并发下的TPS和1000并发下的TPS,完全是两个概念。报告里写“300 TPS”,必须同时写清楚“在500并发下”。不写并发量的TPS,等于没说。
并发数,是同一时刻向系统发起请求的虚拟用户数。
这个数怎么模拟?压测工具里有一个叫“线程组”的东西。你设500个线程,每个线程模拟一个用户的行为:登录、浏览、下单、退出。500个线程同时跑起来,就是500并发。
但这里有个坑:并发数不是设多少就是多少。你设了500个线程,如果每个线程做完一步要等3秒(模拟用户思考时间),那实际同时压在服务器上的请求数可能只有几十个。所以专业的测试方案里,会设计“思考时间”和“加压策略”,让并发数真正贴合真实业务场景。
我们通常采用阶梯式加压:从50并发开始,稳定跑10分钟;加到100,再跑10分钟;再加到200、500、1000。每一个台阶都记录响应时间和TPS。这样能看到系统在哪个节点开始“喘不上气”。
CPU、内存、磁盘I/O、网络带宽这些指标,不是靠眼睛看的。
测试执行的时候,服务器上会跑一套监控采集工具。比如Prometheus,每隔几秒抓一次数据,记录下CPU使用率、内存占用、磁盘读写速度。测试结束后,把这些数据拉出来,看峰值、看均值、看趋势。
有个细节:采集频率很关键。如果每5分钟才采一次,可能错过瞬时飙高。我们通常设到10秒甚至5秒一次,确保抓到真实峰值。
原始数据拿到手,不能直接往报告里写。得先做数据清洗,把明显的异常值剔掉。比如某个请求因为网络抖动,响应时间飙到60秒,这种数据如果混进去,会拉高整个平均值。
清洗之后,再做统计分析。响应时间看P95、P99,吞吐量看稳定期的均值,资源利用率看峰值和趋势。报告里的每一个数字,背后都有原始日志和监控曲线撑着。评审专家如果质疑,我们能把原始数据调出来对账。

测试流程
说句实在话,这些指标测出来,靠的不是什么黑科技,就是一套标准化的流程:设计场景、部署工具、执行加压、采集数据、清洗分析、形成报告。每一步都留痕,每一个数字都可追溯。
所以下次拿到报告,别只看结论。翻到附录看看有没有原始数据,扫一眼测试环境写没写清楚,查一下报告编号能不能在官方平台核验。这些细节,比报告封面上的章更能说明问题。
标签:指标测试、软件测试报告