性能测试

系统的性能是一个很大的概念,覆盖面非常广泛,软件系统的性能包括执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性等。

性能测试是为描述测试对象与性能相关的特征并对其进行评价而实施和执行的一类测试。性能测试主要通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

通常把性能测试、负载测试、压力测试等统称为性能测试。    

负载测试

负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的前提下,系统所能够承受的最大负载量的测试。

简而言之,负载测试是通过逐步加压的方式来确定系统的处理能力和能够承受的各项阈值。例如,通过逐步加压得到“响应时间不超过10秒”、“服务器平均CPU利用率低于85%”等指标的阈值。    

压力测试 

压力测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态来获得系统能提供的最大服务级别的测试。压力测试是逐步增加负载,使系统某些资源达到饱和甚至失效。    

配置测试

配置测试主要是通过对被测试软件的软硬件配置的测试,找到系统各项资源的最优分配原则。配置测试能充分利用有限的软硬件资源,发挥系统的最佳处理能力,同时可以将其与其他性能测试类型联合应用,从而为系统调优提供重要依据。    

并发测试

并发测试是测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,所以几乎所有的性能测试都会涉及一些并发测试。因为并发测试对时间的要求比较苛刻,通常并发用户的模拟都是借助于工具,采用多线程或多进程方式来模拟多个虚拟用户的并发性操作。    

容量测试

容量测试是在一定的软、硬件条件下,在数据库中构造不同数量级的记录数量,通过运行一种或多种业务场景,在一定虚拟用户数量的情况下,获取不同数量级别的性能指标,从而得到数据库能够处理的最大会话能力、最大容量等。系统可处理同时在线的最大用户数,通常和数据库有关。    

可靠性测试

可靠性测试是通过给系统加载一定的业务压力(如CPU资源的使用率在70%~90%时)的情况下,运行一段时间,检查系统是否稳定。因为运行时间较长,所以通常可以测试出系统是否有内存泄露等问题。

在实际的性能测试过程中,也许用户经常会碰到要求7 ×   24小时稳定运行的系统性能测试需求,对于这种稳定性要求较高的系统,可靠性测试尤为重要,但通常一次可靠性测试不可能执行1年时间,因此在多数情况下,可靠性测试是执行一段时间,如24小时、3   × 24小时或7 × 24小时来模拟长时间运行,通过长时间运行的相关监控和结果来判断能否满足需求,平均故障间隔时间(MTBF)是衡量可靠性的一项重要指标。    

失败测试

对于有冗余备份和负载均衡的系统,通过失败测试来检验如果系统局部发生故障,用户能否继续使用系统,用户受到多大的影响,如几台机器做均衡负载,一台或几台机器垮掉后系统能够承受的压力。    

并发

并发分为狭义和广义两类。

  • 狭义并发即所有的用户在同一时刻做同一件事情或操作,这种操作一般针对同一类型的业务,或者所有用户进行完全一样的操作,目的是测试数据库和程序对并发操作的处理。

  • 广义并发即多个用户对系统发出了请求或者进行了操作,但是这些请求或操作可以是不同的,但对整个系统而言,仍然是有很多用户在同时进行操作。

狭义并发强调对系统的请求操作是完全相同的,多适用于负载测试、压力测试;广义并发不限制对系统的请求操作,多适用于混合场景、稳定性测试。     

并发用户

指的是现实系统中同时操作业务的用户,在性能测试工具中一般称为虚拟用户(Virutal User)。并发用户跟注册用户、在线用户有很大差别:

  • 并发用户:一定会对服务器产生压力。

  • 在线用户:只是 “挂”在系统上对服务器不产生压力。

  • 注册用户:一般指的是数据库中存在的用户。