LoadRunner 11 使用教程
LoadRunner 11 是一款由 Micro Focus(原 HP)开发的业界领先的负载测试和性能测试工具,它通过模拟成千上万的用户并发操作,来对应用系统进行压力测试,从而帮助您发现系统性能瓶颈、评估系统容量和稳定性。

本教程将分为以下几个部分:
- LoadRunner 核心概念与工作流程
- 详细步骤:从录制到分析
- VuGen 脚本开发进阶
- Controller 场景设计与执行
- Analysis 结果分析
- 常见问题与最佳实践
第一部分:LoadRunner 核心概念与工作流程
核心组件
LoadRunner 主要由三个核心模块组成:
- Virtual User Generator (VuGen):虚拟用户生成器,用于录制、编辑和调试脚本,将用户的操作行为转化为可执行的脚本(C 语言)。
- Controller:控制器,用于创建、管理和运行负载测试场景,可以模拟大量虚拟用户(Vuser)对系统施加压力,并实时监控服务器和应用的性能指标。
- Analysis:分析器,用于收集、合并和负载测试结果,生成图表和报告,从而帮助您分析系统性能瓶颈。
工作流程
一个典型的 LoadRunner 测试流程如下:
- 计划测试:明确测试目标、测试场景(如并发用户数、测试时长)、监控指标等。
- 录制脚本:使用 VuGen 录制用户在业务系统上的关键操作流程。
- 完善脚本:在 VuGen 中增强脚本,添加参数化、关联、检查点、事务等,使其更接近真实用户行为。
- 设计场景:在 Controller 中设计测试场景,设置虚拟用户数量、运行方式(如加压、持续)、负载机等。
- 运行场景:执行负载测试,同时监控被测服务器(如 CPU、内存、网络)和应用的性能数据。
- 分析结果:使用 Analysis 工具分析测试数据,定位性能瓶颈,生成测试报告。
第二部分:详细步骤:从录制到分析
我们将以一个最经典的“Web Tours”示例(LoadRunner 自带的 demo 应用)为例,走一遍完整流程。

