《大型IT系统性能测试入门经典》学习笔记02——性能测试兵法篇(二)

1 全面性能测试方案

在“全面性能测试方案”中,把性能测试分为八个类别,然后结合测试工具把性能测试场景分为五大类。

1.1 八个性能测试类别

1.1.1预期指标的性能测试

系统在需求分析和设计阶段都会提出一些性能指标,完成和这些指标相关的测试是性能测试的首要工作之一。把针对预先确定的一些性能指标而进行的测试称为预期指标的性能测试。

1.1.2独立业务性能测试

独立业务实际是指一些核心业务模块对应的业务,这些模块通常具有功能比较复杂、使用比较频繁、属于核心业务等特点。

用户并发测试是核心业务模块的重点测试内容。“并发”主要内容是模拟一定数量的用户同时使用某一核心模块的“相同”或“不同”的功能,并且持续一段时间。对“相同”的功能进行并发测试分为:1、在同一时刻进行完全一样的操作,例如打开同一条数据记录进行查看。 2、在同一时刻使用完全一样的功能,例如同时提交数据进行保存。

1.1.3组合业务性能测试

多用户同时使用一个或多个模块的不同功能,对多个业务进行组合性能测试。组合业务测试是最接近用户实际使用情况的测试,也是性能测试的核心内容。通常按照用户的实际使用人数比例来模拟各个模块的组合并发情况。组合测试往往和服务器性能测试结合起来,在通过工具模拟用户操作的同时,还通过测试工具的监控功能采集服务器的计数器信息。根据用户使用系统的情况来分成不同的用户组进行并发。

1.1.4疲劳强度性能测试

在系统稳定运行的情况下,以一定的负载测试来长时间运行系统的测试。确定系统长时间处理较大业务量时的性能。

1.1.5大数据量性能测试

   1、针对某些系统存储、传输、统计查询等业务进行大数据量的测试。
   2、极限状态下的数据测试,主要指系统数据量达到一定程度时,通过性能测试来评估系统的响应情况。测试的对象也是某些核心业务或常用的组合业务。
   3、把前两种情况结合起来进行的大数据量测试,主要测试在极限状态下、同时运行时产生较大数据量时的系统性能。
   4、通常独立出来和疲劳强度测试放在一起。

1.1.6网络性能测试

为了准确展示带宽、延迟、负载和端口的变化时如何影响用户的响应时间的。主要是测试应用系统的用户数目与网络带宽的关系。

1.1.7服务器性能测试(操作系统、应用服务器、数据库服务器)

    初级:在业务系统工作或进行前面其他种类性能测试的时候,监控服务器的一些计数器信息,通过计数器对服务器进行综合性能分析。

    高级:一般由专门的系统管理员来进行。

1.1.8一些特殊测试

配置测试、内容泄漏测试等一些特殊种类的性能测试。

1.2 全面性能测试方案四部分

1.2.1:性能测试策略制订原则

    结合软件类型和用户对性能重视程度来讨论性能测试策略制订的基本原则和方法。
    系统类软件:性能测试应该尽早介入
    应用类软件:特殊类应用(银行、电信、电力、保险、医疗、安全),使用比较频繁,用户较多,需较早进行性能测试;一般类应用(办公自动化软件、电子政府系统)根据实际情况来制定性能测试策略。
    用户对性能侧关注度的不同一般分为四类:特别关注、中等重视、一般关注和不怎么关注

举例:

制订测试策略是什么复杂的工作,最有效的方法就是“从实际出发”。项目的特点千差万别,只有充分为用户考虑,才可以制订出合理的性能测试策略。性能测试策略是后期性能测试工作的基础,决定着性能测试工作的投入,只有做好了前期的“路线”制订工作,才可以走对后面的“道路”。

1.2.2:测试场景设计通用模型

   结合测试工具,把上面全面性能测试方案八项内容进一步归纳,形成五类常用测试场景:预期指标的性能测试、并发用户的性能测试、疲劳强度和大数据量性能测试、服务器性能测试、网络性能测试

   测试场景设计通用模型,是一个内容全面、比较容易组织和调整的模型架构。而具体使用”测试场景设计通用模型“时,则和性能测试策略结合,对模型删减或增加一定的内容使之符合特定的测试需求。
1.2.2.1.预期性能指标测试

十分明确的、在系统需求设计阶段预先提出的、期望系统达到的、或向用户保证的性能指标,这些指标是性能测试首要任务之一。

主要参考需求和设计文档,把里面十分明确的性能要求提取出来。

