lr关联:手工关联和自动关联

lr关联:手工关联和自动关联

简单的说,每一次执行时都会变动的值,就有可能需要做关联(correlation)。

VuGen提供二种方式帮助您找出需要做关联(correlation)的值:

自动关联

手动关联

一手工关联

lr8.0之前的实现原理是:在客户端和服务端之间设置一个proxy,拦截client和server之间的数据,产生脚本,当然是根据所选定的协议和端口.正因为如此,写在脚本中的,我们模拟客户端对服务端的通信数据是死的,有些情况下会失效,所以需要关联.

所以说,关联(correlation)就是把脚本中某些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。举个例子,有些服务器和客户端对话的流程是这样的,首先,客户端首先发送一个消息,服务端分配一个sessionid,以后,每次客户端发送消息时,都需要带上这个sessionid.

关联可以讲是一个特殊的参数化,只是数据来源不同,普通的参数化数据来源于文件\数据库等,关联的数据来源于服务器动态产生.

要对付这种服务器,我们必须想办法找出这个Session ID到底是什么、位于何处,然后把它撷取下来,放到某个参数中,并且取代掉脚本中有用到Session ID的部分,这样就可以成功骗过服务器.

关联(correlation)函数

关联(correlation)会用到下列的函数:

web_reg_save_param:这是最新版,也是最常用来做关联(correlation)的函数。

语法:

web_reg_save_param ( “Parameter Name” , < list of Attributes >, LAST );

web_create_html_param、web_create_html_param_ex:这二个函数主要是保留作为向前兼容的目的的。建议使用web_reg_save_param函数。

手动关联的执行过程大致如下:

使用相同的业务流程与数据,录制二份脚本

使用WinDiff工具协助找出需要关联的数据

使用web_reg_save_param函数手动建立关联

将脚本中有用到关联的数据,以参数取代

检查脚本哪些地方的错误是因为关联引起的,run time setting中设置data returned by server

确定哪些数据需要关联

找出动态数据的左右边界值和出现位置

脚本中添加web_reg_save_param函数

在脚本中参数化脚本中的动态值

校检动态数据

找位置

检查脚本哪些地方的错误是因为关联引起的,run time setting中设置data returned by server,运行,肯定出错,查看出错函数,如request form. was not fount错误信息,有可能是因为关联引起的.找到这个函数,我的一次实践是在web_submit_data()函数.

因为这个sessionid是不同的,所以我们使用相同的操作和数据录制两个脚本,使用tools中的compair with user,比较两个不同的脚本,注意,这个工具是按照action来比较的,同时注意:请忽略lr_thik_time的差异部份,因为lr_thik_time是用来模拟每个步骤之间使用者思考延迟的时间.保存的文件名太长或者有中文的情况下,会出错.

找出所有不同的地方,再做分析.

使用web_reg_save_param函数手动建立关联

web_reg_save_param要放在提交数据的函数之前,是最近的位置.

在树形图的server中找到web_reg_save_param中要用到的边界

web_reg_save_param函数主要是透过动态数据的前面和后面的固定字符串,来辨识要撷取的动态数据的,所以我们还需要找出动态数据的边界字符串。这里要注意的是"要用\做转义字符.

将脚本中有用到关联的数据,以参数取代

当使用web_reg_save_param建立参数后,接下来就是用“UserSession”参数去取代脚本中写死的(hard-coded)资料。

“Name=userSession”, “Value=123456879”, ENDITEM,

换成

“Name=userSession”, “Value={UserSession}”, ENDITEM,

语法

intweb_reg_save_param(const char *ParamName, <list of Attributes>, LAST);

参数说明

ParamName:存放动态数据的参数名称

list of Attributes:其它属性,包含Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert,以及SaveLen。属性值不分大小写,例如Search=all。以下将详细说明每个属性值的意义:

Notfound:指定当找不到要找的动态数据时该怎么处置。

Notfound=error:当找不到动态数据时,发出一个错误讯息。假如没设定此属性,此为LoadRunner的默认值。

Notfound=warning:当找不到动态数据时,不发出错误讯息,只发出警告,脚本也会继续执行下去不会中断。在对脚本除错时,可以使用此属性值。

LB:动态数据的左边界字符串。此属性质是必须要有的,而且区分大小写。

RB:动态数据的右边界字符串。此属性质是必须要有的,而且区分大小写。

RelFrameID:相对于URL而言,欲搜寻的网页的Frame。此属性质可以是All或是数字,而且可有可无。

Search:搜寻的范围。可以是Headers(只搜寻headers)、Body(只搜寻body部分,不搜寻header)、Noresource(只搜寻body部分,不搜寻header与resource)或是All(搜寻全部范围,此为默认值)。此属性质可有可无。

ORD:指明从第几次出现的左边界开始才是要撷取的数据。此属性质可有可无,默认值是1。假如值为All,则所有找到符合的数据会储存在数组中。

SaveOffset:当找到符合的动态数据时,从第几个字符开始才开始储存到参数中。此属性质不可为负数,其默认值为0。

Convert:可能的值有二种:

HTML_TO_URL:将HTML-encoded数据转成URL-encoded数据格式

HTML_TO_TEXT:将HTML-encoded数据转成纯文字数据格式

SaveLen:从offect开始算起,到指定的长度内的字符串,才储存到参数中。此参数可有可无,默认值是-1,表示储存到结尾整个字符串。

转载于:https://www.cnblogs.com/vinyfeng/articles/1775968.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值