王应栋 李黔蜀
摘要:文章使用LoadRunner12.6对民宿信息管理平台进行性能测试。首先,根据测试需求编写测试计划;然后录制相关脚本,针对测试需求,增强脚本、压测和结果分析,重点展示如何通过LoadRunner12.6实现性能测试的详细测试策略;最后整理测试分析报告。希望该方法可以对使用LoadRunner应用到具体项目中的同行起到一定的指导作用。
关键词:性能测试;参数化;集合点;关联;
引言
软件测试是软件开发中不可缺少的一个重要环节,是确保软件质量的重要手段[1,2]。其中,性能测试是验证软件能否达到预期性能标准,提前发现并修复软件潜在的性能缺陷,为软件上线后高效、稳定运行奠定基础。本文结合民宿信息管理平台项目,详细介绍性能测试流程。
1.LoadRunner12.6介绍
LoadRunner12.6是一款预测系统行为和性能的工业标准级负载测试工具[3,4]。在LoadRunner12.6的帮助下,用户可以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。LoadRunner12.6 能够对整个企业架构进行测试,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助用户更快的查找和发现问题。此外,LoadRunner12.6 能支持广泛的协议和技术,可以为用户的特殊环境提供特殊的解决方案。LoadRunner12.6是主要有三个部分组成,分别是VuGen(Virtual User Generator)、Controller、Analysis。VuGen是用于Vuser脚本开发的工具,模拟真实场景操作的过程;Controller是压测Vuser脚本场景的工具,LoadRunner12.6利用Controller模拟多用户的工作环境对应用系统进行测试;Analysis是对测试数据进行分析的工具,Analysis提供丰富的图表帮助分析。
2.测试过程
本文基于LoadRunner12.6对民宿信息管理平台进行性能测试流程如图1所示。
2. 测试需求
1、系统支持50用户并发,响应时间在5秒以内;
2、在20%用户处于登录状态,20%用户处于新增民宿,20%用户处于注销民宿,40%用户处于民宿信息查询状态下,系统50用户在线的吞吐率(TPS)应达到30事务/秒。
2.2测试计划
描述软件性能测试的范围、方法、资源、进度。测试计划[5]目的主要有:明確测试范围、测试对象;明确测试目标;明确测试环境需求,包括:测试需要的软、硬件环境以及测试人力需求;确定测试方案,测试的方法和步骤[6];制定测试工作的时间安排;确定测试需要输出的结果和结果表现形式。
2.3测试设计及执行
测试设计包含三项内容:环境确认、性能测试、测试方法。环境确认是指由于脚本开发环境和实际测试环境不同,在开发环境下开发的测试脚本需要到测试环境中进行确认测试。如何进行环境确认是指运用VuGen逐一在测试环境中执行所有脚本,确认脚本能够在测试环境中顺利运行。性能测试是指在一定量的并发情况下测试以下指标:业务的平均交易响应时间、并发操作下的响应时间、混合场景下的吞吐率。通过性能测试,模拟实际生产环境中在民宿信息管理平台中的压力情况,得到此时的民宿信息管理平台性能表现数据。性能测试的测试方法是指按照性能测试需求设置测试场景。设置50并发量,记录每次测试数据,收集系统性能变化曲线。
测试用例主要用于指导性能测试人员进行性能测试,并对性能测试场景设计与执行给出参考信息,同时适用项目经理、开发经理、测试经理及其他人员对被测系统的性能评测点进行评估与了解。
并发测试XQ_001:
使用LoadRunner12.6 Virtual User Generator录制民宿信息管理平台的操作过程,生成性能测试脚本,手动设置思考时间,关闭缓存,将系统登录、民宿信息新增、民宿信息查询、民宿信息注销动作各作为一个事务,在民宿信息查询。
表2中,参数化设置:用test001~test050进行脚本用户名参数化,新增格式使用temp{HostIDHead}-{IDTail},HostIDHead参数化数据从00~49,并使用Unique+Once设置;IDTail参数化从1~1000的%04d格式设置。集合点设置:查询事务之前,lr_rendezvous("jihedian")。检查点设置:登录事务开始之后,web_reg_find("Text=欢迎您",LAST);注销事务开始之后,web_reg_find("Text=注销成功",LAST)。关联设置:查询事务开始之后,格式为:
web_reg_save_param_regexp(
"ParamName=id",
"RegExp=\\{\"dataList\":\\[\\{\"id\":(.*?),",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=No",
LAST);
吞吐率测试XQ_002:
表3是吞吐率测试用例。VuGen:使用LoadRunner12.6 Virtual User Generator分别录制4个某民宿信息管理系统的操作过程,生成性能测试脚本,手动设置思考时间,关闭缓存,关闭每个动作作为一个事务。
表3中,系统登录TPScon:用test001~test010进行脚本用户名参数化,使用Unique+Once让一个虚拟用户可以使用唯一的账号登录,登录事务使用Login_user表示。新增民宿InsertHostNew:用test011~test020进行脚本用户名参数化,新增格式使用temp{HostIDHead}-{IDTail},HostIDHead参数化数据从10~19,并使用Unique+Once设置;IDTail参数化从1~1000的%04d格式设置,最后得到一个虚拟用户可以使用唯一的用户账号进行新增民宿功能,新增事务使用insertHost表示。注销民宿ExitHouseNew:用test021~test030进行脚本用户名参数化,并使用Unique+Once设置;对民宿编号后面的数字使用{num1}进行参数化,参数化数据从-00021~-00031;对民宿地址使用{id}进行关联,最后得到一个虚拟用户可以使用唯一的用户账号进行注销民宿功能,注销事务用ExitHost表示。民宿信息查询SearchNew:用test031~test050进行脚本用户名参数化,最后得到一个虚拟用户可以使用唯一的用户账号进行民宿查询功能,查询事务用searchHost表示。
Controller:场景设计使用百分比模式。其中,系统登录TPScon 20%、新增民宿InsertHostNew 20%、注销民宿ExitHouseNew 20%、民宿信息查询SearchNew40%。
3.测试结果分析
在利用LoadRunner12.6 Controller压测整个测试过程后,使用LoadRunner12.6 Analysis生成相应的图表和报告,包括概要报告、运行Vuser、每秒点击次数、吞吐量、事务摘要、平均事务响应时间等,通过分析这些测试指标来评估系统性能。
并发测试响应时间如图2所示。
由图2可知,此次并发测试中的“系统登录”操作的事务平均响应时间为0.149s;“新增民宿”操作的事務平均响应时间为0.118s;在“民宿信息查询”前加入集合点操作,事务平均响应时间为0.596s;“注销民宿”操作的事务平均响应时间为0.385s。同时,此次测试需求操作的响应时间小于5s。显而易见,“系统登录”、“新增民宿”、“民宿信息查询”、“注销民宿”四项操作的平均响应时间均小于5s。因此,此次并发测试符合性能测试条件要求。
并发测试其他测试结果如表4所示。
如表4可知,此次并发测试中TPS的最大数值为62.450事务/秒。由此可知,在运行性能测试的过程中,测试场景中每秒最多同时运行62.450项事务。系统在负载测试期间,虚拟用户从Web服务器接收或发送的数据,在160s处出现最大吞吐量 784769675字节。具体事务数如3所示。
由图3可知,“系统登录”操作的成功事务数为4421,且不存在错误事务。“新增民宿”操作的成功事务数为4421,且不存在错误事务。“民宿信息查询”操作的成功事务数为4380,且不存在错误事务。“注销民宿”操作的成功事务数为4380,且不存在错误事务。
吞吐率测试TPS如图4所示。
由图4可知,系统50用户在线下的TPS最大数值为59.875事务/秒,平均值为52.254事务/秒。同时,此次测试需求TPS数值应超过30事务/秒。因此本次的吞吐率测试TPS数值符合测量要求。
吞吐率测试用户数目如图5所示。
由图5可知,此次吞吐率测试场景存在10名用户处于登录状态,10名用户处于新增民宿状态,10名用户处于注销用户状态,20名用户处于民宿信息查询状态的测试场景。同时,测试需求为:20%用户处于登录状态,20%用户处于新增民宿状态,20%用户处于注销用户状态,40%用户处于民宿信息查询状态。由于此次吞吐率测试中的虚拟用户总数为50名虚拟用户。因此,在设置吞吐率测试场景时,需设置10名用户处于登录状态,10名用户处于新增民宿状态,10名用户处于注销用户状态,20名用户处于民宿信息查询状态的测试场景。综上所述,此次吞吐率测试符合性能测试条件要求。
吞吐率测试其他测试结果如表5所示。
如表5可知,此次吞吐率测试中的“系统登录”操作的事务平均响应时间为0.019s,“新增民宿”操作的事务平均响应时间为0.031s,“民宿信息查询”操作的事务平均响应时间为0.064s,“注销民宿”操作的事务平均响应时间为0.083s。系统在负载测试期间,虚拟用户从Web服务器接收或发送的数据,在224s处出现最大吞吐量 205516769625字节。具体事务数如3所示。
由图6可知,“系统登录”操作的成功事务数为3221,且不存在错误事务。“新增民宿”操作的成功事务数为2616,且不存在错误事务。“民宿信息查询”操作的成功事务数为2925,且不存在错误事务。“注销民宿”操作的成功事务数为2460,且不存在错误事务。
4.总结
通过添加事务、检查点、参数化、集合点、关联增强脚本,手动设置思考时间,关闭缓存,关闭每个动作作为一个事务的测试策略,最后得到的测试结果符合测试需求,这证明本文的增强脚本和测试策略是可行的。在其他类似的利用LoadRunner工具应用到具体Web系统性能测试项目里面,本文的测试策略具有广泛的实用推广价值。
参考文献:
[1]于涌,王磊,曹向志,高楼,于跃. 精通软件性能测试与LoadRunner最佳实战[M].人民邮电出版社:软件测试丛书, 201306.762.
[2]李旭东,朱立谷.基于LoadRunner的参数化策略的研究与应用[J].计算机应用与软件,2012,29(12):232-236.