9年资深测试,独立研发适用IOS、安卓、WEB平台的自动化软件, 使用Jenkins、shell、Maven实现项目全自动化一条龙服务。

LoadRunner(1) 如何在LR脚本中做关联

上一篇 / 下一篇  2007-10-26 16:15:50

关联的概念

   当录制脚本时,VuGen会拦截client端(浏览器)与server端(网站服务器)之间的对话,并且通通记录下来,产生脚本。在VuGen的Recording Log中,您可以找到浏览器与服务器之间所有的对话,包含通讯内容、日期、时间、浏览器的请求、服务器的响应内容等等。脚本和Recording Log最大的差别在于,脚本只记录了client端要对server端所说的话,而Recording Log则是完整纪录二者的对话。
   当执行脚本时,您可以把VuGen想象成是一个演员,它伪装成浏览器,然后根据脚本,把当初真的浏览器所说过的话,再对网站伺服器重新说一遍,VuGen企图骗过服务器,让服务器以为它就是当初的浏览器,然后把网站内容传送给VuGen。所以纪录在脚本中要跟服务器所说的话,完全与当初录制时所说的一样,是写死的(hard-coded)。这样的作法在遇到有些比较聪明的服务器时,还是会失效。这时就需要透过「关联(correlation)」的做法来让VuGen可以再次成功地骗过服务器。
   所谓的关联(correlation)就是把脚本中某些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。
   假如脚本需要关联(correlation),在还没做之前是不会执行通过的,也就是说会有错误讯息发生。不过,很不幸地,并没有任何特定的错误讯息是和关联(correlation)有关系的。会出现什么错误讯息,与系统实做的错误处理机制有关。错误讯息有可能会提醒您要重新登入,但是也有可能直接就显示HTTP 404的错误讯息。

关联函数

int web_reg_save_param (const char *ParamName, <List of Attributes>, LAST);
参数说明
ParamName:存放动态数据的参数名称
list of Attributes:其它属性。
LB:动态数据的左边界字符串。此属性质是必须要有的,而且区分大小写。
RB:动态数据的右边界字符串。此属性质是必须要有的,而且区分大小写。

手动关联

1。使用相同的业务流程与数据,录制二份脚本
   依照相同的操作步骤与数据录制第二份脚本并存盘。注意,所有的步骤和输入的数据一定都要一样,这样才能找出由服务器端产生的动态数据。有时候会遇到真的无法使用相同的输入数据,那您也要记住您使用的输入数据,到时才能判断是您输入的数据,还是变动的数据。

2。使用WinDiff工具协助找出需要关联的数据
   在第二份脚本中,点选VuGen的【Tools】>【Compare with Vuser…】,并选择第一份脚本。接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选【Options】>【View】>【Show Inline Differences】)。逐一检视二份脚本中差异的部份,每一个差异都可能是需要做关联的地方。选取差异的脚本,然后复制。在复制时,有时并不需要取整行脚本,可能只会选取脚本中的一部分。
注意:请忽略lr_thik_time的差异部份,因为lr_thik_time是用来模拟每个步骤之间使用者思考延迟的时间。
   在Recording Log中找到了要找的数据,这时要确认数据是从服务器端传送过来的。首先可以先检查数据的标头,从标头的Receiving response可以知道数据是从服务器端传送到client端的,而此数据极有可能需要做关联。

3。使用web_reg_save_param函数手动建立关联
   在之前的步骤,我们已经在Execution Log找到可能需要关联的动态数据。在Execution Log中选取动态数据前的文字然后复制,我们将会利用这段文字,来帮助我们找出要关联的动态数据。 
   不过在这之前我们要先找出使用web_reg_save_param函数的正确位置,所以我们要再重新执行一遍脚本,而且这次会开启所有的Log。在VuGen中点选【Vuser】>【Run-Time Settings】。点选【General】>【Log】。勾选【Enable logging】、【Always sends messages】、【Extended log】,以及【Extended log】下的所有选项。按下【OK】就可以执行脚本了。
   执行完脚本之后,在Execution Log中搜寻刚刚复制的字符串。找到字符串后,在字符串前面会有A.tion1.c(9),这个9就是到时候要插入web_reg_save_param函数的位置,也就是要插入到脚本的第9行。

4。将脚本中有用到关联的数据,以参数取代
   当使用web_reg_save_param建立参数后,接下来就是用“UserSession”参数去取代脚本中写死的(hard-coded)资料。
例如:将“Name=userSession”,Value=75893.0884568651DQADHfApHDHfcDtccpfAttcf”, ENDITEM,换成“Name=userSession”, “Value={UserSession}”, ENDITEM,

5。找出左边界字符串
   再回到Recording Log/Execution Log中,选取动态数据前的字符串并且复制它。这时会有个问题,到底要选取多少字符串才足以唯一识别要找的动态数据呢?建议是越多越好,但是尽量不要包含到特殊字符。

6。找出右边界字符串
   接下来要找出动态数据的右边界字符串,这个字符串就比较好找了,从动态数据的最后一个字符开始,通常就是我们要找的右边界字符串了。

   到这里您已经完成了一个关联了,接下来就是执行脚本,是否能成功运行,假如还是有问题,就要检查看看是否还需要再做另一个关联。

代码展示

1 #include "web_api.h"
2
3
4 Action()
5 {
6 lr_rendezvous("upload"); //集合点
7
8 lr_start_transaction("key and upload"); //Tansaction开始
web_reg_save_param("mykey",//mykey就是ParamName
10  "LB=clientIp/192.168.1.104.html<br>wkey:",//左边界
11  "RB=<html>",//右边界
12  LAST);
13 lr_end_transaction("key and upload", LR_AUTO); //Tansaction结束
14
15 web_url("upload.php",
16  "URL=http://dev.accessport.com/rs_client/upload.php",
17  "Resource=0",
18  "RecContentType=text/html",
19  "Referer=",
20  "Snapshot=t1.inf",
21  "Mode=HTML",
22  EXTRARES,
23  "URL=upload.swf?rserver=http://if.rs.accessport.cn/rs_save.php&siteid=470dc0a863cef2f501a8bc59&wkey={mykey}", ENDITEM,
23  "URL=http://if.rs.accessport.cn/crossdomain.xml", ENDITEM,
24  "URL=http://store.rs.accessport.cn/getdata.php? pid=1a10110f2q4dl2q18l470dc0a863cef2f501a8bc59&name=&key=d557e2a7a8bdeffbbe099fb54dd29436&rkey=lLWHWHWHwWywWy4KwWyLDq3&siteid=465ac0a84ce3d38c01671317", ENDITEM,
25  LAST);
26 lr_think_time(3);
27
28 web_custom_request("rs_save.php",
29  "URL=http://if.rs.accessport.cn/rs_save.php?siteid=470dc0a863cef2f501a8bc59&wkey={mykey}&filesize=103624",
30  "Method=POST",
31  "Resource=0",
32  "RecContentType=text/html",
33  "Referer=",
34  "Snapshot=t2.inf",
35  "Mode=HTML",
36  "EncType=multipart/form-data; boundary=----------Ef1Ij5cH2ae0ae0gL6Ef1GI3ae0Ef1",
37  body_variable_1,
38  LAST);
39
40 return 0;
41 }


TAG: LoadRunner 关联

 

评分:0

我来说两句

日历

« 2024-04-25  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 11938
  • 日志数: 6
  • 图片数: 1
  • 建立时间: 2007-10-24
  • 更新时间: 2012-07-30

RSS订阅

Open Toolbar