简介
性能测试:评估、优化、预测
工具:
LoadRunner 12
- VuGen:录制脚本
- Controller:创建场景
- Analysis:结果分析
VuGen录制脚本
- 新建脚本
- 选择协议
- 填写脚本名称
- 设置保存位置
- 创建
- Record into action: 选择脚本记录的行为,包含vuser_init、Action、vuser_end。区别是vuser_init和vuser_end中的脚本代码只执行一次,而Action中可以执行设定的次数。同时集合点只能在Action中设置。
- Application:选择录制使用的浏览器,可手动选择。
- URL address:要录制脚本的url地址(全称带协议)。
录制过程操作
1:录制按钮
2:停止按钮
3:暂停
4:取消
5:当前录制action
6:添加action
7:添加开始事务
8:添加结束事务
9:创建集合点
10:添加备注
11:添加文本检查
脚本调试
- 检查点-文本检查点、图片检查点
注:包含关键字reg的函数一般是注册函数,一般放在请求前面;检查点功能选项默认是关闭的,一般不建议使用,脚本运行中会消耗一些资源。脚本调试期间可以使用,但是场景运行期间建议关闭。
- 参数化分配设置
1)Select Next Row: 选择下一行的策略。各子选项含义如下。
Sequential: 顺序取行;
Random: 随机取行;
2)Update value on: 更新值的策略。各子选项含义如下。
Each iteration: 每次迭代都要取新值;
Each Occurrence: 只要发现该参数就重新取值;
Once: 在所有的反复中都使用同一个值。
依据此,理论上参数化取值方式有9种,可自行实验验证。
参数化的类型非常多,但一般最常用的是File和Table类型,其他类型的用法参考如下:
Date/Time: 可以在需要参数化日期的地方使用;
Group Name: 使用该虚拟用户所在的Vuser Group名称来代替参数化;
Iteration Number: 使用脚本执行的当前迭代次数来代替参数化;
Load Generator Name: 使用产生Vuser负载的机器名称来代替参数化;
Random Number: 使用一个随机数来代替参数化;
Unique Number: 使用一个唯一的证书来代替参数化;
User Defined Functions: 扩展接口,可从用户开发的DLL文件中提取数据;
Vuser ID: 使用虚拟用户的ID来代替参数化;
XML: 提供对XML格式数据的支持。可以从XML中读取数据进行参数化。
- 关联
关联是动态地获取服务器返回的某些值,避免脚本回放过程中因返回值的变化引起的回放失败。一般以下几种情况需要考虑是否使用关联:
1、服务器返回中存在动态变化的值,一般就是类似Session的无规则数据;
2、运行后没有报错,但是也没有产生记录;
3、后续的操作要使用到之前的数据。例如,回帖操作要知道之前发帖的tid才能回帖。
LoadRunner中的关联,靠关联函数实现。 LoadRunner12关联函数实现有两种,一种是正则匹配,一种是左右边界匹配。 正则匹配关联函数:
web_reg_save_param_regexp
左右边界关联函数:
web_reg_save_param_ex
LR12左右边界函数用法:
web_reg_save_param_ex(“ParamName=关联的名称”, “LB=左边界”, “RB=右边界,LAST);
eg:
web_reg_save_param_ex("ParamName=logintype",
"LB=id=\\"logintype\\" value=\\"",
"RB=\\" ",
LAST);
1)自动关联 LR12脚本录制结束会默认弹出自动扫描的关联,检查关联是否有效, 点击“Correlate”按键即可自动生成关联函数,如图1-5所示。
图1-5
2)手动关联 -分析脚本中出现的动态响应值,一般需要关联的值会在HTML的hidden标签中出现。在快照展示面板查看lr捕捉到的请求响应数据,用以查找需关联参数项。 -录制两次相同业务流程的脚本,利用Tool-Compare功能,找到脚本差异数据,逐个分析是否需要关联。
图1-6
3)添加关联函数 在代码中添加关联函数,并在引用关联参数的 函数中使用{关联参数名称}来替换一长串数字、字母,如右图1-7所示。
图1-7
设置
1)General options(通用设置)Tools-options
2)Recording options(录制设置)Record-Recording Options
3)Run-time Settings(运行时设置)Replay-Runtime Settings
Controller创建场景
Controller常用启用方式有两种,一种是在VuGen中的Tools-Create Controller Scenario,如图2-1所示,另一种,直接在桌面打开Controller软件。
图2-1
直接打开Controller程序,首次进入界面2-2,这里是选择场景种类的,还有选取需要运行的脚本。有几个关键参数: Select Scenario Type: 选择场景类型。根据需要,可以选择手工场景和基于目标的场景。 Manual Scenario: 手工场景。常用、比较灵活。子选项,是否使用百分比模式,一般不勾选。 Goal-Oriented Scenario: 基于目标场景。设定目标,预期目标明确。
图2-2
集合点
运行场景前,一般需要设置集合点。集合点的意义在于最大程度地模拟并发。
注:集合点并不能模拟真正意义上的并发,因为即使是通过集合点的虚拟用户,但由于网络等多种因素的影响并不能同一时刻到达服务器,仍有先后差异。
- 启用集合点:在LoadRunner中启用集合点需要在编写脚本时加入,集合点函数为 lr_rendezvous(“集合点名称”);只需要把集合点函数放到脚本的某个事物或操作之前即可。
- 集合点策略 Rendezvous: 集合点的列表,可通过下方的Disadble Rendezvous按钮来启用或关闭; Scripts: 当前脚本的名称; Vuser: 当前设置的并发用户数,可通过下方的Disadble Vuser; Policy(集合点策略): 点击进入策略设置对话框,如图2-3。
图2-3
参数含义:
- 当所有用户的X%到达集合点时释放;
- 当所有正在运行的用户X%到达集合点时释放;
- 当X个用户达到集合点时释放;
- 超时设置。表示等待用户超时的设定,如果在X秒内还没有满足要求的用户到达,则释放集合点。
结果分析
暂无分享。几个重要参数:
- Available Scripts: 当前可用脚本。没有找到想要的可以单击Browse进入目录选择。
- Scripts in Scenario: 选中要加入场景的脚本,单击Add,将脚本加入场景并显示在该列。