使用 VuGen 录制脚本
-
打开 VuGen:
启动 LoadRunner 11,选择 "Virtual User Generator"。
-
创建新脚本:
- 在弹出的窗口中,选择 "Web - HTTP/HTML" 协议(这是最常见的 Web 应用协议),然后点击 "OK"。
- 给你的脚本起一个名字,
WebTours_Login,并选择一个保存位置,点击 "Create"。
-
录制设置:
(图片来源网络,侵删)- VuGen 会弹出 "Recording Options" 窗口。
- URL Address:输入 Web Tours 应用的地址,通常是
http://localhost:1080。 - Recording Mode:保持默认的 "HTML-based script"。
- Start recording immediately:勾选此项,点击 "OK" 后会自动打开浏览器开始录制。
- 点击 "OK" 开始录制。
-
执行业务操作:
- VuGen 会自动打开一个浏览器(或集成到 IE 中),你需要模拟一个用户的完整操作流程:
- 在首页点击 "Sign-In"。
- 输入用户名(如
jojo)和密码(如bean)。 - 点击 "Sign-In" 按钮登录。
- 登录成功后,点击 "Logout" 退出。
- 操作完成后,回到 VuGen 窗口,点击工具栏上的 停止录制 按钮(红色方块)。
- VuGen 会自动打开一个浏览器(或集成到 IE 中),你需要模拟一个用户的完整操作流程:
-
查看录制的脚本:
- 停止录制后,你会看到生成的脚本,脚本主要分为三部分:
- vuser_init:初始化部分,只运行一次,通常用于登录等前置操作。
- Action:主体部分,会按照迭代次数循环执行,你的核心业务逻辑(登录、查询等)都在这里。
- vuser_end:结束部分,只运行一次,通常用于登出等后置操作。
- 你可以在 "Tree" 和 "Script" 视图之间切换。"Tree" 视图以结构化方式展示请求,"Script" 视图显示底层的 C 语言代码。
- 停止录制后,你会看到生成的脚本,脚本主要分为三部分:
完善脚本(增强脚本)
录制的脚本只是一个骨架,需要进一步完善才能用于真实的负载测试。
-
参数化:
- 目的:避免所有虚拟用户使用相同的数据(如用户名、密码),这会导致缓存或会话问题,无法模拟真实场景。
- 操作:
- 在 "Tree" 视图中,找到登录请求中的
userName和password。 - 右键点击
jojo,选择 "Replace with a parameter..."。 - 在弹出的窗口中,选择 "New Parameter",命名为
username,点击 "OK"。 - 同样,将
bean参数化为password。 - VuGen 左下角会出现 "Parameter List" 窗口,点击 "Create New Table",输入多组用户名和密码数据(至少 5-10 组)。
- 在 "Tree" 视图中,找到登录请求中的
-
关联:
- 目的:处理动态数据,很多应用(如 Session ID, View State)的值是动态生成的,每次请求都不同,录制时捕获的是固定值,回放时会失败。
- 操作:
- 在回放脚本时,如果遇到 "Error -27160: Session 'MERRAAGE...' has expired" 之类的错误,通常就是需要关联。
- 在 "Tree" 视图中,找到返回动态值的请求(通常是登录后的第一个页面)。
- 右键点击该请求,选择 "Find Correlation..."。
- VuGen 会自动扫描并建议可关联的值,检查建议是否正确,然后点击 "Correlate"。
- 成功后,VuGen 会在脚本中自动生成
web_reg_save_param函数来捕获这个动态值。
-
添加检查点:
- 目的:验证脚本回放是否成功,通过检查返回的页面中是否存在特定的文本,来判断业务是否成功执行。
- 操作:
- 在登录成功的请求后,添加一个检查点。
- 在 "Tree" 视图中,右键点击登录成功的响应,选择 "Add a step -> Check for a text in the response"。
- 在弹出的窗口中,输入一个只有登录成功后才会出现的文本,"Sign Out"。
- 给这个检查点命名,如 "Login_Success_Check"。
-
添加事务:
- 目的:衡量某个业务流程的性能(如登录、查询订单)。
- 操作:
- 在 "Script" 视图中,将光标定位到 "lr_start_transaction("Login");" 的位置。
- 在登录请求前,输入
lr_start_transaction("Login");。 - 在登录成功的响应后,输入
lr_end_transaction("Login", LR_AUTO);。 - 这样,"Login" 这个事务的响应时间就会被记录下来。
-
运行和调试脚本:
- 点击工具栏上的 Start/Stop Recording 按钮旁边的箭头,选择 "Run from Step" 或 "Run"。
- VuGen 会执行脚本,并在底部 "Execution Log" 中显示运行结果,如果有错误(如关联失败、参数错误),日志会明确指出,你需要根据错误信息修改脚本,直到脚本可以成功回放。
使用 Controller 设计场景
-
打开 Controller:
启动 LoadRunner 11,选择 "Controller"。
-
创建场景:
- 选择 "Create a new scenario"。
- 在 "Available Scripts" 中找到你刚刚创建并保存好的
WebTours_Login脚本,点击向右箭头将其添加到 "Scenario Groups" 中。
-
设计负载模式:
- 选择场景类型:选择 "Manual Scenario"(手动场景),这样可以更精确地控制虚拟用户。
- 设置虚拟用户:
- 在 "Scenario Groups" 中,选择你的脚本。
- 在 "Number of Vusers" 中输入你想要模拟的并发用户数,
50。
- 设置运行模式:
- 选择 "Initialize all Vusers before running the scenario"(所有用户同时开始)。
- 选择 "Run for the following duration"(运行指定时长),
10分钟。 - 选择 "Stop Vuser when duration is over"(时间到后停止所有用户)。
-
添加监控:
- 目的:在测试过程中实时观察服务器的健康状况,这是定位瓶颈的关键。
- 操作:
- 在 Controller 界面的下方,点击 "New available graph" 按钮。
- 选择你要监控的指标,最常用的有:
- Running Vusers:运行中的虚拟用户数。
- Hits per Second:每秒点击数。
- Transactions per Second:每秒事务数。
- Average Transaction Response Time:平均事务响应时间。
- Web Resources:Web 资源(如页面、图片)的下载时间。
- 你需要添加对 服务器 的监控。
- 点击菜单栏的 "Measurements" -> "Add Measurements..."。
- 在 "Add Measurements" 窗口中,点击 "Add..." 按钮。
- 输入你要监控的服务器 IP 地址,选择监控器类型(如 "Windows Resources" 或 "Linux Resources"),输入用户名和密码。
- 选择要监控的计数器,如
Processor,Memory,Network Interface等。
-
运行场景:
- 所有设置完成后,点击工具栏上的 Start Scenario 按钮(绿色三角形)。
- 场景开始运行,你可以实时看到各个图表的变化,观察服务器指标和客户端指标(响应时间、TPS)的变化趋势。
使用 Analysis 分析结果
-
打开 Analysis:
- 当场景运行结束后,Controller 会提示你是否将结果加载到 Analysis 中,选择 "Yes",Analysis 会自动启动并加载数据。
- 如果没有自动启动,你也可以手动在 Controller 中点击 "Results" -> "Analyze Results..."。
-
分析概览:
Analysis 顶部是概览页面,总结了测试的关键指标,如总事务数、平均响应时间、每秒事务数等。
-
使用图表分析:
- 左侧是 "Graphs" 树状列表,包含了所有你在 Controller 中设置过的图表,以及更多分析图表。
- 关键分析点:
- 响应时间 vs. 负载:随着用户数增加,响应时间是平稳、线性上升,还是急剧恶化?急剧上升通常意味着性能瓶颈。
- TPS vs. 负载:TPS 是否达到一个平台期然后开始下降?TPS 下降是系统达到处理能力上限的典型标志。
- 服务器资源使用率:
- CPU 使用率:持续高于 80%-90% 可能是瓶颈。
- 内存使用率:持续增长且不回收,可能存在内存泄漏。
- 磁盘 I/O:磁盘队列长度过长,说明磁盘是瓶颈。
- 错误率:是否有错误产生?错误率上升是系统不稳定的表现。
-
合并场景:
如果你想对比多次测试的结果,可以使用 "Merge Graphs" 功能,将不同场景的数据放在同一张图上进行对比。
-
生成报告:
分析完成后,点击 "File" -> "Export" -> "Report...",可以生成一个 HTML 格式的正式测试报告,用于分享和存档。
第三部分:VuGen 脚本开发进阶
- 集合点:在 Controller 中设置,用于在脚本中设置一个等待点,让所有虚拟用户到达此点后,同时释放,模拟瞬间的高并发压力。
- 思考时间:模拟用户在操作之间的真实停顿,在录制时,VuGen 默认会记录思考时间,你也可以在脚本中手动添加
lr_think_time()函数来调整或禁用它。 - 关联函数:
web_reg_save_param是最核心的关联函数,它的作用是在服务器响应中查找一个左边界和右边界,并将中间的动态值保存为一个参数。 - LoadRunner 函数:LR 提供了丰富的函数库,如:
lr_output_message():在日志中输出信息。lr_eval_string():解析参数。web_url(),web_submit_data():用于手动发送 HTTP 请求。
第四部分:常见问题与最佳实践
常见问题
- 问题:脚本回放失败,提示 "Error -27160: Session has expired"。
- 解决:通常是因为没有正确处理 Session ID 或其他动态数据,需要使用关联功能。
- 问题:所有虚拟用户都使用同一组参数。
- 解决:检查参数化设置,确保数据表有多行数据,并且在 "Update value on" 中选择了 "Each iteration" 或 "Each occurrence"。
- 问题:Controller 中连接不到负载机。
- 解决:
- 确保负载机和 Controller 机器网络互通。
- 检查负载机上 LoadRunner 的 Agent Process 是否正在运行。
- 在 Controller 的 "Scenario" -> "Enable Controller..." 中,勾选 "Remote Agent" 并指定负载机 IP。
- 检查防火墙设置是否阻止了 LoadRunner 的通信端口(默认为 54345)。
- 解决:
最佳实践
- 从简单到复杂:先录制并调试单个业务流程的脚本,确保其稳定可靠,再组合成完整的业务场景。
- 明确测试目标:每次测试前想清楚,这次测试是为了验证什么?是压力测试、负载测试还是稳定性测试?目标不同,场景设计也不同。
- 监控是关键:没有服务器监控的性能测试是不完整的,客户端数据(响应时间)告诉你用户体验差,服务器数据告诉你瓶颈在哪里。
- 持续迭代:性能测试是一个迭代过程,发现瓶颈 -> 优化代码/配置 -> 再次测试 -> 验证优化效果。
- 版本控制:将你的脚本和场景文件纳入版本控制系统(如 Git),方便追踪和管理。
- 清理环境:测试结束后,确保清理测试数据,避免对生产环境造成影响。
LoadRunner 11 虽然版本较老,但其核心思想和工作流程至今仍是性能测试领域的基石,掌握它,你将能够系统地、科学地进行性能测试,为应用的稳定运行保驾护航,这份教程为你提供了一个清晰的路线图,最重要的还是 动手实践,多录、多编、多跑、多分析,才能真正将知识转化为技能。
