我在向前走,虽然很慢!

LoadRunner -- 关联

上一篇 / 下一篇  2016-12-21 17:11:37 / 天气: 晴朗 / 心情: 高兴 / 个人分类:LR

关联(correlation的概念

1、关联就是把脚本中某些写死的代码(hard_coded)数据,转变成撷取自服务器所送的、动态的、每次都不一样的数据。可以把关联看成是一种特殊的参数化。

2当客户端的请求是随着服务器端的相应而动态变化的时候,就需要用到关联。

3关联有两种机制,自动关联和手动关联。

   

自动关联一:录制脚本前,启用VuGen内建自动关联引擎:【Tool>Recording Options>HTTP Properties>Correlation

 

自动关联二:录制脚本后,回放一次,然后按Ctrl+F8自动扫描脚本中的关联。

 

手动关联一:

1将脚本录制两遍

2通过WinDiff工具对比脚本的不同,复制需要关联的差异脚本;

3Recording Log(单一协议)或是Generation Log(多重协议)中搜索差异在什么地方,并记录差异所在的数据标头(蓝色粗体字)


4使用web_reg_save_param函数手动建立关联

5将脚本中有用到关联的数据,用参数代替;

 

 

手动关联二:

1选择Tree视图模式

2点击HTTP View下查看Response Body

3找到需要关联的内容,右键在下拉列表中选择“Create Coorelation

 

 

验证关联函数是否正确:

1设置输出日志:Vuser >Run-time Settings> log >勾选Enable logging > Always send messages > Extended log >勾选Parameter substitution

2回放脚本时

3Replay Log日志中查看关联参数的相应值(此值是动态变化的)。

 

 

关联会用到的函数:web_reg_save_param;

语法:int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);

参数说明:

  ParamName:存放得到的动态内容的参数名称;

  list of Attributes:其它属性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, SaveLen。属性值不分大小写;  

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

error默认值,表示找不到动态数据时,发出一个错误消息。

warning表示找不到动态数据时,发出警告,脚本也会继续执行下去不会中断。在对脚本出错时,可以如此设置。

2LB:动态数据的左边界字符串。必写,区分大小写。

3RB:动态数据的右边界字符串。必写,区分大小写。

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

5Search:搜寻的范围,可选,其值可以是

Headers(只搜寻headers)、

Body(只搜寻body部分,不搜寻header)、

Noresource(只搜寻body部分,不搜寻headerresource

All(搜寻全部范围,默认值)。

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

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

8Convert:转换数据格式。当指定该属性值为HTML_TO_URL时,意味着将HTML-encoded数据转成URL-encoded数据格式。如果是HTML_TO_TEXT,表示将HTML-encoded数据转成纯文字数据格式。

9SaveLen:当找到匹配项后,偏移量之后的几个字元存储到参数中。可选,默认值是-1,表示一直到结尾的整个字符串都存入参数中。

 

代码:      

web_reg_save_param_ex(

                  "ParamName=CTtaskId",

                  "LB=\"taskID\":\"",

                  "RB=\",", 

       "ORD=ALL",//获取所有符合条件的值。

     "Savelen=50",//限制获取字符的长度。有可能会因为长度写少导致数据丢失

                  SEARCH_FILTERS,

                  "Scope=Body",

                  "RequestUrl=*/JSONRPC*"

       LAST );

 

        lr_output_message("CTtaskId1个值= %s", lr_eval_string("{CTtaskId_1}"));

        lr_output_message("CTtaskId2个值= %s", lr_eval_string("{CTtaskId_2}"));

 

在做手动关联时,取边界值的时候,会经常用到的转义字符:

\b退格

\f换页

\n换行

\r回车

\t水平制表

\v垂直制表

\\反斜杠

\?问号字符

\'单引号字符

\"双引号字符

\0空字符

 
 


TAG:

guoqing137的个人空间 引用 删除 guoqing137   /   2017-01-18 09:17:56
5
 

评分:0

我来说两句

我的栏目

日历

« 2024-04-21  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 12036
  • 日志数: 8
  • 图片数: 2
  • 建立时间: 2015-05-21
  • 更新时间: 2016-12-26

RSS订阅

Open Toolbar