对于*个比较成熟的业务系统来说,功能已经相对完善。但是在大业务量的情况下往往出现各种异常情况,这就需要通过修改系统配置或者调整产品框架来*化系统。
在*化系统的过程中,*有效的手段就是对系统进行性能测试。然后对测试过程中收集的数据进行分析,找出问题所在,不断对系统进行*化,*终达到系统在大业务量时稳定运行的目的。
1、明确测试方法
测试方法主要是通过测试步骤体现出来的。测试步骤不是*成不变的,而是根据每次的测试结果不断调整和完善。开始性能测试之前必须确定以下两个任务。
(1)建立业务模型。根据业务的开展情况,建立科学的业务模型。
(2)设置性能指标。性能指标作为判断设计和实际性能处理的基准值,必须在测试之前明确。
确定以上两点后就可以开始调整循环,进行*系列重复和受控的性能测试。调整循环步骤如图1所示。测试时需重复图1中的4个阶段,直到获得初始建立的系统性能目标。
图1 调整循环的4个阶段
2、测试
测试阶段是调整循环操作的起点,是根据测试要求进行的相关操作,并为结果统计提供相应的测试数据。该阶段需要考虑环境配置和测试用例两个方面。
2.1环境配置
不同的测试环境会产生不同的测试结果,因此测试前需要对环境配置进行详细的检查。主要检查以下几个方面。
(1)网络连通性。网络是否通畅是测试能否正常进行的基本前提。
(2)流量模型是否超出系统负荷。如果测试时施加的业务量远大于系统所能承受的负荷,则会对系统产生损伤,并在测试过程中出现宕机、告警等异常情况。
(3)被测系统的系统配置。系统配置包括软件和硬件两个方面。由于不同的系统配置会产生不同的测试结果,因此测试之前应对被测系统进行严格的核对,检查其是否符合测试要求。
(4)测试工具的参数配置。对于*个功能相对完善的测试工具来说,不但应能模拟大业务量,还应能配置压力递增方式、压力大小以及压力持续时间等参数,因此在测试之前需要检查相应的参数配置能否满足测试要求。
2.2测试用例
性能测试用例大体分为环境配置、预置条件、测试步骤、预期结果、判定原则和测试结果6个方面。
(1)环境配置是指依照测试需求配置测试环境,包括网络组网和系统参数配置等。
(2)预置条件是指为了真实模拟某些场景而需要在测试前预置的条件。
(3)测试步骤是指在环境配置和预置条件完成后,如何对系统加压的过程。*般来说,**确定压力的生成形式(如阶梯递增、二次曲线递增等),然后确定压力递增的时间,*后确定压力保持时间。
(4)预期结果是指通过理论及经验分析,对实际测试结果的预期指标或现象。此内容是检验测试结果的依据。
(5)判定原则是制定标准以判断测试是否满足要求。判定原则的制定在很大程度上依赖于测试的预期结果。
(6)测试结果是根据实际的测试情况、预期结果以及判定原则等对性能测试作出的总体结论。
3、结果统计
结果统计是将测试结果进行统计的过程,此过程是调整循环中承上启下的阶段。此阶段统计的数据来源于上*次的测试结果,并为后续的数据分析提供依据。结果统计的数据可以来源于被测系统和测试工具两个方面,因此在统计过程中不但要考虑从被测系统获取的统计数据,还要兼顾测试工具本身的数据统计。从被测系统可以直接获取通过系统日志统计出的系统资源消耗;从测试工具本身可以统计压力大小、业务处理时延和业务处理成功率等。
4、结果分析
收集好系统所需的性能数据后,再对这些数据进行分析以确定系统瓶颈。需要明确的是,统计数据仅具有指示性,并不*定能准确地确定实际瓶颈的位置。因为性能问题可由多种原因引起,这就需要从系统角度来分析和查找原因。例如,对某邮件系统进行邮件转发业务流程测试过程中,在保持*大在线并发用户数时系统资源消耗在50%左右,如果单从这个数据表面来看,此邮件系统性能良好,即在保持*大用户数时系统资源还有很大的可利用空间,但是如果进*步分析就会发现此系统的邮件转发业务流程设计不太合理,还有很大的系统*化空间。因为对*个*化的系统来说,当其保持*大用户数时,系统资源消耗应在80%以上。
在进行结果分析时应注意以下几点。
(1)数据发现的敏感性。能够主动发现*些貌似“合理”的数据问题。
(2)数据分析的系统性。能够通过测试数据的表面,从系统角度对数据进行分析,尽快发现系统瓶颈。
(3)数据合理的疑问性。测试的目的是发现问题,进而*化系统。因此应该抱着怀疑的态度分析测试数据,这样才能做到不遗漏任何“可疑”的数据。
(4)结果分析的分步性。根据测试经验,对测试结果的分析可以分为观察、初步假设、预测、测试、控制和结论6步进行。结论由该过程积累的*佳证据集合所支持的假设组成。
5、系统*化
在循环调整过程中,前三个阶段的目的是对系统进行*化,因此系统*化的依据直接来源于对测试结果的分析。在通常情况下,对于*个比较成熟的系统来说,系统的绝大多数*化工作是对系统配置的*化,只有少部分是对系统设计的修改。
通过结果分析可大体定位系统出现问题的位置,随后就需要对系统配置进行更改。此*化过程大部分工作是尝试性和不间断性的,因此需要不断尝试改变参数配置,然后验证修改后的配置是否达到预期目的。如果没有达到预期目的,则需要进*步对配置进行修改和验证。根据测试经验,参数配置更改的原则是“*次仅实现*个配置的更改”。原因是对于系统某*个模块/单元出现的问题可能是由涉及多个模块/单元的瓶颈引起的,因此分别对问题进行处理很重要。如果同时进行多个更改,则难以准确地评定每次更改的影响。
配置更改后必须对修改后的系统进行测试,以确定更改对调整后的系统所产生的影响。如果性能达到预期水平,便结束测试;否则必须重新进入下*个调整循环阶段。