目前常用于功能测试的工具有:
- HP LoadRunner(简称LR,商用软件):是一款适用于各种体系架构的自动化性能测试工具。LR的测试对象是整个企业的系统,通过模拟实际用户的操作行为和实时性能监控,来帮助你更快地查找和发现性能瓶颈。
- IBM Rational Performance Tester(简称RPT,商业软件):也是一款性能测试工具,适用于基于 Web 的应用程序的性能和可靠性测试。RPT将易用性与深入分析功能相结合,从而简化了测试创建、负载生成和数据收集,以帮助确保应用程序具有支持数以千计并发用户并稳定运行的性能。
- Apache JMeter(开源软件):基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等。
本文将从如下几个方面阐述LoadRunner的优势
- LoadRunner组件
- LoadRunner工作原理
- 基于LoadRunner的测试案例
LoadRunner主要由以下4个部分组成:
- 脚本生成器(Virtual User Generator)简称VuGen,提供了基于录制的可视化图形开发环境,可以方便简洁地生成用于负载的性能测试脚本。
- 负载生成器(Load Generator)简称LG,负责将VuGen脚本复制成大量虚拟用户对系统形成负载。
- 负载调度监控器(Controller) 负责对整个负载的过程进行场景设置,指定负载的运行方式和周期,同时提供了系统监控的功能。
- 数据收集分析器(Analysis) 通过Analysis我们可以对负载生成后的相关数据进行整理分析,从而定位性能瓶颈。
首先通过VuGen来录制模拟用户行为的脚本;然后根据性能测试目标,在Controller中设计场景,指定负载生成的方式(如LG使用数,并发用户数,执行时长等);接着执行场景并监控被负载服务器的性能指标;待场景执行完毕,调用Analysis来对生成的数据进行分析,最后得出性能测试报告。
使用LoadRunner进行性能测试,大体可分为3个步骤:
性能测试的第一步也是最重要的一步,就是生成虚拟用户脚本(Vuser script)。VuGen是基于录制-回放的工具,提供了整个脚本的开发环境。当你在应用程序中执行业务流程时,VuGen会将你的操作录制下来,自动转换成脚本,作为用户行为的模拟。
如果不能确定目标系统使用了哪些协议,可以使用Protocol Advisor 来进行协议分析。
可以看到,Vuser script脚本由以下三部分组成:
Action: 虚拟用户要做的业务操作,也就是测试内容的主体。可以迭代多次。
开始录制脚本后,可以在recording界面进行执行插入事务、插入集合点、插入注释以及结束录制等命令。
web_add_cookie:负责为Vuser脚本添加一个cookie信息。
web_submit_form:基于页面表单模拟用户的HTTP Post请求。该函数会自动检测在当前页面上是否存在form表单,然后将表单中数据进行传送。
web_custom_request:可以模拟用户的HTTP Get以及Post请求。
如常见的系统登录功能,在登录后服务器会返回SeesionID,登录后的操作都需要提交该SessionID以确认身份。使用Vugen录制脚本时,将会记录服务器返回的SessionID并在下一个请求中发给服务器。
添加事务主要涉及以下2个函数:
事务结束函数:lr_end_transaction(“事务名”,LR_AUTO)
lr_start_sub_transaction(“子事务名”,“父事务名”)
一般地,录制得到的脚本都会包含思考时间。思考时间是LoadRunner提供的用于模拟用户等待的方式。在性能测试时只有启用思考时间,才能真正地按照用户的操作速度来完成请求,得到真实情况下的负载数据;否则则是全负载下的理论峰值数据。
集合点函数能让虚拟用户集合在同一时间点上来进行操作,帮助生成有效可控的事务并发。
a.当百分之多少的用户到达集合点时继续执行脚本
c.当多少个用户到达集合点时继续执行继续
当我们录制完脚本后,需要对脚本进一步改进,通过参数化来确保脚本能够动态运行,从而更加真实地模拟真实用户操作。
选择要参数化的内容,右键菜单选择“Replace with a Parameter”,点击“Create New Parameter”。
参数化后,脚本中的username及password字段取值已经不是静态值了,而是由“{}”包围起来的动态参数值。
当Vuser script开发完成后,使用Controller将这个执行脚本的用户从单人转化为多人,从而模拟大量用户操作以形成系统负载。场景是一种模拟大量用户操作的技术手段,通过配置和执行场景向服务器产生负载,监控系统的各项性能指标。
通过设置一个运行目标,Controller会自动逐渐增加负载,测试系统能否稳定达到预期目标。如果达标则说明系统的性能符合测试目标,否则提示无法达标。自动场景是定性型性能测试,我们只关心最后性能测试的结论是否符合性能需求。
完成场景设计后,点击Run标签页切换到场景监控主界面。在左侧Scenario Groups中列举了所有Vuser的运行状态;在右侧Scenario Status中列举了当前场景的运行情况;在下方Available Graphs中列举了所有可监控的计数器类型,通过添加计数器实例可以让LR监控其性能数据(如CPU、内存使用率等)。
点击Start Scenario按钮执行场景,可以看到交互计划图开始变化,监控主界面的Vuser状态开始变化,Running Vuser开始增加,Transaction Graphs等计数器开始显示数据。
3.数据分析
Summary Report包括了场景统计信息、事务摘要、HTTP响应摘要等信息;Graphs默认只包含最基本的一些计数器数据图,可以通过右键Add New Item->Add New Graph来添加你需要的计数器。
Set Filter/Group By:对图形设置过滤规则;
View Raw Data:打开图形对应的原始数据;
Display Options:设置图形显示样式;
Auto Correlate: 自动分析该图形与其他计数器的关联性,通过它可以发现数据之间的相互依赖性,从而定位性能瓶颈。Collrelation Match代表关联性的强弱程度,数值越大说明关联性越强。
本站文章除注明转载外,均为本站原创或翻译

