LoadRunner 与 Web_Reg_Save_Param 示例的关联
什么是相关性?
相关性,顾名思义,是一种定义两个变量或实体之间关系的机制。一本词典将其定义为“两个或多个变量之间的统计关系,其中一个变量的值发生系统性变化,另一个变量的值也发生系统性变化”。
为什么我们需要相关性?
让我们了解与以下场景的相互关系。
假设您正在使用 LoadRunner 录制脚本。
客户端-服务器通信
- 在记录期间,客户端向服务器发送请求以开始会话
- 服务器接收请求并分配一个新的会话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 的解决方案是:
- 捕获步骤的输出值
- 使用上面捕获的值作为所有后续步骤的输入
在VUGen/LoadRunner中,相关性分为两类:
- 自动关联
- 手动关联
自动关联
LoadRunner 提供了一种以自动方式轻松执行关联的机制。
VUGen 将要求您至少运行两次录制的脚本,以便它可以内部比较服务器响应中的不同值。
自动关联可以分为 3 类:
- 自动检测相关性
- 基于规则的关联
- 关联所有语句
规则名称 | 何时使用 |
---|---|
自动检测相关性 | 检测并关联 HP 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);
手动关联可以通过 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,编写函数(或使用步骤工具箱),将光标移到函数上并单击 F1 - 熟悉 VUGen 帮助并养成习惯。在行业中工作时,您将不得不经常处理它。
下面我们来看一下功能细节:
web_reg_save_param(参数名称,左边界,右边界)
属性列表
兑换: 可能的值是:
HTML_TO_URL:将 HTML 编码数据转换为 URL 编码数据格式
HTML_TO_TEXT:将HTML编码的数据转换为纯文本格式;此属性是可选的。
忽略重定向:如果指定了“Ignore Redirections=Yes”,并且服务器响应是重定向信息(HTTP 状态代码 300-303、307),则不搜索响应。而是在收到重定向响应后,将 GET 请求发送到重定向的位置,并从该位置对响应进行搜索。
此属性是可选的。默认值为“Ignore Redirections=No”。
磅: 参数或动态数据的左边界。如果您未指定 LB 值,它将使用数据开头的所有字符作为边界。边界参数区分大小写。要进一步自定义搜索文本,请使用一个或多个文本标志。此属性是必需的。请参阅边界参数部分。
未找到:找不到边界时的处理选项,并生成空字符串。
默认值“Not found=error”表示当找不到边界时会引发错误。
“Not found=warning”(早期版本中为“Not found=empty”)不会发出错误。如果未找到边界,它会将参数计数设置为 0 并继续执行脚本。如果您想查看是否找到了字符串,但又不希望脚本失败,“warning”选项是理想的选择。
备注:如果为脚本启用了“出错时继续”功能,则即使将 NOTFOUND 设置为“error”,当未找到边界时,脚本仍会继续运行,但会将错误消息写入扩展日志文件。
此属性也是可选的。
ORD:表示匹配的序号位置或实例。默认实例为 1。如果指定“全部”,则会将参数值保存在数组中。此属性是可选的。
注意:为了向后兼容,支持使用 Instance 代替 ORD,但现已弃用。
RB:参数或动态数据的右边界。如果您未指定 RB 值,则它将使用直到数据结尾的所有字符作为边界。边界参数区分大小写。要进一步自定义搜索文本,请使用一个或多个文本标志。此属性是必需的。请参阅边界参数部分。
关联帧ID:相对于所请求 URL 的 HTML 页面层次结构。可能值为 ALL 或数字。单击 RelFrameID 属性可查看详细说明。此属性为可选。
请注意: GUI 级脚本不支持 RelFrameID。
保存长度:从指定偏移量开始,保存到参数的找到值的子字符串的长度。此属性是可选的。默认值为 -1,表示保存到字符串末尾。
保存偏移量:找到的值的子字符串的偏移量,保存到参数中。偏移量值必须为非负数。默认值为 0。此属性为可选。
使用以下 search 搜索栏来有系统地查看 搜索范围 - 搜索分隔数据的位置。可能的值包括 Headers(仅搜索标头)、Body(仅搜索正文数据,不搜索标头)、No resource(仅搜索 HTML 正文,不包括所有标头和资源)或 全部 (搜索正文、标题和资源)。默认值为 ALL。此属性是可选的,但通常是首选。