当前位置: 首页 > 测试知识 > 软件测试工具LoadRunner三大组件(VuGen、Controller、Analysis)详解
软件测试工具LoadRunner三大组件(VuGen、Controller、Analysis)详解
2025-12-01 作者cwb 浏览次数41

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 回答了 “结果如何?瓶颈在哪?”-它将负载测试产生的海量数据转化为有价值的洞察和结论。

文章标签: 软件测试 测试工具 第三方软件测试机构 第三方软件测试公司 软件测试用例 软件测试标准 软件测试中心
咨询软件测试