性能测试应用领域
概括来说,可以将性能测试的应用领域划分为下面五个不同领域:
·能力验证
·规划能力
·性能调优
·瓶颈发现
·性能基准比较
一、能力验证
能力验证是性能测试中最简单也是最常见的一个应用领域。一个典型的能力验证的问题会采取这样的描述方式:某系统能否在A条件下具有B能力?
能力验证领域的特点与性能测试的特点非常接近:
①要求在已确定的环境下运行
只有在一个确定的环境下运行,软件性能的验证才是有意义的;因为无法或很难根据系统在一个环境中的表现去推断其在另一个不同环境中的表现,因此这种应用领域内的测试
必须要求测试环境(如硬件设备、软件环境、网络条件、基础数据等)已确定。
②根据典型业务场景设计测试方案和用例
能力验证需要了解被测系统的典型业务场景,并根据典型场景设计测试方案和用例;一个典型场景包括操作步骤和并发用户量条件,设计用例时,需要确定响应的性能指标。
可靠性测试的内容也可以归入到该应用领域。因为从用户角度出发,对软件可靠性的保证也是承诺的软件性能的一部分。
在能力验证领域,一般采用的测试方法有:性能测试、可靠性测试、压力测试和失效恢复性测试。
二、规划能力
规划能力领域通常关心的是:如何使系统具有我们要求的性能能力或者某种可能发生的条件下,系统具有如何的性能能力?
它通常会被描述为:某系统能否支持未来一段时间内的用户增长或者应该如何调整,使系统能够满足增长的用户数的需求?
能力规划领域具有以下特点:
①它是一种探索性测试
规划能力领域侧重点是规划。即该领域不依赖预先设定的用于比较的目标,而要求在测试过程中了解系统本身的能力;这种测试与能力验证领域内的测试最大区别在于其探索性。
②它可被用于了解系统性能以及获得扩展性能的方法
规划能力领域的问题是期望了解系统现在的能力,获得扩展系统性能以应对将来的业务增长的方法。该领域在测试过程中,除了要通过负载测试等方法获知系统性能表现外,还需要通过
诸如更换设备、调整参数等方法获知系统性能可扩展的元素。
在规划能力领域,一般采用的测试方法有:负载测试、配置测试和压力测试。
三、性能调优
性能调优领域主要对应于系统性能进行调优。一般来说,性能调优和其他性能测试应用领域交杂在一起的;性能调优可调整的对象众多,而且在系统应用的各个阶段都可以进行调优。
对于已部署在实际生产环境中的系统应用,对其进行性能调优可能会首先关注应用系统部署环境的调整,例如:对服务器的调整、对数据库参数以及对应用服务器的参数调整等;
对正在开发中的应用来说,性能调优会更多关注应用逻辑的实现方法、应用中涉及的算法、数据库访问层的设计等因素;此时并不要求是测试还是生产环境,只要整个调优过程中具有
一个可用于比较的测试基准环境即可。
一个标准的性能调优过程大概如下:
1、确定基准环境,基准负载和基准性能指标
基准负载是指一种可被用来衡量和比较性能调优测试结果的标准(每次执行性能测试时环境要严格保持一致)的运行环境、测试操作脚本和可被用来衡量调优效果的性能指标。
2、调整系统运行环境和实现方法,执行测试
这是性能调优过程中的核心步骤,目的是通过调整,提高应用系统的性能表现;主要包括如下三个方面:
①硬件环境的调整
主要对系统运行的硬件环境进行调整,包括改变系统运行的服务器、主机设备环境(改用具有更高性能的机器,或调整某些服务器的物理内存总量,CPU数量等)、调整网络环境(更换
更快速的网络设备,或采用更高宽带的组网技术)等;
②系统设置的调整
主要对系统运行的基础平台设置进行调整,比如:根据应用需要调整Unix系统的核心参数,调整数据库的内存池大小,调整应用服务器使用的内存大小或采用更高版本的JVM环境等;
③应用级别的调整
主要是对应用本身的调整,包括选用新的架构、采用新的数据访问方式或修改业务逻辑的实现方式等;
PS:实际性能调优过程中,具体的调整视具体情况而定;而且不要一次调整过多的参数或应用实现方法,否则很难判断具体哪个调整对性能产生了影响(一般3~5处最好)。
3、记录测试结果,进行分析
该步骤和上一步骤构成了一个性能调优循环,循环的出口是“达到预期的性能调优目标”。
性能调优主要使用的测试方法有:配置测试、负载测试、压力测试和失效恢复性测试。
四、瓶颈发现
瓶颈发现应用领域的主要目的是通过性能测试手段来发现系统中存在的缺陷,瓶颈。
经常在工作中遇到这样的问题:应用在测试环境下运行正常,部署到生产用户环境,就会出现莫名其妙的错误;这些情况并不完全是并发或者性能问题导致,大多数情况下,都是由于
并发时的线程锁、资源竞争或内存问题引起的。
瓶颈发现应用领域一般作为系统测试阶段的一种补充手段;在测试过程中发现并发时的应用问题,或作为系统维护阶段的问题定位手段,对系统运行过程中出现的问题进行重现和定位。
该应用领域的主要目的是发现缺陷、瓶颈,并无可参照的性能指标或需要达到的性能目标,因此主要采用并发测试的方法。
五、性能基准比较
性能基准比较通常用于敏捷开发过程中。
敏捷开发:大约兴起于2000年,与传统重量级软件开发方式相比,敏捷开发采纳轻量级的软件开发过程,更注重“产出可用的软件”,“沟通胜于文档”等概念,使用“拥抱变化”的态度来
面对开发中不断的需求变更。
敏捷开发将软件开发过程划分为多个短时间周期迭代,每个迭代定义了本次迭代需要完成的目标,一个迭代中保持需求的不变以“交付了迭代目标的可工作软件”作为每个迭代完成的标志。
由于敏捷开发采用“递增”的开发模式,很难再每个迭代周期内定义明确的性能需求。因此,性能基准比较,就是在不设定目标的情况下,通过每次迭代的比较来得到性能表现的变化,根据
这些变化决定迭代是否达到了预期的目标。
在实际操作中,可以将性能测试形成固定的脚本,并在固定环境上对模块执行相应的性能测试,测试结果通过工具直接写入数据库并通过图形展现工具将其展现成折线图,其可以直观的反应
模块的每个迭代中性能表现的变化,甚至可以作为验收条件的一部分。
另外,在敏捷开发中,设定性能基准比较的不仅仅是模块,还可以在单元测试中为给定的函数设置性能基准比较。
下表将性能测试的方法和应用领域做了关联,实际执行中可根据需要选用合适的方法:
PS:颜色越深,代表越重要。。。
总结:性能测试应用领域的划分主要按照性能测试的目的和目标进行划分,不同应用领域的性能测试采用不同的方法;当然,实际的性能测试中,情况往往比这个更复杂,这种情况下,
应该按照具体情况设计测试实施计划,分解拆分,为其设计规划不同的测试方法。