最后更新:2026-09-04 01:19
实验20 LoadRunner脚本开发¶
难度:★★☆ | 预估时长:__ 分钟
20.1 实验目的¶
- 知识目标:理解 VuGen 录制/回放原理与 API 概念,理解 HTML-based 与 URL-based 两种录制模式的区别与选择;
- 技能目标:能用 VuGen 创建脚本并完成浏览器录制与代理录制,掌握思考时间、检查点、参数化、关联、集合点、事务六大技巧,能基于人资系统"添加岗位"业务完成脚本录制与增强;
- 素养目标:养成"注册型函数放请求之前、录制先配好编码、回放先看日志"的规范排错习惯。
20.2 实验环境¶
- 操作系统:Windows 10 / Windows 11;
- 工具:LoadRunner 12.55 Community(实验10 已装好,含 VuGen);
- 被测系统:人力资源综合服务系统(
http://192.168.X.XXX/suthr/logon)。
20.3 实验重难点¶
重点:VuGen 脚本三部分结构(vuser_init / Action / vuser_end);浏览器录制流程;参数化的取值/更新方式。
难点:HTML-based 与 URL-based 模式选择;关联(web_reg_save_param_ex)左右边界;检查点/关联均为注册型函数(必须放在请求之前)。
20.4 实验内容¶
20.4.1 理解 VuGen 脚本开发原理¶
1. 任务描述 理解 VuGen 录制与回放的工作机制。
2. 实验步骤
-
步骤 1:录制原理:VuGen 录制用户在录制会话期间执行的操作,只录制客户机和服务器之间的活动,自动生成模拟真实情况的函数,无需手动编写 API 调用。
-
步骤 2:回放原理:Vuser 脚本通过执行对服务器 API 的调用直接与服务器通信,客户机接口不需要系统资源。所以一台工作站可同时运行大量 Vuser,仅用几台测试计算机就能模拟较重的服务器负载。
-
步骤 3:特点:
- Vuser 脚本不依赖客户机软件,客户机 UI 未完成也可测服务器性能;
- VuGen 只能在 Windows 录制,但脚本可在 Windows 和 Linux 运行;
- 脚本可作为独立测试运行(验证功能)。
为什么几台测试电脑就能模拟很重的负载?
回放时 Vuser 脚本直接与服务器通信,不走浏览器界面,客户机接口几乎不占资源——就像不用真的安排 1000 个人去柜台办业务,而是让 1000 个"电话机器人"直接打给服务器,所以一台工作站可同时运行大量 Vuser。
20.4.2 创建脚本与浏览器录制¶
1. 任务描述 用 VuGen 创建"添加岗位"脚本并录制。
2. 实验步骤
- 步骤 1:打开 Virtual User Generator(VuGen),菜单 File → New Script and Solution,弹出 Create a New Script 对话框
在对话框中配置 Category(协议种类)、Protocol(协议)、Script Name、Location、Solution Name。
-
步骤 2:人资系统是基于 HTTP 协议的 Web 应用,协议选择 Web-HTTP/HTML。
-
步骤 3:单击"录制"按钮(或 Record → Record / Ctrl+R),弹出 Start Recording 对话框:
- Record into action:选择脚本存放的 Action;
- Application:选择浏览器(如 Microsoft Internet Explorer);
- URL address:输入人资系统访问地址。
-
步骤 4:Recording Options 关键设置:
- General → Recording:选择 HTML based script;
- HTML Advanced → 选择 "A script containing explicit URLs only";
- HTTP Properties → Advanced → 勾选 Support charset → UTF-8(防止中文乱码)。
-
步骤 5:单击 Start Recording,弹出 Recording 工具栏,调出浏览器自动访问地址。在浏览器中执行操作,完成后单击"停止录制",返回 VuGen 查看 Recording Report(无报错=录制成功)。
HTML-based vs URL-based 怎么选?
| 模式 | 特点 | 适用 |
|---|---|---|
| HTML-based | 一个页面一条语句,简洁直观、易维护(推荐、默认) | 基于浏览器的应用 |
| URL-based | 每个请求/资源一个函数,脚本长、更接近请求-响应本质 | 非浏览器应用、含 JS 请求、HTTPS 安全协议 |
常见错误与排错(录制乱码/失败排查)
- 录制内容中文乱码:检查 Recording Options → HTTP Properties → Advanced 是否勾选 Support charset 并选 UTF-8;
- 浏览器无法自动启动、录制事件为 0、卡死:改用代理录制(见 20.4.4);
- 协议选错:人资系统是 HTTP 协议的 Web 应用,选 Web-HTTP/HTML,选错协议录制不出脚本。
20.4.3 脚本结构与登录处理原则¶
1. 任务描述 理解 VuGen 脚本三部分结构及登录放哪。
2. 实验步骤
-
步骤 1:VuGen 脚本分为三部分:vuser_init、vuser_end、Action。vuser_init 和 vuser_end 只能各有一个,Action 可分成多个部分。
-
步骤 2:放置原则:
- 登录部分 → vuser_init;
- 登录后的操作 → Action;
- 注销关闭 → vuser_end;
- 若需在登录前设集合点 → 登录也要放 Action(vuser_init 中不能加集合点)。
-
步骤 3:重复执行时,vuser_init 和 vuser_end 只执行一次,重复执行的只是 Action。
vuser_init / Action / vuser_end 像什么?
vuser_init 像上班打卡(登录一次就行),Action 像一天里反复干的活(每个虚拟用户循环执行),vuser_end 像下班打卡(注销一次)。打卡只需要一次,中间的活儿才要一遍遍重复。
20.4.4 代理录制¶
1. 任务描述 用代理录制解决浏览器无法自动启动、录制事件为 0、卡死等异常。
2. 实验步骤
-
步骤 1:Start Recording 中 Record 选择:Remote Application via LoadRunner Proxy;
-
步骤 2:端口号:建议用不常用端口(如 9999);LoadRunner Proxy IP:本地连接;
-
步骤 3:浏览器(如 Firefox)设置手动代理:IP 填本地 IP,端口与 LoadRunner 一致;
-
步骤 4:开始录制后手动打开浏览器操作,LoadRunner 通过代理方式把操作录制下来。
常见错误与排错(代理录制)
- 浏览器手动代理的端口必须与 LoadRunner Proxy 设置的端口一致(如都用 9999),对不上就录不到任何事件;
- 代理 IP 填本地连接的 IP,别填成远程服务器的 IP。
20.4.5 思考时间(Think Time)¶
1. 任务描述 在脚本操作之间加入思考时间,模拟真实用户节奏。
2. 实验步骤
-
步骤 1:理解思考时间:用户发出一个请求后,等待一段时间再发下一个请求的间隔(休眠时间)。
-
步骤 2:插入方法:Design → Insert Script → New Step → Steps Toolbox 搜索 lr_think_time → 双击 → 输入思考时间(秒)。
-
步骤 3:运行时设置中关于思考时间的选项:
- Ignore think time:忽略思考时间;
- Replay think time as recorded:回放等于录制时间;
- Multiply recorded think time by **:乘以系数;
- Use random percentage:随机百分比;
- Limit think time to:限制最大思考时间。
-
步骤 4:实例:在打开登录页→单击"登录"之间、登录成功→单击"人资工作台"之间加入思考时间。
思考时间像什么?
思考时间就像真人操作时的"发呆"——你填完表单总要停一下再点下一步,lr_think_time 就是模拟这个停顿;没有它,虚拟用户个个"快得像机器人",压出来的负载节奏就不真实。
20.4.6 检查点(web_reg_find)¶
1. 任务描述 用检查点函数验证服务器返回内容是否正确。
2. 实验步骤
- 步骤 1:理解原理:VuGen 判断脚本成功是看服务器返回 HTTP 状态 200 OK。
但很多系统出错时不返回错误页,而是返回消息提示框(如"网站忙,请稍候"),此时需要检查点函数验证返回内容是否期望。
-
步骤 2:插入方法:Design → Insert Script → New Step → Steps Toolbox 搜索 web_reg_find → 双击 → 弹出 Find Text 对话框。
-
步骤 3:关键配置:Search for specific Text(要查找的文本)、Search in(查询范围)、Save count(出现次数存参数)、Fail if(什么情况失败)。
-
步骤 4:注意:web_reg_find 是注册型函数,必须放在搜索的请求之前。
-
步骤 5:实例:登录成功后页面显示"欢迎使用本系统!",以它为检查字段判断登录成功。提示:LoadRunner 对中文支持不友好,尽量选非中文字符做检查点。
常见错误与排错(检查点)
web_reg_find是注册型函数,必须放在要搜索的请求之前,放在后面等于"先答题再出卷",检查不到任何内容;- 回放显示 200 OK 不代表业务成功:很多系统出错时也返回 200,只是弹"网站忙"提示框,必须靠检查点验证返回内容。
20.4.7 参数化¶
1. 任务描述 把"添加岗位"的岗位名称参数化,让每个虚拟用户用不同数据。
2. 实验步骤
-
步骤 1:理解场景:注册用户名不允许重复,直接并发时所有线程输入相同用户名会产生大量错误。参数化让每个用户用不同数据,更真实地表达负载模型。
-
步骤 2:参数化步骤:
- 选中需要参数化的字段的值;
- 右击 → Replace with Parameter → Create New Parameter;
- 输入参数名称、选择参数类型;
- 单击 Properties → 设置参数值、取值、更新方式。
-
步骤 3:Select next row(取值方式):
- Sequential:顺序取值(每用户按相同顺序读取);
- Random:随机取值;
- Unique:唯一取值(为每个虚拟用户分配唯一数据);
- Same line as 某参数:与某参数取同行记录。
-
步骤 4:Update value on(更新方式):
- Each iteration:每次迭代取新值(同一次迭代内多次调用取值一样);
- Each occurrence:每次遇到参数取新值(前后两次不同);
- Once:只取一次值。
-
步骤 5:When out of values(值不够时):Abort Vuser(放弃)/ Continue in a cyclic manner(循环)/ Continue with last value(取最后值)。
-
步骤 6:运行时设置 Log 中勾选 Parameter substitution,回放日志可查看参数取值。
-
步骤 7:实例:将岗位名称参数化。
参数化像什么?
参数化就像给每个员工发不同的工牌——注册用户名不允许重复,100 个虚拟用户都填同一个名字会撞车报错;参数化让每人拿一份专属数据,负载模型才真实。
常见错误与排错(参数化)
- 回放日志看不到参数取值:运行时设置 Log 中要勾选 Parameter substitution;
- 取值方式别乱选:要求"每个虚拟用户数据不重复"用 Unique,值不够时要按需选 Abort / 循环 / 取最后值,选错会出现并发数据重复报错。
20.4.8 关联(web_reg_save_param_ex)¶
1. 任务描述 把脚本中写死的动态数据(如 Session ID)改为从服务器响应中提取。
2. 实验步骤
-
步骤 1:理解原理:脚本中内容是录制时写死的(Hard-Coded)。服务器每次会生成唯一辨识码(Session ID),回放时用旧 Session ID 会被服务器拒绝。关联就是把写死的数据变成从服务器响应中动态撷取的数据。
-
步骤 2:LoadRunner 12 常用关联函数:web_reg_save_param_ex(12 之前是 web_reg_save_param)。
-
步骤 3:插入方法:Design → Insert Script → New Step → Steps Toolbox 搜索 web_reg_save_param_ex → 双击。关键配置:
- Parameter Name:存放动态内容的参数名;
- Left Boundary / Right Boundary:左右边界字串(必须有,区分大小写);
- Ordinal:第几次匹配(默认 1,可 LAST / ALL);
- Save Offset / Save Length:偏移与长度。
-
步骤 4:注意:web_reg_save_param_ex 是注册型函数,必须放在查找的请求之前。
-
步骤 5:实例:将岗位类别通过关联实现参数化。
常见错误与排错(关联)
web_reg_save_param_ex是注册型函数,必须放在查找的请求之前,放后面取不到动态值;- 左右边界(Left/Right Boundary)必须有且区分大小写,写错边界会关联失败,参数取到空值。
20.4.9 集合点与事务¶
1. 任务描述 加入集合点实现可控并发,加入事务衡量业务处理性能。
2. 实验步骤
-
步骤 1:集合点:在脚本中加入
lr_rendezvous()函数即可。作用:把一定数量的虚拟用户阻挡在一个操作点前互相等待,达到数量或超时后同时唤醒,实现"同一时间点操作"。订票系统、促销(如 8:00 集中秒杀)等场景常用。 -
步骤 2:实例:在"添加岗位保存"操作前加入集合点。
-
步骤 3:事务:为衡量服务器性能,把某个操作定义为一个事务。运行到事务开始点开始计时,到结束点计时结束,运行时间在结果中显示。可录制过程中或录制后加入,数量不限。
-
步骤 4:实例:加入"添加岗位"事务。
集合点像什么?
集合点就像商场促销"上午 8 点整开抢"——所有人先在门口集合等信号,时间一到同时涌入。订票、秒杀这类"同一瞬间集中操作"的场景就靠它模拟。
20.5 实验总结¶
本次实验掌握了以下要点:
- 一是理解了 VuGen 录制/回放原理(只录客户机与服务器之间的活动、回放直接与服务器通信)与 HTML-based / URL-based 模式的区别与选择(对应知识目标);
- 二是能用 VuGen 完成"添加岗位"脚本的浏览器录制与代理录制,掌握脚本三部分结构(登录放 vuser_init、操作放 Action、注销放 vuser_end),并用思考时间(lr_think_time)、检查点(web_reg_find)、参数化、关联(web_reg_save_param_ex)、集合点(lr_rendezvous)、事务六大技巧增强脚本(对应技能目标);
- 三是记住"检查点和关联是注册型函数,必须放在请求之前",养成录制前先配好 UTF-8 编码、回放先看日志的规范排错习惯(对应素养目标)。这是实验21 LoadRunner 场景设计与运行的前提。
20.6 作业提交¶
- 提交地点:吾爱作业网
- 提交资料:
- "添加岗位"脚本结构(vuser_init/Action/vuser_end)截图;
- 回放通过(含检查点)日志截图;
- 参数化取值日志 / 关联结果截图。
- 不会做时填写"心得感悟"(1~50 字)。
20.7 知识检测¶
- [ ] (填空)VuGen 脚本三部分中,"登录"应放在 vuser_init,"注销关闭"应放在 vuser_end,重复执行的业务放在 Action。
- [ ] (填空)LoadRunner 12 中做关联的常用函数是 web_reg_save_param_ex,加入集合点用函数 lr_rendezvous()。
- [ ] (选择)为人资系统(HTTP 协议的 Web 应用)录制脚本,应选择的协议是( )。
- A. Web-HTTP/HTML B. Citrix C. FTP D. SMTP
查看解析
正确答案:A。人资系统是基于 HTTP 协议的 Web 应用,协议选择 Web-HTTP/HTML。
- [ ] (选择)关于 web_reg_find 与 web_reg_save_param_ex 的位置,正确的是( )。
- A. 必须放在要查找/提取的请求之前
- B. 必须放在请求之后
- C. 必须放在 vuser_end 中
- D. 位置随意
查看解析
正确答案:A。两者都是注册型函数,必须放在请求之前;放后面等于"先答题再出卷",取不到内容。
- [ ] (选择)防止录制内容中文乱码,Recording Options 中应( )。
- A. 勾选 Support charset 并选择 UTF-8
- B. 改用 URL-based 模式
- C. 加大思考时间
- D. 使用代理录制
查看解析
正确答案:A。HTTP Properties → Advanced → 勾选 Support charset 并选 UTF-8 可防止中文乱码。
本课相关资源¶
| 序号 | 资源名称 | 类型 | 说明 |
|---|---|---|---|
| 1 | 任务2.4.1 LoadRunner脚本开发.pptx | 课件 | VuGen 原理 |
| 2 | 任务2.4.2 LoadRunner脚本开发-脚本录制.pptx | 课件 | 创建脚本、浏览器/代理录制 |
| 3 | 任务2.4.3 LoadRunner脚本开发-思考时间.pptx | 课件 | lr_think_time |
| 4 | 任务2.4.4 LoadRunner脚本开发-检查点.pptx | 课件 | web_reg_find |
| 5 | 任务2.4.5 LoadRunner脚本开发-参数化.pptx | 课件 | 取值/更新方式 |
| 6 | 任务2.4.6 LoadRunner脚本开发-关联.pptx | 课件 | web_reg_save_param_ex |
| 7 | 任务2.4.7 LoadRunner脚本开发-集合点.pptx | 课件 | lr_rendezvous |
| 8 | 任务2.4.8 LoadRunner脚本开发-事务.pptx | 课件 | 事务 |
实验素材下载
点击下方链接获取本节课全部资源(含课件、任务清单、安装包等): 🔗 夸克网盘

