性能测试不是简单的“用工具压测系统”,是一套系统的工程方法,为了在系统上线前,通过模拟真实用户行为和并发负载,量化评估系统的性能表现,识别瓶颈,验证其稳定性和扩展性,从而保证系统的用户体验和业务连续性。
“为什么而测?”-性能测试活动希望达成的业务和技术成果。系统能跑多快?能撑多少人?出了问题怎么办?
“测什么?”-为达成上述目标而设计的特定测试活动和方法。我们该模拟哪-种场景来验证目标?
性能测试的五大目标
这五大目标从基本能力验证到极端情况下的韧性评估。
1.能力验证–“系统能胜任吗?”
这是最基本的目标,为了确认系统在特定条件下的性能指标是否满足预设的性能需求规格。
主-要目-的:在给定的硬件、软件和网络环境下,系统能否支持预期的用户负载,并满足关键的响应时间和吞吐量指标?
测试指标:响应时间、吞吐量、资源利用率(CPU、内存、磁盘I/O、网络)是否在可接受范围内。
例:“系统在支持100--0用户并发登录时,95%的请求响应时间应低于2秒,且服务器CPU使用率低于70%。”
2.能力规划–“系统需要多少资源?”
目标关注预测未来,帮助决策者进行容量规划。通过测试,了解系统性能和资源(如服务器数量、CPU主要数、内存大小)之间的关系。
主要目的:当用户数增长50%时,需要增加多少服务器?系统的性能拐点在哪里?
测试指标:系统的扩展性、性能瓶颈、最大容量以及最佳容量区间。
例:通过不断-增压,发现当并发用户达到5000时,系统响应时间急剧上升,此-点即为系统当前配置下的最大容量,为未来扩容提供数据依据。
3.性能调优–“如何让系统跑得更快?”
这是一个迭代和诊断性的目标。通过对比测试,定位性能瓶颈,并评估优化措施的有效性。
主要目的:系统的瓶颈在哪里?是应用代码、数据库查询、中间件配置还是网络问题-?优化后性能提升了多少?
测试指标:瓶颈定位、优化前后的性能对比。
例:发现某个API响应慢,通过优化数-据库索引后,重新测试该API-的响应时间从1.5秒降低到200毫秒。
4.缺陷发现–“系统有哪些性能缺陷?”
为了发现只有在高负载、长时间运行或特殊场景下才会暴露的隐性缺陷,如内存泄漏、资源竞争、线程死锁、连接池耗尽等。
主要目的:系统在压力下是否会崩溃、报错或产生异常行为?
测试指标:系统稳定性、错误率、资源回收机制。
例:进行8小时的耐力测试后-,发-现应用服务器内存持续增长且不释放,存在内存泄漏的缺陷。
5.性能基准–“系统的性能-基线是什么?”
为系统建立一个已知的性能“标尺”或“快照”。这个可用于后续的回归测试(-例-如,每次发布新版本后,和基准对-比-,-确-保性能没有衰退)和跨版本的性能对比。
主要目的:新版本的系统性能是变好了还是变差了?
测试指标:建立可重复的测试场景和标准化的性能指标。
例:V1.0版本在标准负载下,主要事务平均响应时间为0.8秒。V1.1版本-在完全相同环境下测试,该指标变为1.1秒,说明可能存在性能回退,需要排查。
性能测试的五种主要类型
为了达-成上述目标,我们需要执行不同类型的性能测试。每种类型模拟不同的负载场景,揭示不同方面的问题。
1.负载测试
目的:模拟预期或典型的正常生产负载,验证系统在常规压力下的性能表现是否达标。
场景模拟:模拟日常运营时的平均用户并发量。
主要指标:响应时间、吞吐量、事务通过率、资源利用率。所有指标都应在预期范围内。
和目标关联:主要用于能力验证和建立性能基准。
2.压力测试
目的:通过持续增加负载,直至超过系统正常处理能力,从而找-到系统的性-能瓶颈、峰值处理能力和失效点。
场景模拟:模拟“双十一”抢购开始瞬间、票务系统放票时等极端场景。
主要指标:系统在何种负载下性能开始急剧下降、出错或崩溃。最大并发用户-数、系统崩溃点。
和目标关联:主要用于能力规划(找到极限)和缺陷发现(在高压力下暴露问题)。
3.并-发测试
目的:侧重于测试系统是否存在进程、线程或资源竞争方面的缺陷。通过模拟大量用户在同一时刻执行同一或竞争性操作来实现。
场景-模拟:模拟大量用户同时点击-“提交订单”、同时对同一数据进行更新等。
主要指标:错误信息(如死锁、超时)、数据一致性(如库存超卖)。
和目标关联:主要用于缺陷发现。
4.耐力测试/浸泡测试
目的:在一定的压力水平下(通常是正常或稍高的负载),长时间持续运行系统(如8小时、24小时甚至更长),以检查系统-是否存在因长时间运行而积累的问题。
场景模拟:模拟系统在业务高峰期的持续运行。
主要指标:内存泄漏、资源逐渐耗尽、性能随时间推移是否下降、日志文件是否占满磁盘。
和目标关联:主要用于缺陷发现(特别是隐性缺陷)。
5.尖峰测试/冲击测试
目的:测试系统在负载突然、大幅度剧烈增加(-瞬间飙升)情况下的表现和恢复能力。
场景模拟-:模拟促销活动开始、热点新-闻爆发等瞬间流量冲击。
主要指标:系统是否能正常服务而-不崩溃、响-应时间变化、系统在流量高峰过后是否能自动恢复到正常状态。
和目标关联:主要用于缺陷发现和验证系统的弹性和自恢复能力。