2.性能测试类型或方法
性能测试类型,或者说性能测试方法,业内暂无明确的行业通用分类。这里笔者根据业内资料整理出最常用的,也是最基本的几种测试类型和方法
1 基准测试
基准测试包含两层意思:
① 目的是提供比较基点。通过分析,选取某种业务场景或者系统状态设置作为基准场景,然后得出相关性能指标,作为基准性能指标。
② 比较新的或未知测试对象与已知参照标准(即比较基点)的性能。通过对新对象进行性能测试(场景要求和基准点相同),比对基准点和新情况下的测试结果,从而分析新系统的性能表现,以及更改后对系统的影响
基准测试贯穿性能测试的各个环节,应用场景也较为广泛。
举例:当软件系统中增加一个新的模块的时候,需要做基准测试,以判断新模块对整个软件系统的性能影响。按照基准测试的方法,需要打开/关闭新模块至少各做一次测试。关闭模块之前的系统各个性能指标记下来作为基准(Benchmark),然后与打开模块状态下的系统性能指标作比较,以判断模块对系统性能的影响
2 负载测试
在一定软硬件环境下,通过不断加大负载,观察系统的性能指标。主要作用有两个:
- 确定满足性能指标情况下能够承受的最大用户数。这样可以帮我们对系统进行定容定量,找出系统性能拐点
- 确定系统在预期负载下的性能表现能否满足用户的需求,从而进行性能调优
负载测试是用户观点的测试行为,预期结果是用户的性能需求得到满足。此指标一般体现为响应时间、交易容量、并发容量、资源使用率等。
3 压力测试
压力测试也叫强度测试。关键字就是“极端”。通过对系统的极端加压,从而观察系统所表现出来性能问题,再对此性能问题进行分析,从而达到系统优化的目的。
所以压力测试就是一定要让系统出问题,如果系统没有出问题,那么压力测试的手段和方法就肯定存在问题
在压力测试下。也会得到系统的一些极限性能指标,包括:TPS,ART,CPU Using,Mem Using等
4 稳定性测试
在一定软硬件环境下,长时间运行一定负载,确定系统在满足性能指标的前提下是否运行稳定。
与压力测试区别在于稳定性测试下,负载并不强调在极限状态下。业内通用标准:一般会在满足性能要求的负载情况下加大1.5到2倍的负载进行测试
5 并发测试
通过多个用户同时访问同一个应用或者同一个模块来验证系统的并发能力,观察系统在该并发量的情况下所表现出来的行为特征,确定系统是否满足设计的并发需要。并发测试是系统观点的测试行为
可以验证系统的一些常见设计和编码上的性能问题,如:死锁、数据堆积、连接数不足、假死、内存泄漏、资源恶心竞争等问题
6 其他类型
1) 配置测试:为了合理调配资源,提高系统运行效率,通过测试手段来获取、验证、调整配置信息的过程。通过这个过程,我们可以收集到不同配置反映出来的不同性能,从而为设备选择、设备应用配置提供参考
2) 可恢复测试:测试系统能否快速地从错误状态中恢复到正常状态。比如,在一个配有负载均衡的系统中,主机承受了压力无法正常工作后,备份机是否能够快速地接管负载。可恢复测试通常结合压力测试一起来做
3) 容量测试:即判断系统能否在某个设定容量下,满足对应性能指标的测试。也指当前系统极限状态下(没有出现任何软件故障且主要功能保持正常运行),得到系统的容量。软件容量的测试能让软件开发商或用户了解该软件系统的承载能力或提供服务的能力,举例:某个电子商务网站所能承受的、同时进行交易或结算的在线用户数。知道了系统的实际容量,如是不能满足设计要求,就应该寻求新的技术解决方案,以提高系统的容量。有了对软件负载的准确预测,可以帮助用户经济地规划应用系统,优化系统的部署