- 并发测试:
并发测试(Concurrency Testing)方法通过模拟用户的并发访问,测试多用户并发访问同一应用、同一个模块或者数据记录时是否
存在死锁或者其他性能问题。
特点:
(1)这种性能测试方法的主要目的是发现系统中可能隐藏的并发访问时的问题。
该方法是通过并发的手段发现系统中存在问题的最常用的方法。
(2)该性能测试方法主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源争用方面的问题。
内存问题:
1.是否有内存泄漏
2.是否有太多的临时对象
3.是否有太多的超过设计生命周期的对象
数据库问题:
1.是否有数据库死锁(Dead Lock)
2.是否经常出现长事务(Long Transaction)
线程/进程问题:
1.是否出现线程/进程同步失败
其他问题:
1.是否出现资源争用导致的死锁
2.是否没有正确处理异常(如超时)导致系统死锁
(3)该测试方法可以在开发的各个阶段使用,需要相关的测试工具配合和支持
2. 负载测试:
负载测试(Load Testing)方法通过在被测系统上不断增加压力,直到性能指标,例如"响应时间"超过预定指标或者某种资源使用
已经达到饱和状态。
这种测试方法可以找到系统的处理极限,为系统调优提供数据。在某些情况下,这种方法有时也被称为可量性测试(Scalability Testing).
特点:
(1)主要目的是找到系统处理能力的极限。
通过"检测-加压-直到性能指标超过预期"
(2)需要在给定的测试环境下进行,通常也需要考虑到被测系统的业务压力量和典型场景
(3)这种性能测试方法一般用来了解系统的性能容量,或者是配合性能调优。
-
可靠性测试:
可靠性测试(Reliability Testing)方法通过给系统加载一定的业务压力(例如资源在70%~90%的使用率)的情况下,让应用持续
运行一段时间,测试系统在这种条件下是否能够稳定运行。
软件可靠性一般用"平均无故障时间MTBF"或是"失效率"来衡量。
特点:
(1)该测试方法目的是验证系统是否能够支持长期稳定的运行。
从直观上来说,在大的压力下进行一个较长时间的测试,如果系统在测试中不出现问题或是不好的征兆,基本上可以说系统具备长期稳定运行的
条件。
(2)这种性能测试方法需要在压力下持续一段时间的运行。
对一般的非关键的大型应用来说,一般让系统处于可能的峰值压力下,进行2~3天的稳定性测试基本上就够了
(3)测试过程中需要关注系统的运行状况。
在运行过程中,一般需要关注系统的内存使用状况,系统的其他资源使用有无明显的变化,以及系统响应时间有无明显变化。
如果测试过程中发现,随着时间的推移,响应时间有明显的变化,或是系统资源使用率有明显波动,都可能是系统不稳定的征兆,需要关注。 -
配置测试:
配置测试(Configuration Testing)方法通过对被测系统的软/硬件环境的调整,了解各种不同环境对系统性能影响的程度,从而
找到系统各项资源的最优分配原则。
特点:
(1)这种性能测试方法的主要目的是了解各种不同因素对系统性能影响的程度,从而盘度出最值得进行的调优操作。此配置测试方法
不同于功能测试并列的那个"配置测试"方法。对整个系统来说,配置测试是针对软件而言,其主要目的是验证软件是否在不同的软件
硬件环境中是否正常运行,其主要是功能的验证。而这里提到的配置测试方法,是在性能测试领域内的配置测试方法,其主要目的是了解
各种因素对系统性能的影响程序,从而判断出对性能影响最大的因素。
(2)这种性能测试方法一般在对系统性能状况有初步了解之后进行的。
该方法需要在确定的环境和操作步骤、确定的压力条件下进行。该方法在每次执行测试时更换、扩充硬件设备,调整网络环境,调整应用服务器
和数据库服务器的参数设置,比较每次测试结果,从而确定各个因素对系统性能的影响,找出影响最大的因素。
(3)这种性能测试方法一般勇于性能调优和规划能力。 -
失效恢复测试:
失效恢复测试(Failover Testing)方法针对有冗余备份和负载均衡的系统设计的。这种测试方法可以用来检验如果系统局部
发生故障,用户是否能够继续使用系统;以及如果这种情况发生,用户将受到多大程度的影响。
特点:
(1)该方法主要目的是验证在局部故障情况下,系统能够继续使用。
一般关键业务系统都会采用热备份或者是负载均衡的方式来实现。这种业务系统一般要求即使有一台或几台服务器出现问题,
应用系统仍然能够正常执行业务。该方法可以在测试中模拟一台或几台设备故障,验证预期的回复技术是否能够发挥作用。
(2)该测试方法需指出,当问题发生时"能支持多少用户访问"的结论和"采取何种应急措施"的方案
(3)一般来说,只有对系统持续运行指标有明确要求的系统才需要进行该种类型的测试。 -
性能测试:
性能测试(Performance Testing)方法是通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。
特点:
(1)这种方法的主要目的是验证系统是否有系统宣称具有的能力。
该方法包括确定用户场景、给出需要关注的性能指标、测试执行和测试分析这几个步骤,这是一种完全确定了系统运行环境和测试执行
的测试方法,其目的只能是依据事先的性能规划,验证系统有没有达到其宣称具有的能力。
(2)这种方法需要事先了解被测试系统典型场景,并具有确定的性能目标。
该方法需要首先了解被测系统的典型场景,所谓典型场景,指具有代表性的用户业务操作,一个典型场景包括操作序列、并发用户数量条件。
其次,这种方法需要有确定的性能目标,性能目标的描述基本上是这
样的方式:"要求系统在100个并发用户的条件下进行某业务操作,响应时间
不超过5秒"。
(3)这种方法要求在已确定的环境下运行。
- 压力测试:
压力测试(Stress Testing)方法测试系统在一定饱和状态下,例如CPU、内存等在饱和使用情况下,系统能够处理的会话能力,以及系统是否
会出现错误。
特点:
(1)主要目的是检查系统处于压力情况下时,应用的表现。
该方法通过增加访问压力(例如,增加并发的用户数等),使应用系统的资源使用保持在一定的水平,这种测试方法的主要目的使
检验此时的应用表现,重点在于有无出错信息产生,系统对应用的响应时间等。
(2)这种性能测试一般通过模拟负载等方法,使得系统的资源使用达到较高水平。
一般情况下,会将压力设定为"CPU达75%以上,内存使用率达70%"以上,在这种情况下测试系统的响应时间、系统有无产生错误。
除了CPU和内存使用率的设定外,JVM的可用内存、数据库的连接数、数据库服务器CPU利用率等都可以做为压力的依据。
(3)这种性能测试方法一般用于测试系统的稳定性。