宋士涛
(1.国家网络软件产品质量监督检验中心(济南), 山东 济南 250014;2.山东省软件产品质量监督检验中心,山东 济南 250014)
一种Web应用系统性能测试流程及其应用研究
宋士涛1,2
(1.国家网络软件产品质量监督检验中心(济南), 山东 济南 250014;2.山东省软件产品质量监督检验中心,山东 济南 250014)
摘要:结合LoadRunner、Segue和PTGM性能测试过程模型,提出了一种有效的Web应用系统性能测试流程,涵盖从项目策划、测试方案到结果分析并出具报告的全过程,并引入控制库来保证过程中每个阶段的成果质量。应用本测试流程,完成了某Web应用系统的性能测试工作,获取了各项预期结果,证明了该流程的可靠性。
关键词:性能测试; Web系统; 测试流程; LoadRunner测试模型
软件测试作为软件质量保证的重要手段,是解决软件危机的重要途径,在整个软件生命周期中占有非常重要的位置[1]。为了保证Web应用的可用性和高效性,系统上线前必须对Web应用进行性能测试,提前暴露出系统的性能问题,并提供一定数量的分析数据来优化系统,有效地提高系统的可靠性和可用性。
Web应用系统性能测试不同于功能性测试,功能测试关注产品的所有功能,要考虑到每个细节功能,每个可能存在的功能问题,而性能测试是通过自动化的测试工具模拟多种情况来对系统的各项性能指标进行测试,主要关注多用户并发情况下产品的性能瓶颈并加以优化,从而保证程序在实际中提供良好和可靠的性能[2]。因此,在性能测试过程中,要考虑系统运行时各种正常、峰值以及异常负载情况,确定并发用户数以及关键功能点等[3]。
性能测试应遵循一定的测试流程,通常称这种流程为性能测试过程模型[4]。常见的Web系统性能测试过程模型有LoadRunner过程模型[5]、Segue过程模型和PTGM过程模型[6]等。
LoadRunner过程模型将性能测试过程分为计划测试、测试设计、创建VU脚本、创建测试场景、运行测试场景和分析结果6个步骤,涵盖了性能测试工作的大部分内容,但由于该过程过于紧密地与LoadRunner工具集成,没有兼顾使用其他工具或用户自行设计工具的需求[5]。
Segue过程模型从确定性能基线开始,通过单用户对应用的访问获取性能取值的基线,然后设定可接受的性能目标,用不同的并发用户数等重复进行测试。这种性能测试方法非常适合性能调优和性能优化,通过不断重复的try-check过程,可以逐一找到可能导致性能瓶颈的地方并对其进行优化。但该测试过程同LoadRunner过程一样,同样过于依赖工具本身,另外缺乏对计划、设计阶段的明确划分,也没有给出具体的活动和目标[6]。
PTGM过程模型参考了各种不同的性能测试、分析等模型,囊括了从“测试团队组建”到“测试分析”的全部过程,为每个步骤设计了相应的活动,是一个非常有实践指导意义的性能测试模型[6]。
总体而言,前两个模型为基于工具的性能测试模型,通用性较差;PTGM模型通用性较强,但对性能指标与测试影响因素的界定及具体的性能需求分析能力相对不足[7-8]。为了弥补现有性能测试流程存在的问题,本文结合多种性能测试过程模型,在长期工作实践的基础上,提出了一套有效的性能测试流程。
1性能测试过程模型
该流程分为测试项目策划、制定测试方案、测试设计、测试执行、测试评估和结果分析以及报告生成6个步骤,如图1所示。
图1 软件性能测试过程流程图Fig.1 Flowchart of software performance testing process
1.1测试项目策划
项目策划阶段是测试工作的起点,当项目组接到测试任务后,首先对被测软件进行测试需求概要分析,根据分析结果确定项目组织架构,并制定总体实施计划。
1.2制定测试方案
测试方案是测试过程的根本,是测试设计、测试执行阶段的指导性文件。在方案中,需详细分析被测软件性能需求、特点和运行环境,得出此次性能测试的主要功能点、测试过程中的数据量、并发用户数(包括系统运行高峰期用户数和正常情况下的用户数)和用户分布情况等,并确定将要测试的性能指标。此外,对测试工具、测试方法、测试策略和测试场景等进行详细定义,以指导测试人员据此进行测试设计。
在项目的管理方面,测试方案还将确定测试工作组的组织架构,以合理安排测试的组织与人员,确保按时完成任务;决定测试准入准出条件、制定质量保证计划、配置管理计划和风险管理计划等,以保证整个性能测试过程的顺利进行[9]。
1.3测试设计
本阶段将依据测试方案的规定完成测试环境的搭建,并进行测试设计。性能测试过程的测试设计不同于功能测试的设计,主要包括性能测试用例的设计、开发并完善测试脚本和设置测试场景等。在性能测试过程中,测试场景是一种用来模拟大量用户操作的技术手段,通过配置和执行场景可向服务器产生负载,以验证系统各项性能指标是否达到用户要求。测试脚本是通过测试工具,录制软件执行过程并完善得到的脚本,为测试场景设计做准备[10]。性能测试用例是测试脚本、测试场景的基础,一个好的性能测试用例,将能够指导测试脚本的开发及完善,并指导在测试脚本基础之上的测试场景的设置[11]。因此在用例中需要定义用户并发数、所涉及主要功能点的操作步骤、集合点的设置、检查点的设置、参数化的设置、测试场景设置中运行时设置要求以及将要监控的性能指标等。
1.4测试执行
测试执行是已设置好的测试场景执行的过程。需要注意的是,在测试执行时,一定要尽可能地模拟被测系统的真实使用环境,包括硬件环境、软件环境和数据环境,要真实地还原被测系统的应用现场。一般情况下,测试场景的执行按照测试方案中对测试策略的规定执行,在进行压力测试时,为了寻找性能瓶颈,当对相同的场景进行不同用户数的测试执行时,可采用折半查找法的方式设置并发数,以减少测试时间,加快测试效率。同时,测试执行中,为了保证测试结果可复现、可查询,要保存测试场景及测试结果电子数据。
1.5测试评估
测试执行完成之后,测试组应回溯测试过程,评估测试质量,以确保测试结果的客观、真实和有效。评估过程中发现与预期结果差距非常大的,应返回重新执行测试。
1.6结果分析及报告生成
本阶段包括测试结果分析与总结,以及生成测试报告,是性能测试过程中最后的阶段,也是最能体现性能测试价值的阶段。通过对系统响应时间、TPS、资源使用率、用户并发数、吞吐量和网络流量等主要性能指标的分析,对系统做出性能评价,同时定位被测系统性能瓶颈,为系统性能调优提供证据支持,给出改进方案[10]。
除上述步骤外,在性能测试过程的每个阶段,都需要对阶段性的成果进行评审,确保阶段性成果的正确性,经评审通过的阶段性成果,需作为基线纳入文件控制库,测试项目组任何人未经允许不得随意修改。
2实例分析
基于上文提出的性能测试流程,以某软件公司设计的工矿企业能耗系统为对象,对其进行性能测试,并对测试结果进行了深入分析。针对本文所提出流程与现有其他流程的不同之处,主要进行测试工具的选择、性能指标与测试影响因素的界定以及具体的性能需求分析。
2.1项目策划
首先对被测系统进行概要分析。该系统是一款基于B/S结构的、适用于工矿企业的信息管理系统。通过对系统性能需求进行概要分析,初步确定了性能指标及测试影响因素,结合系统规模,确定了三人规模的性能测试组织架构(不含质量管理人员和配置管理人员),并制定了总体实施计划。
2.2制定测试方案
PTGM模型虽然通用性较强,但对性能指标与测试影响因素的界定及具体的性能需求分析能力相对不足。我们提出的性能测试流程在保持流程通用性的同时,加强了对测试需求分析和其他相关要素分析环节的关注度,增强了性能需求分析能力,以确定性能指标及其他影响测试的因素。同时,增加了测试准入和准出条件的设定,以求尽可能地减少影响测试的其他因素,弥补了PTGM模型的不足。
2.2.1测试需求分析
经过对被测系统进行详细需求分析,认为作为一个工矿企业信息管理系统,为了满足企业内部信息管理要求,该系统性能需求应涵盖软件质量特性的时间特性和资源利用性[12]。相应地,在之后的测试中将选择单一业务基准测试、正常使用情况时一定并发用户数下的负载测试及长时间疲劳测试、并发用户数峰值情况下的压力测试和目标场景测试等,并重点关注以下性能指标[13]:数据库、服务器CPU平均使用率、可用内存比率、各主要功能的响应时间和TPS。同时,为了更客观地监测及分析系统性能,我们增加网络流量、事务成功率等性能指标。
2.2.2测试相关要素分析
为了测试上述性能指标,需确定哪些功能为系统主要功能及并发用户数、用户分布比例、系统正常运行时的数据量规模等情况[14]。主要功能的选取原则如下:
(1)业务使用频率高;
(2)单位时段内目标用户比较集中;
(3)业务操作的关联数据量较大。
根据以上条件,我们确定了系统中参与性能测试的主要功能,包括系统登录、统计报表、数据分析和系统管理等模块下的功能。同时,根据系统运行实际,确定了系统运行高峰时期并发用户数为1 000,各种不同角色的用户按一定比例分布(分布比例在此不作赘述),数据量参考系统正常运行一年后的情况。
此外,还对系统性能指标的性能拐点作出了规定,以确定何时中止测试。
2.2.3测试工具、方法和策略
LoadRunner过程模型和Segue过程模型都对测试工具进行了限定,而目前市场上的测试工具有多种,其中主要的有QALoad、SilkPerformer和HP-MercuryLoadRunner等。如果一个测试流程过分依赖测试工具,将大大增加它的局限性。我们提出的测试流程并未对测试工具进行限制,在此,采用HP-MercuryLoadRunner进行本次测试。LoadRunner是一种预测系统行为和性能的负载测试工具,通过模拟实际用户实施并发负载及实时性能监测的方式来确认和查找系统的瓶颈[15]。
在测试过程中,我们对上节选定的主要功能均进行多用户并发情况下的单一功能业务场景测试,以取得该功能点在某个高峰期接收到大量的并发请求时的性能状况。此外,对所有主要的功能点,还将进行混合功能业务场景测试,模拟实际系统的使用情况,以得知各功能点的响应时间及此时的系统性能状况。另外,设计目标场景,验证该系统是否达到需求目标。
由于确定系统高峰时用户并发数为1 000,但是在实际测试之前并不能确定系统是否能够满足此并发用户数的要求,因此在设计测试策略时,针对某一功能或混合业务功能,首先模拟500个用户并发, 若500用户并发执行时没有出现性能拐点,则模拟1 000个用户并发,以得知各功能操作的响应时间情况,每秒通过的交易数以及服务器端的资源利用情况等。通过上述测试策略,可得知系统在1 000用户数并发情况下的性能情况。
2.2.4测试准入和准出条件
测试的准入与准出条件的设定,将会影响测试结果的准确性。本次测试准入条件主要包括项目组技术支持人员和软、硬件资源到位,被测系统运行环境和数据准备完毕;准出条件为测试场景按要求执行完毕并完成了测试结果的收集整理工作。
2.2.5其他
除了上述与测试密切相关的方面外,测试方案中还包括项目管理的诸多方面:项目组织实施、质量保证计划、配置管理计划和风险管控计划。这些方案的合理制定,将保证整个性能测试工作的顺利实施,排除影响测试结果的不稳定因素,对测试质量提供有力的保障。
2.3测试设计与执行
在本阶段,我们按照性能测试过程模型中对于性能测试用例设计的要求,对测试方案中所选定的功能点进行用例设计。系统中其中一个功能点“采集方案日志”的性能测试用例设计见表1。
表1 某功能点性能测试用例举例
根据上述测试用例,即可完成测试脚本的开发与完善,并生成测试场景,按照测试策略的规定进行执行,取得测试结果。当用户并发数为1 000时,系统资源使用情况分析如图2所示。从图中可以看出,系统CPU利用率长时间稳定在70%~80%之间,平均值为72.935%,认为满足用户提出的CPU低于80%的需求。
图2 1 000用户并发执行采集方案日志查询时的系统资源图Fig.2 System resource diagram when 1 000 users executing collection plan log query
2.4测试结果分析及报告生成
对测试结果进行评估通过之后,即进入测试结果分析及报告生成阶段。2.3中测试用例执行结果分析见表2。
表2 某功能点性能测试结果
根据测试结果,在该功能点有多用户并发请求时,CPU平均使用率在用户需求范围之内,但已经接近用户需求限度值;内存平均使用率满足用户需求;平均响应时间等在用户预期的范围内。
综合测试过程中所有的测试用例执行结果,通过分析,我们得出如下结论:
在模拟用户使用环境的情况下,数据库、服务器可用内存比率、各主要功能的响应时间均满足用户需求,并且可长期稳定运行,系统各主要功能的TPS也能达到要求,虽然数据库、服务器CPU平均利用率稍高,但仍在可接受的范围内,故软件整体质量评价为合格。建议优化系统,降低CPU平均使用率。
3结语
Web应用系统性能作为软件系统质量的一个重要方面,对系统上线后的正常使用,尤其是访问高峰期的正常使用有着至关重要的作用。通过性能测试实例,本文详细介绍了性能测试流程,并根据性能测试结果对软件质量进行了评价,提出了改进建议,验证了性能测试流程的可用性和可靠性。下一步,我们将对分布式Web应用系统的性能测试进行研究,对本文提出的性能测试流程进行改进,以扩大其应用范围。
参考文献:
[1]薛冲冲,陈坚.软件测试研究[J].计算机系统应用,2010,20(2):240-244.
[2] 董娜.Web系统软件性能测试的研究[D].广州:暨南大学,2008.
[3] 陈小辉.Web性能测试技术的研究与实践[D].上海:华东师范大学,2010.
[4] 连志刚.Web系统性能测试过程模型研究[D].西安:西北大学,2012.
[5] 苏波.基于Web应用的性能测试研究[D].北京:中国石油大学,2007.
[6] 段念.软件性能测试过程详解与案例剖析[M].北京: 清华大学出版社,2006:23-24.
[7] 惠斌武,陈明锐,杨登攀.Web应用系统性能测试研究与应用[J].计算机应用,2011,31(7):1769-1772.
[8] 朱经纷,徐拾义.软件可靠性综合模型的分析和研究[J].计算机科学,2009,36(4):181-184.
[9] 崔丽娜.基于CNAS准则的软件测试方法与实践[D].北京:北京邮电大学,2012.
[10] 石磊.Web应用系统性能测试模型研究与应用[J].软件导刊,2012,11(6):83-84.
[11] 陈虹.软件测试方法研究[J].软件导刊,2013,12(4):24-25.
[12] GB/T 16260.2-2006, 软件工程 产品质量 第2部分:外部度量[S].
[13] 邓璐娟,范乃梅,孙义坤,等.基于Web应用的性能测试模型研究[J].计算机工程与应用,2013,49(1):75-77.
[14] 孔平.用LoadRunner对网站进行性能测试[D].北京:北京交通大学,2011.
[15] 陈霁.性能测试进阶指南:LoadRunner 11 实战[M].北京: 电子工业出版社,2013:37-37.
PerformancetestprocessofaWebapplicationsystemanditsapplication
SONGShi-tao1,2
(1.NationalNetworkSoftwareTestingCentre(Jinan),Jinan250014,China;
2.ShandongSoftwareProductQualitySupervision&InspectionCenter,Jinan250014,China)
Abstract∶We present an effective performance testing process model for a Web application system, based on LoadRunner, Segue and PTGM performance testing models.It covers the whole process from project plan, testing policy, to result analysis and test report output.We introduce a control library to guarantee fruit quality at every stage in a test process.We finish performance testing process for a given Web application system with the model, obtain all expected results,and verify its reliability.
Key words∶performance test;Web system;test process model;LoadRunner testing model
中图分类号:TP311
文献标识码:A
文章编号:1002-4026(2015)04-0094-07
作者简介:宋士涛(1983-),男,工程师,硕士,研究方向为软件测试技术。Email:songshitao2008@163.com
基金项目:山东省质量技术监督局科技计划(2013KY22)
收稿日期:2014-12-19
DOI:10.3976/j.issn.1002-4026.2015.04.018