
软件测试流程
软件性能测试,说白了就是看看你的系统在各种压力下表现怎么样,会不会卡顿、崩溃或者内存泄漏。
但在实际项目里,大家往往把这几个词混着用,导致沟通成本很高。其实它们分工不同,搞清楚各自测什么、流程怎么走,能省不少事。
一、性能测试到底测什么?
广义的性能测试是个总称,里面包含了好几种测试。它的核心目标就是摸清系统的家底,看看它能不能满足业务要求。
具体来说,主要关注这几个方面:
响应时间:用户点一下,系统多久能反应过来。
吞吐量(TPS/QPS):系统单位时间内能处理多少笔交易或请求。
并发用户数:系统能同时稳定服务多少个用户。
资源利用率:跑起来的时候,CPU、内存这些硬件被吃了多少。
理解了测试目标,我们再来看三种最常见的测试类型。
二、负载测试、压力测试、稳定性测试的区别
负载测试、压力测试和稳定性测试,可以说是性能测试的“三驾马车”,虽然都属于性能测试的范畴,但它们的目标和执行流程有着本质的区别。
1.负载测试:找“上限”
负载测试的目标是找到系统能正常工作的极限。它的方法是逐步增加并发用户或请求量,就像给系统慢慢加砝码,看它到多重的时候开始“吃不消”。通常会用响应时间不超过XX秒等性能指标作为衡量标准,目的是摸清系统的最佳处理能力,发现性能瓶颈。它不关注长时间运行,只关注在当前负载下的表现。
2.压力测试:看“抗揍”
压力测试的目标是评估系统在极端情况下的稳定性和可靠性。它的方法更“暴力”,会持续加压直到系统崩溃或接近崩溃,看它在“高压”下会不会出问题、能不能自己恢复。它的目的是制造问题然后分析原因,看系统在极限压力下的容错和恢复能力。负载测试关注“正常”上限,压力测试则关注“异常”极限。
3.稳定性测试:测“耐力”
稳定性测试的目标是验证系统在长时间运行下的可靠性。它的方法很简单:让系统在一个相对恒定的压力下(通常是接近日常业务高峰的负载),持续运行很长一段时间。目的是发现那些需要长时间才能暴露的问题,比如内存泄漏、连接池耗尽等。常规稳定性测试一般要求持续运行7x24小时,且压力强度通常接近客户现场日常状态。它的目标是确保系统能稳定、持续地提供服务。
三、三种测试的流程差异
它们虽然目标不同,但执行流程大同小异,主要区别在于测试场景的设计和压力的施加方式。
一个标准的性能测试流程通常包含六个步骤:需求分析、计划编写、环境搭建、工具选择、测试执行、结果分析。
1.负载测试:采用阶梯式加压,从低并发开始,每隔几分钟增加一批用户,记录不同负载下的性能指标,直到指标不达标。
2.压力测试:同样采用阶梯式加压,但会一直加压到系统崩溃或接近崩溃,重点关注系统在过载时的错误率、是否宕机、以及能否自动恢复。
3.稳定性测试:采用恒定压力,压力值通常设定为系统日常负载或稍高,然后让系统持续运行24小时、48小时甚至7天,重点关注系统在长时间运行后性能指标有无劣化、有无内存泄漏。
这三个测试方法不是三选一,而是应该根据项目特点组合使用。负载测试:验证系统能不能扛住预期的用户量;压力测试:验证系统在突发流量下会不会彻底崩溃;稳定性测试:验证系统长时间运行会不会“慢性死亡”。
一个完整的性能测试策略,通常建议按先做负载测试确定基准,再做压力测试找到极限,最后做稳定性测试验证耐力的顺序来执行。
标签:性能测试、负载测试