1.2.2.2.用户并发性能测试

用户并发测试主要通过逐渐增加用户数量来对系统加压,并通过测试工具对应用系统、各种服务器资源进行监控。

分为:独立业务性能测试和组合业务性能测试

独立业务性能测试:就是核心业务模块的某一业务的并发性能测试,可以理解为“单元性能测试”;

组合业务性能测试:一个或多个模块的多个业务同时进行并发性能测试,可以理解为“集成性能测试”;

  1. 独立核心模块用户并发性能测试场景设计 目的:发现一些核心算法或者功能方面的问题;尽早发现性能问题,以降低修复缺陷的成本。

从微观角度来讲,这类场景的执行一般包含着两种并发:一种是相同子功能的并发,只要每类子功能模拟的用户数量大于1,就实现了同一子功能的并发。另外一种就是不同子功能的并发,这两种并发一般是不能分开的。

在编写核心模块的性能测试场景时,首先要确定系统中哪些是核心模块,然后分别编写每个模块的测试场景。设计场景时,可以把模块的功能划分成更小的“事务”进行测试,这样在分析时,便于定位问题究竟出现在那里。

  1. 组合模块并发性能测试场景设计

组合模块的性能测试是最能反映用户实际使用情况的测试,是在前面各个核心模块运行良好的基础上,把系统的一些具有耦合关系的模块组合起来的测试,因此可以理解成“集成性能测试”。

收益:发现接口方面的功能问题;尽早发现综合性能问题;

具有耦合关系的核心模块进行组合并发测试。参考该要设计文档,确定核心模块的接口,然后设计对应的测试场景。

彼此独立的、内部具有耦合关系的核心模块组的并发测试。编写相关的测试场景时,可以直接把前面具有耦合关系核心模块的并发测试的一些场景组合起来,然后考虑一下用户的实际使用场景即可。

    基于用户场景的并发测试。场景编写要充分考虑实际场景,选择最接近实际的场景进行设计。

设计组合模块用户并发性能测试场景时,一般以不同模块中的“子事务”或者“子功能”为单位,来进行各个模块的不同核心功能的组合。设计组合模块用户并发性能测试场景时,不但要考虑用户使用场景,还要注意并发点的运用。并发点是指一定数量的用户开始执行统一功能或者操作的时间点,一组测试场景通常包含多个并发点,从而实现了核心模块统一功能或者操作的真正并发。

1.2.2.3.疲劳强度与大数据量测试

长时间对目标测试系统加压是疲劳强度测试的主要特点,其目的是为了测试系统的稳定性与健壮性。疲劳强度测试的时间一般以“天”为单位。甚至可能会进行7X24小时加压。

疲劳强度测试属于用户并发测试的延续,测试内容仍然是“核心模块用户并发”和“组合模块用户并发”

大数据量测试主要是针对那些对数据库有特殊要求的系统进行的测试。分为三种:

* 实时大数据量
    模拟用户工作时的实时大数据量,主要目的是测试用户较多或业务产生较大数据量时,系统能否稳定地运行。
* 极限状态下的测试
    主要是测试系统使用一段时间,即系统积累一定量的数据时,能否正常的运行业务
* 前面两种的结合
    测试系统已经累计较大数据量时,一些实时产生较大数据量的模块能否稳定的工作。

举例:

1.2.2.4.网络性能测试
1. 基于硬件的测试:
    主要是通过各种专用软件工具、仪器来测试整个系统的网络运行环境,一般由专门的系统集成人员来负责。

2. 基于应用系统的测试:
    在实际的软件项目中,主要是测试用户数目与网络贷款的关系,通过测试工具准备展示带宽、延迟、负载和端口的变化是如何影响用户的响应时间的。

本部分既可以独立测试,也可以和用户并发性能测试、疲劳强度与大数据量性能测试结合起来,在原有的基础上采用工具来调整网络设置,从而达到监视网络性能的目的。

1.2.2.5.服务器性能测试

服务器性能测试主要是对数据库、应用服务器、操作系统的测试,目的是通过性能测试找出各种服务器的瓶颈,为系统扩展和优化提供相关的依据。

1. 高级服务器性能测试:
    主要是指在特定的硬件条件下,由数据库、应用服务器、操作系统等相关领域专家进行的性能测试。

2. 初级服务器性能测试:
    主要指在系统运行或进行前面的性能测试场景时,通过测试工具对数据库、应用服务器、操作系统的使用情况进行监控,然后进行综合分析,进而发现系统的瓶颈。

