性能测试
就目前来说,很少能见到性能测试的准确定义,但性能测试似乎涉及范围非常广泛的测试。压力测试、负载测试、强度测试、稳定性测试、健壮性测试、大数据量测试等等。。都和性能测试有着密切的关系
狭义的性能测试:主要用于描述常规的性能测试,是指通过模拟生产运行的业务压力或用户使用场景来测试系统的性能是否满足生产性能的需求
广义的性能测试:则是压力测试、负载测试、强度测试、并发(用户)测试、大数据量测试、配置测试、可靠性测试等。。和性能相关的测试统称
压力测试
对系统不断施加压力的测试,是通过确定一个系统的瓶颈或不能接收用户请求性能点,来获得系统提供的最大服务级别的测试。如:测试一个WEB站点在大量的负荷下,系统的事务响应时间何时会变得不可接受或事务不能正常执行
目的:是发现在什么条件下系统的性能变得不可接受,并通过对应用程序施加越来越大的负载,直到发现应用程序性能下降的拐点。
压力测试和负载测试有些类似,但是通常把负载测试描述成一种特定类型的压力测试——例如增加用户数量或延长压力时间以对应用程序进行压力
负载测试
对系统不断的增加压力或增加一定压力下的持续时间,直到系统的一些性能指标达到极限。如:响应时间超过预定指标或某种资源已经达到饱和状态
这种测试可以找到系统的处理极限,为系统调优提供依据
压力测试侧重压力大小,而负载测试往往强调压力持续的时间。但在实际工作中,没有必要严格区分这两个概念
强度测试
主要是为了检查程序对异常情况的抵抗能力。强度测试总是迫使系统在异常的资源配置下进行。如:当正常的用户点击率为“1000次/秒”时,运行点击率为“2000次/秒”的测试用例
强度测试是一种特别重要的测试,对测试系统的稳定性,以及系统未来的扩展空间均具有重要的意义。在这种异常条件下进行的测试,更容易发现系统是否稳定以及性能方面是否容易扩展
疲劳强度测试是一类特殊的强度测试,主要测试系统长时间运行后的性能表现,例如7*24小时的压力测试
并发(用户)测试
主要指当测试多个用户并同时访问同一个应用程序、同一个模块或数据记录时是否存在“死锁”或其他性能问题,几乎所有的性能测试都会涉及并发测试
在具体的性能测试工作中,并发用户往往都是借助工具来模拟的,LoadRunner中称之为并发虚拟用户
大数据量测试
大数据量测试分为两种:
1、一种是针对某些系统存储、传输、统计查询等业务进行大数据量的测试
2、另一种是与并发测试相结合的极限状态下综合数据测试
如:专项的大数据量测试主要针对第一种,第二种尽量放在并发测试中
此外也可以把大数据量测试分为:“运行时大数据量测试”与“历史大数据量测试”来进行测试用例设计
配置测试
主要指通过测试找到系统各项资源的最优分配原则,配置测试是系统调优的重要依据。
如:可以通过不停地调整数据库内存参数来进行测试,使之达到一个较好的性能
可靠性测试
在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定
如:可以施加让CPU资源保持70%~90%使用率的压力,连续对系统加压8个小时,然后根据结果分析系统是否稳定
这么多类型的性能测试看起来很吓人,实际上它们大多是密切相关的。
例如:运行8个小时来测试系统是否可靠,而这个测试极有可能包含了可靠性测试、强度测试、并发(用户)测试、负载测试等等。。
性能测试往往是为了实现下面一个或几个目标:
1、判定软件是否满足预期的性能需求;
2、根据测试结果判定软件的性能表现;
3、查找系统可能存在的性能问题,如果有,则找到并加以解决;
4、发现一些应用程序在功能实现方面的缺陷;
5、对一些存在性能问题的系统,找出瓶颈并加以解决;
6、为用户部署系统提供性能参考;
7、等等。。。