1. LoadRunner 11入门:性能测试工程师的经典工具
十年前我第一次接触LoadRunner 11时,它已经是性能测试领域的标杆工具。虽然现在市场上出现了JMeter、Gatling等新秀,但LoadRunner在复杂场景下的稳定性和分析深度依然难以替代。这个版本之所以至今仍被广泛使用,主要因为其成熟的协议支持和可靠的测试结果。
LoadRunner 11的核心价值在于模拟成千上万用户对系统施加压力,通过监控服务器资源消耗、事务响应时间等关键指标,找出系统瓶颈。与JMeter这类开源工具相比,它的优势体现在三个方面:第一是对企业级协议(如Citrix、SAP)的深度支持;第二是强大的结果分析模块;第三是完善的脚本调试功能。
注意:虽然LoadRunner 12及后续版本已经发布,但11版本在Windows 7/Server 2008环境下兼容性最佳,这也是许多企业坚持使用的原因。
2. 安装前的关键准备工作
2.1 系统环境检查
LoadRunner 11对运行环境有特定要求:
- 操作系统:Windows 7 SP1或Windows Server 2008 R2(实测Windows 10可能遇到DPI缩放问题)
- 内存:至少4GB(建议8GB以上)
- 磁盘空间:安装目录需要5GB可用空间
- 屏幕分辨率:不低于1280×1024(否则部分工具栏会重叠)
特别提醒:必须关闭杀毒软件实时防护功能,否则可能导致许可证服务异常。我在某次安装后持续遇到"Failed to connect to license server"错误,最终发现是杀毒软件拦截了TCP端口443。
2.2 安装包获取与验证
官方安装包通常包含以下组件:
- 主程序安装文件(LR_11_Setup.exe)
- 许可证文件(license.lic)
- 补丁包(LR_11_Patch3.iso)
建议通过MD5校验文件完整性。常见问题包括:
- 下载中断导致DLL文件缺失
- 杀毒软件误删关键组件(如bin目录下的lmadmin.exe)
- 安装包版本不匹配(如混用11.0和11.5版本)
3. 分步安装指南与避坑要点
3.1 主程序安装流程
- 右键安装程序选择"以管理员身份运行"
- 在欢迎界面选择"LoadRunner完整安装"
- 修改安装路径(避免包含中文或空格)
- 组件选择界面建议:
- 必选:Virtual User Generator、Controller、Analysis
- 可选:Additional Components(根据协议需求)
- 安装完成后不要立即重启
关键技巧:安装进度到80%左右时,可能会长时间卡住。此时不要强制终止,实际后台正在注册COM组件。
3.2 许可证配置实战
许可证问题是最常见的安装后故障。正确配置步骤:
- 将license.lic复制到C:\Program Files\HP\LoadRunner\bin
- 运行License Utility(开始菜单 > HP LoadRunner > Tools > License Utility)
- 点击"Add License"导入文件
- 验证状态应为"Permanent"而非"Temporary"
如果遇到"Invalid license"错误,尝试:
- 检查系统时间格式(应设为yyyy-MM-dd)
- 重新安装FlexNet Licensing服务
- 手动启动"HP LoadRunner License Server"服务
4. 协议选择与录制配置详解
4.1 协议选择策略
创建脚本时,协议选择直接影响录制效果。常见选择原则:
| 应用类型 | 推荐协议 | 备注 |
|---|---|---|
| Web应用 | Web(HTTP/HTML) | 现代SPA建议启用AJAX记录 |
| Java客户端 | Java over HTTP | 需配合JRE环境 |
| 桌面应用程序 | Windows Sockets | 可能需要手动关联数据包 |
| Oracle Forms | Oracle Web 11i | 需配置Forms监听端口 |
| SAP GUI | SAP Web | 需要安装SAP客户端组件 |
我曾在一个ERP项目中错误选择了Win32协议,导致脚本无法回放。后来发现应该使用SAP Web协议,这个教训说明协议选择需要具体分析系统架构。
4.2 录制配置最佳实践
- 启动Virtual User Generator
- 选择File > New Script and Solution
- 设置录制选项:
- Recording Mode:建议使用HTML-based script
- Recording Level:标准用户选"URL-based",高级用户选"HTML-based"
- 勾选"Record the start and end of action"便于调试
录制过程中常见问题处理:
- 元素无法捕获:尝试调整浏览器缩放比例至100%
- 弹出窗口遗漏:在Recording Options > HTTP Properties启用弹出窗口处理
- 动态参数未关联:手动在Recording Options > Correlation中添加规则
5. 脚本录制全流程演示
5.1 典型Web应用录制案例
以电商登录流程为例:
- 创建Web(HTTP/HTML)协议脚本
- 设置起始URL为网站首页
- 点击开始录制,自动打开默认浏览器
- 执行以下操作序列:
- 点击登录按钮
- 输入测试账号密码
- 提交表单
- 验证登录成功页面
- 停止录制生成脚本
关键检查点:
- 检查自动关联的动态参数(如sessionID)
- 验证think time设置是否合理
- 确认事务点(lr_start_transaction)位置准确
5.2 脚本增强技巧
基础录制生成的脚本通常需要手动优化:
// 原始录制代码 web_url("login", "URL=http://example.com/login", "Resource=0", "RecContentType=text/html", LAST); // 优化后代码 lr_start_transaction("UC01_Login"); web_reg_save_param("SessionID", "LB=name=\"session\" value=\"", "RB=\"", LAST); web_submit_data("login_2", "Action=http://example.com/auth", "Method=POST", "EncType=application/x-www-form-urlencoded", ITEMDATA, "Name=username", "Value={USER}", ENDITEM, "Name=password", "Value={PASS}", ENDITEM, LAST); lr_end_transaction("UC01_Login", LR_AUTO);优化要点:
- 添加事务控制块
- 使用参数化替代硬编码({USER}/{PASS})
- 插入检查点(web_reg_find)
- 添加必要的等待时间(lr_think_time)
6. 常见问题排查手册
6.1 录制失败问题集
现象1:浏览器启动后无操作记录
- 检查杀毒软件是否拦截了网络流量
- 确认LoadRunner代理设置正确(Tools > Recording Options > Network)
- 尝试更换浏览器版本(IE8-11兼容性最佳)
现象2:脚本包含乱码
- 调整Recording Options > HTTP Properties中的编码设置
- 在Runtime Settings > Internet Protocol > Preferences里设置UTF-8
- 对于中文路径,确保系统区域设置为中文(简体,中国)
6.2 回放错误解决方案
错误1:27796 - Failed to connect to server
- 检查目标服务器是否可达
- 确认防火墙未拦截LoadRunner进程
- 在Run-time Settings > Internet Protocol里调整连接超时时间
错误2:26377 - No match found for the requested parameter
- 检查关联规则边界值(LB/RB)是否唯一
- 使用web_reg_save_param_ex替代旧函数
- 在脚本开头添加web_set_max_html_param_len扩大参数长度限制
7. 性能测试进阶配置
7.1 场景设计要点
在Controller中创建有效场景需要关注:
- 虚拟用户组分配策略
- 按业务角色分组(如买家/卖家/管理员)
- 设置合理的递增节奏(Ramp Up)
- 负载生成器配置
- 确保Load Generator服务已启动
- 多机负载时需要统一时间同步
- 监控计数器设置
- Windows资源:CPU队列长度、磁盘IO
- Web服务器:请求排队数、错误率
7.2 结果分析技巧
Analysis模块的核心使用流程:
- 合并多个测试结果(File > Merge)
- 筛选关键指标:
- 事务响应时间(90百分位值)
- 每秒点击量(Hits/Second)
- 系统资源利用率(CPU/Memory)
- 创建自定义图表:
- 叠加事务响应时间与用户数曲线
- 关联错误率与吞吐量变化
- 生成智能报告(Tools > Auto Report)
典型性能问题特征:
- 响应时间随用户数线性增长 → 应用层瓶颈
- 吞吐量达到平台后不再上升 → 系统资源瓶颈
- 错误率突然飙升 → 并发处理缺陷
8. 企业级应用实战经验
在某银行核心系统性能测试中,我们遇到一个典型问题:脚本在Controller中能正常运行,但在负载生成器上失败。经过排查发现:
- 根本原因:负载机缺少特定的安全证书
- 解决方案:
- 使用mmcv命令导出本地证书
- 通过MegaReg工具导入到负载机
- 在脚本中添加web_set_certificate_ex指定证书
- 验证方法:
- 单独在负载机运行vuser脚本
- 检查Windows事件日志中的Schannel错误
这个案例说明,企业环境下的性能测试需要特别注意安全组件的配置一致性。建议建立标准的负载机镜像,包含:
- 统一的Java运行时环境
- 必要的根证书库
- 共享的网络驱动映射
- 相同的杀毒软件例外规则
对于持续集成的场景,可以将LoadRunner脚本与Jenkins集成。关键配置步骤:
- 将测试场景保存为.lrs文件
- 创建批处理文件调用wlrun.exe执行测试
- 设置Jenkins构建后操作收集jtl结果
- 使用Analysis API生成趋势报告
这种方案在某电商平台的日常构建中,成功实现了每次代码提交后自动执行核心交易路径的性能回归,将性能问题发现时间从上线前提前到了开发阶段。