LoadRunner是一款业界领先的自动化负载测试工具,用来预测系统行为和性能。通过模拟成千上万的用户来对系统施加压力,从而发现性能瓶颈。这一切都是通过其三大组件协同完成的。
这三大组件分别是:Virtual User Generator (VuGen)、Controller 和 Analysis。它们分别对应了性能测试的三个主要阶段:脚本开发 -> 场景执行 -> 结果分析。
组件详解 : Virtual User Generator (VuGen) - “虚拟用户脚本生成器”
VuGen的任务是录制和编写虚拟用户(Vuser)脚本,用来模拟真实用户的操作行为。
主要功能
协议选择和录制
协议选择:LoadRunner支持上百种协议(如 HTTP/HTML, Web Services, Oracle, SAP等)。在开始前,必须根据被测系统的技术架构选择正确的协议。这是成功录制脚本的第一步。
录制操作:VuGen通过充当代理的方式,捕获客户端和服务器之间的所有通信。它记录下你的所有操作(点击、输入、导航等),并自动生成对应的脚本代码(默认是C语言)。
脚本增强和调试
录制生成的原始脚本非常脆弱,无法模拟真实的用户负载。因此必须对其进行增强。
事务(Transactions):
目的:衡量服务器的端到端性能。
操作:在关键业务操作(如登录、下单、查询)的开始和结束位置插入 lr_start_transaction 和 lr_end_transaction 函数。LoadRunner 会统计该事务的响应时间、通过率等。
实践:事务应该代表有意义的业务操作,并且其命名应清晰明了。
参数化(Parameterization):
目的:避免所有虚拟用户使用相同的数据,模拟真实世界中不同用户的行为。
操作:将脚本中的常量(如用户名、密码、搜索关键词)替换为参数。这些参数可以从文件、数据库或其他数据源中获取。
概念:需要设置参数的更新方式和取值顺序(如:每个用户唯一、每次迭代更新、顺序读取等)。
关联(Correlation):
目的:处理服务器返回的动态值(如 Session ID、Token、时间戳)。这些值每次会话都不同,如果脚本中直接使用录制的硬编码值,回放时必定失败。
操作:使用 VuGen 的“扫描关联”功能或手动编写代码,捕获服务器响应中的动态值,并将其保存到一个参数中,后续请求则使用这个参数来替代。
技术实现:通常使用 web_reg_save_param 等注册函数在请求之前捕获动态值。
检查点(Checkpoints):
目的:验证请求是否成功完成,而不仅仅是服务器返回了 HTTP 200 状态码。
操作:使用 web_reg_find 或 web_find 函数在服务器响应中搜索特定的文本或图片。如果找不到,则意味着业务操作可能失败。
集合点(Rendezvous):
目的:模拟瞬间的并发用户压力。
操作:在脚本的特定位置(如提交订单前)插入lr_rendezvous函数。当大量Vuser运行到这个点时,会暂停并等待,直到达到Controller中设置的释放条件后同时发起请求。
思考时间(Think Time):
目的:模拟真实用户在操作之间的停顿时间。
操作:录制时会自动捕获思考时间。在场景执行时,可以在Controller中设置是否忽略思考时间,或者按比例缩放思考时间,以制造更极端的压力。
组件详解:Controller- “负载测试指挥中心”
Controller 是 LoadRunner 的“大脑”,它负责设计、驱动、管理和监控整个负载测试场景。
主要功能
设计场景(Scenario Design)
规划负载:指定使用哪些 VuGen 脚本,以及每个脚本需要运行多少个Vuser。
负载生成器(Load Generators):为了模拟大量用户,单台机器性能不足。Controller可以管理多台负载生成器机器,将Vuser分布到这些机器上共同产生压力。
场景计划(Scenario Schedule):
面向目标场景:设定一个性能目标(如事务响应时间),让LoadRunner自动调整用户数来达到该目标。
手工场景:更常用,可以精确控制负载模式。
初始化:设置Vuser如何初始化。
启动:设置Vuser如何逐步启动(如:每15秒启动2个Vuser)。
持续时间:设置场景运行多长时间。
停止:设置Vuse 如何逐步停止。
运行时监控(Run-Time Monitoring)
实时图表:Controller 提供丰富的实时监控图表,让你在测试运行时就能洞察系统状态。
关键监控指标:
Running Vusers(运行中的虚拟用户数)
Transactions per Second(每秒事务数)
Transaction Response Time(事务响应时间)
Hits per Second(每秒点击量)
Windows Resources(Windows 资源):CPU、内存、磁盘 I/O 等。
Application/Web Server Performance(应用/服务器性能):可以通过SiteScope等工具监控。
Network Delay(网络延迟)
驱动执行
启动、停止、暂停场景,并处理执行过程中的异常。
组件详解: Analysis-“性能诊断专家”
测试执行完毕后,Controller会收集所有raw data(原始数据)。Analysis组件的作用就是将这些零散的数据合并、分析,并生成一份详尽的、图形化的性能测试报告,定位性能瓶颈。
主要功能
数据整合和报告生成
Analysis 会自动将来自 Controller、负载生成器、被监控系统的所有数据整合到一个会话中,并生成一个主图——事务摘要图,让你对测试整体结果一目了然。
深度关联分析
这是 Analysis 最强大的功能。仅仅看单个图表(如响应时间很慢)是找不到根本原因的。
方法:通过合并图表和自动关联功能,可以将不同指标的图表进行叠加关联。
经典案例:
问题:“登录”事务的响应时间在测试进行到 20 分钟时突然变长。
分析:
将 “运行 Vuser”图 和 “平均事务响应时间”图 合并,看响应时间变慢是否和用户数增加有关。
将 “系统资源(如 CPU)”图 和 “平均事务响应时间”图 合并,看响应时间变慢时,服务器的 CPU 使用率是否也达到了 100%。
将 “网络延迟”图 和 “平均事务响应时间”图 合并,看问题是否出在网络层面。
通过这样的层层关联,可以快速将性能问题定位到具体的系统组件(如应用服务器、数据库、网络等)。
丰富的图表和报告
Analysis 提供了数十种预定义的图表,从不同维度展示性能数据。
可以自定义报告内容,并导出为 Word、PDF、HTML 等格式,用于编写专业的性能测试报告。
VuGen 回答了 “模拟什么?”- 它定义了单个用户的行为。
Controller 回答了 “模拟多少?如何模拟?”-它将单个用户行为放大成并发负载,并管理整个测试过程。
Analysis 回答了 “结果如何?瓶颈在哪?”-它将负载测试产生的海量数据转化为有价值的洞察和结论。