1.1.2性能测试的目的
性能测试不同于功能测试,性能测试需要面面俱到,考虑到每一个需求细节,一般来说性能测试更加关注系统的性能表现。概括来说,可以将性能测试的目的划分为5类:能力验证、规划能力、性能调优、缺陷发现和基准比较。
1.能力验证
我们经常会听到这样的描述“某系统能否在什么条件下具有什么能力”,这就是一个典型的能力验证问题。例如,我们为客户进行系统上线后的验收测试,或是作为第三方对一个已部署的应用的性能进行验证,这些都属于为达到这种性能测试的目的进行的测试。
该性能测试的目的具有如下特点。
(1)要求在已确定的环境下运行。
(2)需要根据典型场景设计测试方案和用例。
(3)一般釆用的测试方法包括性能测试、可靠性测试、压力测试和失效恢复测试。
也就是说,它关心的是“在给定条件下,系统是否具有预期的能力表现”。
2.规划能力
通常被描述为“系统能否支持未来一段时间内的用户增长”或者是“应该如何调整系统配置,使系统能够满足增长的用户数的需要”。其实它和业界常说的容量规划大同小异,即通过性能测试和评估得到性能基线,并将其作为容量规划的一个指标,明确系统大概在什么情况下会出现瓶颈,什么时候需要进行扩容。但是以系统实际的线上观察数据作为基础会更有效,因此容量规划通过性能测试环境来模拟是不充分的,仅可作为参考。
该性能测试的目的具有如下特点。
(1)它是一种探索性的测试。
(2)它可被用于了解系统的性能以及获得扩展性能的方法。
(3)一般釆用的测试方法包括负载测试、配置测试和压力测试。
也就是说,它关心的是“应该如何使系统具有我们要求的性能”或是“在某种可能发生的条件下,系统性能如何”。
3.性能调优
调优可以在多种不同的测试阶段和场合下使用o对已经部署在实际生产环境中的应用系统来说,性能调优可能会首先关注硬件环境和系统设置,例如,对服务器的调整、对数据库参数的调整,以及对应用服务器参数的调整,此时的性能调优需要在生产环境这个确定的环境下进行。但对正在开发的应用来说,性能调优会更多地关注应用逻辑的实现方法、应用中涉及的算法和数据库访问层的设计等因素,此时并不要求性能测试环境是实际的生产环境,只要整个调优过程中有一个可用于比较的基准性能测试环境即可。
该性能测试的目的具有如下特点。
(1)确定了基准环境、基准负载和基准性能指标。
(2)调整了系统运行环境和实现方法。
通常包括如下3个不同层面的调整。
硬件环境的调整主要是对系统运行的硬件环境进行调整,包括改变系统运行的服务器和主机设备环境(改用具有更高性能的计算机,或是调整某些服务器的物理内存总量、CPU总量等)、调整网络环境(更换传输速度更快的网络设备,或是釆用带宽更高的组网技术)等。
系统设置的调整主要是对系统运行的基础平台的设置进行调整,例如,根据应用需要调整UNIX系统的核心参数、调整数据库的内存池大小、调整应用服务器使用的内存大小,或是釆用版本更高的JVM环境等。
应用级别的调整主要是对应用实现本身进行调整,包括选用新的架构、采用新的数据访问方式或修改业务逻辑的实现方式等。
需要说明的是,不要一次调过多的参数或多次修改应用实现方法,否则很难判断具体是哪个调整对系统性能产生了较为有利的影响,即通常釆用单一变量实验法来进行测试验证。
(3)记录测试结果,并进行分析。循环的出口是“达到预期的性能调优目标”。
(4)一般釆用的测试方法包括配置测试、负载测试、压力测试和失效恢复测试。
4.缺陷发现
日常项目迭代中,通过性能测试来发现系统中存在的缺陷和问题。
一般釆用的测试方法包括并发测试、压力测试和失效恢复测试。
5.基准比较
该目的通常应用在敏捷开发过程中,即在不设定明确的性能目标的情况下,通过比较得到每次迭代中的性能表现的变化,并根据这些变化判断迭代是否达到了预期的目标。
不同系统有不同的业务特性,同一产品在不同时期,对性能测试的需求和要达成的目标也会有所不同,性能测试的目的通常包括以上5类。
注意
在真实测试中,性能测试的目的总是会有一些重叠。其实也不必很纠结,读者只需了解以上各类性能测试的目的即可。