1.2.3:五一测试场景设计模型

测试场景设计一定要服从整体性能测试策略,千万不能仅从技术角度考虑来设计“全面”的测试场景,”全面“应该以是否满足自己的测试策略作为标准。

“五一测试场景设计模型”中联机交易测试场景包含:独立场景、混合场景、峰值场景、容量场景、疲劳场景。(独立场景、混合场景和容量场景是从技术角度设计的场景,对应预期指标、用户并发、压力测试等测试种类;峰值场景和疲劳场景是从用户业务的角度设计的场景,对应疲劳强度与大数据量、稳定性与健壮性等测试种类)

1.2.3.1 独立场景设计

独立场景目的是测试核心交易单独并发执行时的性能,是以系统预期最大并发用户数作为上限,对核心交易采用渐进式加压的方式来进行的性能测试,在压力时间内的交易通过数量应超过其全天的交易量。 独立场景通常会按照系统潜在最大并发数的2-3倍来加压,总加压时间为1-2个小时,加压时间内完成的交易量是其对应生产对应交易量的2-3倍。

1.2.3.2.混合场景设计

混合场景用来测试关联交易并发执行时是否存在性能问题,是以系统预期最大并发用户数作为上限,对核心交易和部分非核心交易采用渐进式加压的方式来进行的混合交易性能测试,在压力时间内的交易数量应超过系统全天的交易数量。

混合场景通常会按照系统潜在最大并发数的2-3倍来加压,总加压时间为2-3个小时,加压时间内完成的交易量是其对应生产对应交易量的3-5倍。

1.2.3.3.峰值场景设计

峰值场景是用来测试系统在高峰交易时段的性能,是以系统峰值时段预期最大并发用户数作为上限,对核心交易和部分非核心交易采用快速加压的方式来进行的混合交易性能测试,在压力时间内的交易数量应超过系统全天的交易数量。

峰值场景通常会按照峰值适度潜在最大并发数的2-3倍来加压,总加压时间为峰值的1-2倍,加压时间内完成的交易量是生产对应交易前在交易量的3-5倍。峰值时段需要根据实际情况进行分析,确定日间峰值的时段。

1.2.3.4.容量场景设计

容量测试的目的是通过不断提高系统的并发用户数,测试出核心交易实际的最大并发处理能力;通过不断提高系统在线用户数,测试出核心交易实际的最大在线处理能力。容量测试通常从生产压力作为基准压力来加压,逐步加压到生产压力的5-10倍。

1. 最佳并发数/最佳处理能力
   最佳处理能力是指在业务处理能力满足上限需求,且80%交易响应时间也满足用户需求前提下,按照实际业务比例对系统不断加压,在这一过程中得出的系统最大处理能力,初始达到最佳处理能力时对应的并发数为最佳并发数。

2. 最大并发数/最大处理能力
    对于性能较好系统,最大并发数是指响应时间和业务吞吐量同时满足生产需求时系统所能支持的最大并发数,最大处理能力是指系统所能达到的最大业务吞吐量(TPS)。对于性能较差系统,最大并发数与最大处理能力是指业务吞吐量(TPS)达到最大值时对应的并发数以及相应的业务处理能力。

3. 系统容量上限
    系统交易成功率<99%时的并发数

4. 系统上线
    系统变得极其缓慢、交易大量失败甚至停止服务时的并发数,对于各个渠道,定义为交易成功率<90%时的并发数。

1.2.3.5.疲劳场景设计

疲劳场景主要用来验证系统的稳定性与健壮性,通常会选择常用交易,以系统生产环境的1-3倍压力长时间对系统加压。如果系统性能较好,疲劳场景可以以容量测试结果得到的最大处理能力对应的并发数来进行加压。疲劳场景设计的交易通常会覆盖系统全部交易80%以上的交易量。

1.2.4:全面性能测试方案应用

要想通过“全面性能测试方案”做好性能测试工作,首先要制订好性能测试策略,同时还要按照一些指导原则来使用方案。

* 制订测试策略遵从低成本原则
* 策略为中心原则
* 适当裁剪原则
* 完善方案原则
* 方案具体化原则

要想使“全面性能测试方案”在性能工作中发挥作用,只有根据实际项目的特点制定合理的性能测试策略、设计适当的性能测试场景,并在测试实施中灵活变通才可以做好性能工作。


评论(0 ) 点赞(18)


暂未登录,请登录之后发表评论。 QQ