标题 | 基于LoadRunner的企业级应用性能测试设计与实现 |
范文 | 王淑满 潘丽云 田雨 马宏全 钟坚飞
摘要:目前软件系统在使用过程中的性能表现已经成为衡量软件质量的重要标准,该文基于LoadRunner性能测试工具,结合国家电网有限公司新一代电子商务平台(ECP2.0)项目,论述了LoadRunner的工作原理、性能测试方案制定、测试脚本设计、场景执行、测试结果分析以及如何基于测试结果定位系统存在的性能瓶颈,并进行性能优化,以确保交付的软件系统满足预期性能指标。 关键词:性能测试;LoadRunner;性能优化 中图分类号:TP311 ? ? ? ?文献标识码:A 文章编号:1009-3044(2020)25-0209-03 1引言 随着计算机技术的飞速发展,越来越多的企业为了提高生产运营效率、降低运营成本和风险大力推进信息化项目建设。然而,在系统的用户量、资源的需求量、数据的存储量与日俱增的情况下,越来越多的性能问题不断涌现,页面无法正常访问、加载时间长导致用户体验差,服务器CPU、内存利用率高导致服务器资源告警等,这些问题的产生将最终导致终端用户无法正常开展工作,给企业生产经营造成不可预估的后果。在这种情况下,在运系统的稳定、高效备受人们的关注。为了降低系统上线后发生性能问题的风险,在系统上线前对系统进行性能测试必不可少。 本文以“新一代电子商务平台(ECP2.0)”项目中的“质量抽检问题记录新增”性能测试为例,详细介绍ECP2.0项目性能测试过程、问题分析及系统优化的过程。 2 性能测试基础 2.1 性能测试基本概念 性能测试是指在最大限度地模拟系统在实际使用环境下的业务压力或用户场景来运行系统,同时在系统运行过程中采集相关性能指标,并在测试结束后对运行过程中采集的指标数据进行分析,从而判断系统性能是否达到预期要求。由于性能测试场景执行、指标监控及分析等比较复杂,所以性能测试一般需要借助测试工具来完成。 2.2测试目的 本文论述了ECP2.0项目性能测试过程,通过测试验证系统是否满足预期性能指标,从而判断系统是否达到上线运行标准,若系统性能不满足上线运行标准则需要进行性能优化。 3 LoadRunner介绍 LoadRunner是目前比较流行的一款自动化性能测试工具,它通过模拟成百上千的用户同时操作被测系统功能,在系统测试过程中自动监控服务器资源使用情况,并在测试执行完成后自动分析测试数据并生成测试报告。LoadRunner分为三大组件,Virtual User Generator、Controller及Analysis。 (1)Virtual User Generator:即虚拟用户生成器,用来录制及调试Vuser脚本,它能够支持Web(HTTP/HTML)、Flex、SAP-Web、SAPGUI等几十种主流协议,并支持IE、火狐、谷歌等多种浏览器版本的脚本录制,且支持JAVA、VB、C语言等多种脚本语言的开发。脚本编写过程中可通过设置集合点、参数化使脚本更能够接近真实用户操作,也可通过设置检查点来判断脚本执行过程中系统是否能够正常响应。总之,VuGen具有非常强大的脚本录制及编辑功能。 (2)Controller:即控制器,是整个压力测试的控制中心,用于管理和维护测试场景,是设计与执行性能测试场景的组件,其中的Load Generator、Monitor等可实现模拟真实用户在系统上的操作行为,且在测试场景执行过程中,同时采集Vuser、操作系统、服务器等各种运行数据,这些数据是分析系统性能的基础。 (3)Analysis:即结果分析器,它提供了非常强大的数据分析及图表展示功能。场景执行完成后,Analysis将场景执行过程中采集的各种数据进行分析,并生成包含各种图表的测试报告,该报告可作为判断系统性能及分析性能瓶颈的重要依据。 LoadRunner三大组件相互协作,它们共同完成了从编写性能测试脚本到生成性能测试报告的整个性能测试过程。 4测试过程及优化 4.1 测试过程介绍 结合ECP2.0项目自身特点,将其性能测试划分为测试方案设计、测试脚本设计与编写、测试场景设计与执行、测试结果分析、性能优化几个阶段。 本文以“質量抽检问题记录新增”为例,详细介绍该功能性能测试过程以及测试过程中每个阶段完成的主要工作。 1)测试方案设计 ECP2.0系统测试方案设计阶段主要工作内容为确定测试范围、获取性能需求、分析业务功能及数据等。通过用户调研、专家判断等方式确定被测系统的测试范围,及待测功能点的性能指标,包括每个被测功能的容量指标、时间指标及资源利用指标等,并形成性能测试用例。 “质量抽检问题记录新增”需要执行并发测试及稳定性测试,设计并发性能测试用例如表1,稳定性测试用例如表2。 2)测试脚本设计与编写 想要设计出高质量测试脚本,首先需要明确软件性能需求,了解被测功能特点,掌握测试重点。“抽检问题记录新增”性能测试的重点在于 “新增”及数据保存成功后的列表刷新,所以在测试脚本结构设计时将从“系统登录”到“进入‘质量抽检问题记录菜单页面”相关操作脚本放在vuser_init中,将新增过程脚本放在action中,将退出脚本放在vuser_end中。同时为了使脚本能够满足测试要求,达到测试目标,需要在脚本中添加集合点、事务、引入参数化、关联等。 根据上述脚本设计进行脚本编写,“质量抽检问题记录新增”性能测试脚本采用LoadRunner录制方式,脚本录制完成后需对脚本进行二次开发。 (1)将脚本中所有的“用户名”进行参数化,保证每个虚拟用户使用不同的账号操作被测系统。 (2)Action中,将“抽检问题记录新增”过程定义为一个事务,在点击【保存】按钮前插入开始事务,在数据保存成功并成功刷新列表页面后插入结束事务。 (3)Action中,在开始事务前插入集合点,保证并发测试时所有虚拟用户同时执行开始事务。 (4)Action中,将抽检问题记录中的部分输入项进行参数化,保证所有虚拟用户随机输入不同的信息进行保存。 (5)Action中,在保存请求前插入关联函数,通过关联函数动态获取保存操作服务器端返回的Response值中的状态码,并将动态获取的值保存到变量checkFlag中,在事务结束时通过if语句判断checkFlag值,如果为预期值则事务成功,反之事务失败。 3)测试场景设计与执行 性能测试场景设计与执行通过使用LoadRunner的Controller组件来完成,脚本编写完成并调试通过后,将脚本加入Controller组件,并按照测试用例设置场景。 按照并发测试用例设置测试场景,该场景虚拟用户数为100,在测试启动时一次性初始化所有用户,并通过启用集合点模拟100瞬时并发请求,测试执行时间为5分钟,执行结束后所有用户同时退出,测试过程中收集服务器负载信息。 按照稳定性测试用例设置测试场景,该场景虚拟用户数为50,在测试启动时一次性初始化所有用户,不启用集合点,测试执行时间为4小时,执行结束后所有用户同时退出,测试过程中收集服务器负载信息。 4.2 测试结果分析 通过LoadRunner的Analysis组件生成测试报告,得出测试结果见表3。 由表3数据可以看出,并发测试结果满足要求,但是稳定性测试结果中“平均响应时间”5.453秒、“TPS”2.664笔/秒,两项指标均不满足要求。 通过查看“平均响应时间”曲线(见图1)及“每秒处理事务数(TPS)”曲线(见图2)发现稳定性测试过程中随着场景执行时间的延长“平均响应时间曲线”逐渐上升,“每秒处理事务数(TPS)曲线”逐渐下降,说明测试过程中系统的处理能力越来越低。 进一步查看场景执行过程中服务器的资源使用情况,发现稳定性测试过程中随着测试时间的逐渐延长,数据库服务器CPU利用率曲线逐渐上升,场景执行结束时接近100%(数据库服务器CPU利用率曲线见图3),由此可以判断性能瓶颈在数据库。因为数据库使用的是Oracle,所以通过调取数据库的AWR报告,发现稳定性测试过程中数据保存成功后的列表页面刷新对应的SQL语句执行耗时越来越长,且耗费大量CPU。 因此得出结论:“质量抽检问题记录新增”稳定性测试过程中随着场景执行时间越来越长,数据库数据量逐渐增长,导致列表页面刷新SQL语句执行效率越来越低,最终造成稳定性测试指标不满足要求。 4.3 性能优化 提高查询SQL的执行效率可通过创建索引、优化SQL语句等方式实现。 1)创建索引提升SQL语句执行效率 通过分析列表页面刷新SQL语句执行计划,发现全表扫描导致消耗了过多的CPU资源,从而导致SQL语句执行效率低。根据WHERE条件,在对应字段上创建索引以避免全表扫描,从而降低SQL语句CPU资源消耗,加快列表页面刷新SQL执行速度。 2)明确查询字段提升SQL解析效率 检查SQL语句发现,SQL中使用了“SELECT *”。Oracle在对SQL语句进行解析时会将“*”转换成表中包含的所有列名, 所以对于包含列名较多的表意味着将耗费更多的时间,为了进一步提高SQL执行效率,需将“*”改为实际需要的列名,这样既可以降低SQL解析时间,也可以进一步减轻数据库的压力。 通过以上方法对“质量抽检问题记录新增”功能进行性能优化后,再次对该功能执行稳定性测试,测试结果中各项指标均满足要求,优化效果达到预期。 5结论 本文详细介绍了国家电网有限公司“新一代电子商务平台(ECP2.0)”项目性能测试过程、性能瓶颈分析及性能优化过程。从本文可以看出,性能测试是一个复杂的过程,既需要关注时间指标也需要关注服务器资源指标。服务器资源数据对性能瓶颈分析、问题定位及性能优化起着至关重要的作用。 参考文献: [1] 柳纯录.软件评测师教程[M].北京:清华大学出版社,2005. [2]巴顿(Ron Patton)著.软件测试(英文版)[M].2版.北京:机械工业出版社,2006. [3] 董跃华,彭稷栋.利用LoadRunner實现网页负载压力测试[J].江西理工大学学报,2010,31(5):52-56. [4] 张艳华.基于LoadRunner的网络考试系统性能测试实践[J].电脑知识与技术,2019,15(21):106-108. [5] 张君栋,戴洪磊.基于LoadRunner的WebGIS网站性能测试[J].北京测绘,2016(4):23-27,37. 【通联编辑:代影】 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。