软件性能测试过程详解与案例分析(段念 编著) 学习笔记四
1.性能测试 Performance Testing
通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。
①目的是验证系统是否具有系统宣称具有的能力;
②需要事先了解被测试系统典型场景,并具有确定的性能目标;
③要求在已确定的环境下运行;
2.负载测试 Load Testing
通过在被测系统上不断增加压力,直到性能指标超过预定指标或者某种资源使用已经达到饱和状态;
①目的是找到系统处理能力的极限;“检测—加压—直到性能指标超过预期”
②需要在给定的测试环境下进行,通常也要考虑被测系统的业务压力量和典型场景,使得测试结果具有业务上的意义;
③一般用来了解系统的性能容量,或是配合性能调优来使用;
3.压力测试 Stress Testing
测试系统在一定饱和状态下,例如CPU、内存等在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误;
①目的是检查系统处于压力情况下时,应用的表现;
②一般通过模拟负载等方法,使得系统的资源使用达到较高的水平;
③一般用于测试系统的稳定性;
4.配置测试 Configuration Testing
通过对被测系统的软/硬件环境的调整,了解各种不同环境对系统性能影响的程度,从而找到系统各项资源的最优分配原则;
①目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作;
②一般在对系统性能状况有初步了解后进行;
③一般用于性能调优和规划能力;
5.并发测试 Concurrency Testing
通过模拟用户的并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题;
①目的是发现系统中可能隐藏的并发访问时的问题;
②主要关注系统可能存在的并发问题,例如系统中的内存泄露、线程锁和资源争用方面的问题;
③可以在开发的各个阶段使用,需要相关的测试工具的配合和支持;
6.可靠性测试 Reliability Testing
通过给系统加载一定的业务压力(例如资源在70%-90%的使用率)的情况下,让应用持续运行一段时间,测试系统在这种条件下是否能够稳定运行;
软件可靠性一般用“平均无故障时间(MTBF)”或者“失效率”来衡量;由于MTBF中的时间概念一般被定义为“CPU时间”,因此,可以大致认为,如果在CPU处于较大压力下运行一段时间,则“等同”于让系统在压力小的情况下较长时间运行,因此,通过在压力环境下进行测试,可以看成是一种“压缩时间的测试方法”;
①目的是验证系统是否能够支持长期稳定的运行;
②需要在压力下持续一段时间的运行;(一般2-3天的稳定性测试就可以了)
③测试过程中需要关注系统的运行状况;
7.失效恢复测试 Failover Testing
针对有冗余备份和负载均衡的系统设计的;这种测试方法可以用来检验如果系统局部发生故障,用户是否能够继续使用系统;以及如果这种情况发生,用户将受到多大程度的影响;
①目的是验证在局部故障情况下,系统能否继续使用;
②这种测试方法还需要指出,当问题发生时,“能支持多少用户访问”的结论和“采取何种应急措施”的方案;
③一般来说,只有对系统持续运行指标有明确要求的系统才需要进行这种类型的测试;