一、性能测试分类
- 性能测试
- 寻求系统在正常负载下的各项性能指标,或者通过调整并发用户数,使系统资源的利用率处于正常水平时获取到系统的各项性能指标
- 一般是业务系统对性能有明确的性能要求的时候,会使用该测试方法
- 负载测试
- 系统在不同负载下的性能表现,通过该项测试可以 寻求到系统在不同负载下的性能变化曲线,从而寻求到性能的拐点
- 一般是对系统做性能评估的时候,用到该方法(性能评估)
- 压力测试
- 系统在高负载下的性能表现,该项性能主要为了寻求系统能够承受的最大负载以及此时系统的吞吐率,通过该测试也可以发现系统在超高负载下是否会出现崩溃而无法访问,以及在系统负载减小后 ,系统性能能否自动恢复
- 验证在高并发情况下,系统的业务功能是否有问题
- 基准测试
- 针对待测系统开发中的版本执行的测试,采集各项性能指标作为后期版本性能的对比
- 验证在系统变更后,系统性能表现的变化情况
- 稳定性测试
- 以正常负载或者高于正常负载来对系统进行长时间的测试,检测系统是否可以长久稳定运行,以及系统的各项性能指标会不会随着时间发生明显变化
- 验证在高并发的下,系统是否能够可靠运行
- 扩展性测试
- 通常用于新上线的系统或者新搭建的系统环境,通过先测试单台服务器的处理能力。然后慢慢增加服务器的数量,测试集群环境下单台服务器的处理能力是否有损耗,集群环境的性能处理能力是否可以呈现稳定增加
二、性能测试的场景
- 业务场景
- 通常指的是系统的业务处理流程,描述具体的用户行为,通过对用户行为进行分析,以划分出不同的业务场景,是性能测试时测试场景设计的重要来源
- 测试场景
- 测试场景是对业务场景的真实模拟,测试场景的设计应该尽可能贴近真实的业务场景,有时候由于测试条件的限制,可以适当做一些调整和特殊的设置等
- 单场景
- 指的是只涉及单个业务流程的测试场景,目的是测试系统的单个业务处理能力是否达到预期,并且得到系统资源利用正常情况下的最大TPS,平均响应时间等性能指标
- 混合场景
- 测试场景中涉及多个业务场景,并且每个业务流程在混合的业务流程中占的比重会不同,该比重一般根据实际的业务流程来设定,尽可能符合实际的业务需求。该测试场景的目的是为了测试系统的混合业务处理能力是否满足预期要求,并且评估系统的混合业务处理容量最大能达到多少
三、常见的性能测试指标
- 响应时间
- 在性能测试中,一般统计的是事务处理的响应时间
- TPS/QPS
- TPS:系统每秒能够处理的交易和事务数量,一般统计的是每秒处理的事务数
- QPS:是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准
- 并发用户
- 就性能指标而言,系统的并发用户数是指系统可以同时承载的、正常使用系统功能的用户总数量
- PV/UV
- PV:一般是衡量电子商务网站性能测试容量的重要指标。PV的统计可以发为全天PV,每小时的PV以及峰值PV(高峰期1小时的PV)
- UV:可以分为全天UV\每小时UV以及峰值UV(高峰1小时的UV)
- 点击率
- 该指标反映了客户每秒向服务端提交的请求数。在性能测试中,我们一般不发起静态请求,所以hit通常是指的动态请求。
- 吞吐率
- 从业务角度:吞吐量可以用请求数/s,页面数/s等来进行衡量计算
- 从网络角度:吞吐量可以用字节/s来进行衡量计算
- 从应用角度:吞吐量指标反映的是服务器承受的压力,即系统的负载能力
- 资源开销
- 在性能测试中,资源的开销是一个可以量化的概念,资源的开销情况对性能指标有着重要的影响,我们一般做性能优化时,都是尽可能让每一个请求或者事务对系统资源的消耗少到最小
四、性能测试的目标
- 了解系统的各项性能指标,通过性能压测来了解系统能承受多大的并发访问量、系统的平均响应时间是多少、系统的TPS是多少等
- 发现系统中存在的性能问题,常见的性能问题如下
- 系统中是否存在负载均衡不均的情况
- 系统中是否存在内存泄漏问题
- 系统中是否存在连接泄漏问题
- 系统中是否存在在线安全问题
- 系统中是否存在死锁问题
- 系统中是否存在网络架构或者应用架构扩展性问题
- 发现系统的性能瓶颈在何处