性能测试在不同情况下是有着不同的目的,清楚每次性能测试的目标,能够让我们在开展性能测试的时候更有针对性。
性能测试的目的
1、获取正常请求流量下,系统的各个性能指标:
这是最常见的性能测试目的,常规性能测试通常都有这个需求。在正常压力(无压力)流量下对系统进行性能测试,建立一个可度量的参考标准,为其他测试场景或者调优过程提供对比参考。
常用的性能测试指标包括:
服务响应相关的:平均响应时间,响应时间分布情况,失败率等
资源使用相关:CPU使用,内存,磁盘IO,网络IO等
2、获取系统能够承载的极限容量,以及获得系统的性能瓶颈
系统容量评估因为比较难自动化,所以通常这类需求频率会低一些,可能会周期性评估。通过“拐点法”进行性能测试,逐步增大系统的压力,直到性能指标不可接受或者出现了明显的拐点,从而找到系统的瓶颈点。需要注意的是,压测时的极限并发或者极限每秒处理请求数,一定是以在安全运维的性能标准下为前提。
3、测试系统稳定性:
系统稳定性压测是要知道在各种情况下系统能否稳定运行。造成系统不稳定的情况有:
- 极限的每秒请求数
- 极限的并发数或连接数
- 突发流量高峰
- 长时间的压力流量
- 热点数据请求
- 差网络环境
- 下游模块慢返回、超时或故障假死等
4、性能测试辅助系统参数调整:
需要配合研发,测试在不同系统参数或者部署方案下,系统性能情况的对比。
5、系统性能回归:
在版本升级时,通常需要对比新老版本的性能情况。
什么时候需要开展性能测试?
1、上线新模块/功能,且模块/功能对系统影正常运作影响大时,或者是重大功能的上线;
2、有线上促销活动的需求时:促销活动通常会导致系统流量翻好几十倍,通过性能测试可以得知系统是否足够支撑瞬间峰值流量,并为系统扩容提供依据;
3、线上服务需要扩容时;
4、性能调优后:评估性能调优的效果,进而决定是否还需要重新进行性能优化。