软件性能测试的绩效标准是测量系统在特定负载下表现的科学和工程的结合。这些标准共同组成了考虑系统性能、容量和稳定性的多方面,不是单一数据可以概括。
一、重要绩效:从用户感知到系统资源
性能绩效一般分为三大方面:用户感知标准(外部效果)、系统资源标准(内部消耗)和业务处理标准(容量和效率)。
用户感知标准快不快,稳不稳
响应时间
定义:从客户端发起请求到接收到-最-后一个响应字节所经历的总时间。是所有性能标准中和用户体验最直接相关的一个。
分析:
百分位数:平均响应时间具有欺骗性,必须分析P50(中位数)、P90、P95、P99。如,P99响应时间为2秒,意味着99%的用户请求在2秒内完成,最慢的1%请求可能长达10秒,这揭示了尾部延迟对部分用户的-极-端影响。
细分组成:完整的响应时间应进一步拆解为网络时间(DNS分析、TCP握手、SSL握手、数据传输)和应用服务器处理时间。使用APM工具可以精确测量。
标准参考:对于Web页面,一个广泛接受的用户体验标准是:<1秒(感觉流畅),1-3秒(可接受),>3秒(用户开始焦虑),>10秒(用户很可能离开)。
吞吐量
定义:单位时间内系统成功处理的请求、事务或数据量。
深入分析:
常见度量单位:请求数/秒,事务数/秒,页面数/秒,或数据量/秒。
和响应时间的关系:在系统达到短板前,吞吐量一般随并发用户数增加而线性增长,同时响应时间保持平稳。当系统资源饱和时,吞吐量达到峰值并可能开始下降,而响应时间则会急剧上升。找到这个拐点(最大有效吞吐量) 是性能测试的目的之一。
意义:反映系统的整体处理能力和业务容量。
系统资源标准短板在哪里
这些标准揭示了系统内部健康状况,用于定位性能短板的原因。
CPU利用率
分析:重视重要使用率、用户态/内核态时间比以及运行队列长度。不断高于80%的利用率可能表示CPU是短板,但需结合上下文:对于计算密集型应用,高利用率是正常的;对于I/O密集型应用,高利用率可能意味着低效的轮询或阻塞。
内存利用率
分析:需区分已用内存、缓存/缓冲内存、可用内存。高内存使用率不一定是问题,但需要警惕页面交换或内-存泄漏(即使在没有负载的情况下,内存使用率也不断增长)。
磁盘I/O
分析:重点标准包括IOPS(每秒读写操作数)、吞吐量和响应时间。磁盘队列长度不断增长一般意味着磁盘子系统已成为短板。在云环境和SSD普及的今天,需要更多重视IOPS限制和延迟。
网络I/O
分析:监控带宽使用率、数据包速率、错误率和重传率。网络延迟和带宽可能成为分布式系统或微服务架构的短板。
业务处理标准好不好,对不对
这些标准将技术性能和业务作用联系起来。
每秒事务数
定义:单位时间内系统成功完成的特定业务事务数量,如“登录”、“下单”、“支付”。
分析:这是吞吐量在业务方面的具体化,是测量系统业务处理能力的重要标准。需要确定定义事务的边界和成功条件(必须包含业务证实)。
事务成功率
定义:成功完成的事务数占总事务数的百分比。
分析:在高压下,系统可能产生超时、错误或功能异常。99.9%的成功率意味着每1000次事务就有1次失败。
并发用户数
定义:
系统级并发:同一时刻向服务器发起请求的虚拟用户数。
业务级并发:同时在线并使用系统的用户数(可能处于思考状态)。
分析:性能测试中一般指系统级并发。需要区分峰值并发和平均并发。测试目的一般是找出在可接受响应时间下,系统能支持的最大并发用户数。
二、性能模型
这些标准通过一个性能模型相互关联:
利特尔法则描述了它们之间的数学关系:系统中的平均请求数 = 平均吞吐量 × 平均响应时间。
在稳定状态下,要提高系统处理能力(吞吐量),要么减少响应时间,要么允许系统同时处理更多请求(增加并发)。
三、稳定性、可扩展性和异常表现
对于企业级系统,以下标准同样非常重要:
错误率:HTTP状态码非2xx/3xx的比例,或应用层自定义错误码的比例。
资源泄漏:在长时间压力测试(耐力测试)中,观察CPU、内存等资源使用是不是随时间不断增长。
恢复时间:系统从故障(如服务重启、网络中断)中恢复到正常性能水平所需的时间。
可扩展性因子:通过增加硬件资源(如CPU重要数、服务器节点数),系统性能(吞吐量)提升的比例。理想的线性扩展是增加一倍资源,性能提升一倍。
四、性能测试实施框架
设定确定的性能目的(SLA/SLO):在测试开始前,就必须根据业务需求定义每个重要绩效的目的值和阈值。如:“在1000并发用户下,登录接口P99响应时间应≤1.5秒,TPS不低于200,且错误率<0.1%”。
执行多方面测试:
标准测试:确定单用户下的性能基线。
负载测试:在典型负载下证实是不是达到SLA。
压力测试:逐步增加负载,找到系统的性能拐点和极限。
耐力测试:在高压下不断运行数小时甚至数天,检查稳定性和资源泄漏。
尖峰测试:模拟负载瞬间暴涨,检验系统的弹性。
监控、分析和调优:使用分布式追踪、APM和基础设施监控工具,在测试过程中同步采集所有方面的绩效。分析它们之间的相关性,定位根本原因,并形成“测试->分析->调优->再测试”的流程。