LoadRunner 中与 web_reg_save_param 的关联示例
什么是相关性?
相关性,顾名思义,是一种定义两个变量或实体之间关系的机制。字典将其定义为“两个或多个变量之间的统计关系,使得一个变量值的系统性变化伴随着另一个变量值的系统性变化”。
品牌注解: 这款工具最初是以惠普的名义发售的,然后…… Micro Focus LoadRunner,现在 OpenText 专业性能工程以下所有相关函数均保持不变,脚本生成器由供应商编写。 VuGen.
为什么我们需要相关性?
让我们通过以下场景来理解相关性。
假设您正在使用以下方式录制脚本 加载程序.
录制过程中客户端与服务器之间的通信过程如下,下图对其进行了概括:
- 在录制过程中,客户端向服务器发送请求以启动会话。
- 服务器接收请求并分配一个新的会话ID ABC
- 客户端将会话 ID ABC 存储在脚本中。
- 客户端使用 ID ABC 启动会话,并向服务器发送请求以允许其录制
- 服务器识别 ID ABC,并允许客户端录制脚本
现在,让我们来研究重放过程中客户端与服务器之间的通信,如下步骤所示:
- 在重播期间,客户端向服务器发送请求以启动会话
- 服务器接收请求并分配新的会话 ID XYZ
- 客户端使用先前记录的会话 ID ABC 启动会话,并向服务器发送请求以允许其进行录制。
- 服务器无法识别 ID ABC,因为它期望已分配的 ID XYZ,因此会话失败。
我们需要一个解决方案,能够捕获并解析运行时发送的动态值,并将该值返回给服务器。下图展示了使用此解决方案后客户端与服务器之间的通信方式:
- 在重播期间,客户端向服务器发送请求以启动会话
- 服务器接收请求,并分配一个新的会话 ID ZZZ
- 客户端从请求中解析这个新的会话 ID ZZZ。
- 客户端发送请求以启动 ID 为 ZZZ 的会话
- 服务器识别 ID ZZZ 并允许客户端重放脚本
没什么 相关.
下面的短视频演示了同样的录制和回放问题。
点击 开始 如果视频无法访问
对于 VuGen 而言,相关性是指响应与任何先前请求之间的约束关系。
在某些情况下,请求会基于之前从服务器收到的响应,例如会话 ID 或从服务器获取的服务器日期和时间。每次运行应用程序或录制脚本时,这些值都会不同。显然,如果脚本的执行依赖于服务器返回的值,则需要找到一种机制来“捕获”服务器响应,并将其附加到服务器期望的请求中。这在 LoadRunner 中通常称为关联(Correlation)。
简单来说,使用 Correlation 的解决方案是:
- 捕获步骤的输出值
- 使用上面捕获的值作为所有后续步骤的输入
在 VuGen/LoadRunner 中,相关性分为 2 类:
- 自动关联
- 手动关联
自动关联
LoadRunner 提供了一种以自动方式轻松执行关联的机制。
VuGen 要求您至少运行两次录制的脚本,以便它可以在内部比较服务器响应中的不同值。
自动关联可以分为 3 类:
- 自动检测相关性
- 基于规则的关联
- 关联所有语句
| 规则名称 | 何时使用 |
| 自动检测相关性 | 检测并关联 LoadRunner 支持的应用服务器的动态数据 |
| 基于规则 | 当使用已知上下文的不受支持的应用程序服务器时使用。 |
| 关联全部 | 帮助以盲目方式关联所有动态数据。 |
虽然自动关联看起来更简单,但它很容易出错,而且只有不到 5% 的情况有效。始终建议使用手动关联。
要配置录制时的自动关联,请在录制脚本后在录制时间设置中执行以下配置。
点击“录制”=>“录制选项”(或按Ctrl+F7),如下图所示。
将打开以下窗口:
单击“关联”=>“配置”– 将打开下面的窗口。
在这里,您需要将主题应用程序中使用的所有应用程序 (ASPNET) 等标记为已检查。在右侧,您可以看到将检测可能存在关联的候选对象的规则,例如 _VIEWSTATE。您还可以通过单击“新规则”按钮添加更多应用程序或自定义规则。
您也可以点击“RULES”,您将看到以下内容:
要使自动关联功能正常工作,您需要确保“规则扫描”已勾选。如果您点击“自动关联找到的值”,VuGen 在找到关联候选值后不会提示您进行选择,而是直接进行关联。
稍后我们将了解用于关联的 API。不过,建议使用 HTML 比较,而不是文本比较。
一旦选择了任何规则,请单击“确定”按钮关闭窗口。
点击此处显示的工具栏按钮。 从菜单中选择后,VuGen 将使用新的配置重新生成脚本(无需录制)。VuGen 会自动添加处理关联所需的代码。我们将在“手动关联”部分更详细地了解示例。
请注意,如果您手动执行关联或使用自动关联,则代码片段将包含完全相同的语法和功能。
自动关联脚本的步骤:
- 录制脚本
- 重播脚本
- 确定要关联的值
- 选择值并单击自动关联按钮
- 再次运行验证脚本。运行成功表示关联成功。
提示:
- 相关性有助于使用不同的值运行脚本
- 相关性还可以减少脚本的大小
手动关联
手动关联是指直接将代码写入脚本以适应不断变化的值。我们可以将其分为以下步骤:
- 确定要捕获的值
- 找到要捕获的值的左右文本边界 (WEB)
- 查找应使用哪个文本边界
- 在脚本中添加一个 web_reg_save_param 函数,位于请求要捕获的值的页面的代码段上方
- 为函数添加参数名称、左边界、右边界和发生次数
- 每次发生时,在脚本中参数化动态值
- 验证执行正确
web_reg_save_param (" OracleAppJSESSIONID3", "LB/IC=JSESSIONID=", "RB/IC=;", "Ord=l", "Search=headers", "RelFrameId=l", LAST); web_reg_save_param("Siebel_Analytic_ViewState2", "LB/IC=ViewState\" value=\"", "RB/IC=\"", "Ord=1", "Search=Body", "RelFrameId=l", LAST);
Code 注意事项: 两段文字都与原文完全一致。请注意序数: Ord=l 和 RelFrameId=l 使用小写字母 L,VuGen 期望数字 1。
手动关联可以通过 VUser 比较来完成。关联的 VUser 比较方法中的步骤可以分为以下几部分:
- 识别需要关联的动态值
- 查找包含动态值的服务器响应
- 捕获参数中的动态值
- 用参数替换每个出现的动态值
- 验证更改
了解 web_reg_save_param 函数
VuGen 提供多种功能或 API 来关联候选对象,包括:
- web_reg_save_param
- web_reg_save_param_ex
- web_reg_save_param_regexp
- web_reg_save_param_xpath
版本说明: 当前 VuGen 版本处理 web_reg_save_param_ex 作为原功能的继承者,并且 web_reg_save_param_regexp 当边界本身发生变化时,就会面临这样的选择。原始示例仍然有效。
这里仅作简要介绍。要详细了解函数及其参数,请打开 VuGen,编写函数(或使用 Steps Toolbox),将光标移动到函数上并按 F1 键——熟悉一下。 VuGen 帮助 养成习惯。你在这个行业工作时会经常遇到这种情况。
下面我们来看一下功能细节:
web_reg_save_param(参数名称,左边界,右边界)
属性列表
下表列出了该函数接受的每个属性、是否为必填项以及它控制的内容。
| 属性 | 需要? | 它做什么 |
| 转化率 | 可选 | HTML_TO_URL 将 HTML 编码的数据转换为 URLHTML_TO_TEXT 将 HTML 编码的数据格式转换为纯文本格式。 |
| 忽略重定向 | 可选,默认值为“忽略重定向=否” | 如果设置为“是”,且服务器响应为重定向信息(HTTP 状态码 300-303、307),则不会搜索该响应。GET 请求将发送到重定向后的位置,并基于该位置的响应进行搜索。 |
| LB | 其他要求 | 参数或动态数据的左边界。如果未指定 LB 值,则使用数据开头的所有字符作为边界。边界参数区分大小写。要进一步自定义搜索文本,请使用一个或多个文本标志。 |
| 未找到 | 可选,默认值为“错误” | 处理未找到边界并生成空字符串的情况。“Not found=error”会引发错误。“Not found=warning”(早期版本中为“Not found=empty”)则会将参数计数设置为 0 并继续执行,这非常适合在不使脚本失败的情况下查看是否找到了字符串的情况。启用“出错时继续”后,即使出现“错误”,脚本也会继续执行,但扩展日志会记录此错误。 |
| ORD | 可选,默认值为 1 | 指示匹配的序号位置或实例。如果指定“全部”,则会将参数值保存到一个数组中。为了向后兼容,支持使用实例而不是序号,但已弃用。 |
| RB | 其他要求 | 参数或动态数据的右边界。如果未指定 RB 值,则使用数据末尾之前的所有字符作为边界。边界参数区分大小写。要进一步自定义搜索文本,请使用一个或多个文本标志。 |
| 关联帧ID | 可选 | HTML页面相对于请求的层级 URL可选值为 ALL 或一个数字。GUI 级脚本不支持 RelFrameID。 |
| 保存长度 | 可选,默认值为 -1 | 从指定偏移量开始,截取一段子字符串并保存到参数中的长度。默认值为保存到字符串末尾。 |
| 保存偏移量 | 可选,默认值为 0 | 要保存到参数中的,是找到的值的子字符串的偏移量。偏移量值必须为非负数。 |
| 搜索 | 可选,默认值为全部 | 搜索范围——在何处搜索分隔符内的数据。可选值包括:标头(仅搜索标头)、正文(仅搜索正文数据,不包括标头)、无资源(仅搜索 HTML 正文,排除所有标头和资源)或全部(搜索正文、标头和资源)。 |
脚本回放正常后,添加 参数化、事务和运行时设置从……运行它 控制器并读取结果 信号分析 作为更广泛的 性能测试 和 负载测试.







