转自:http://novasblog.blog.163.com/blog/static/43713514200901341934981/

手动关联的主要步骤为:
        第一步:录制测试脚本,录制二遍

        第二步:使用WinDiff工具找出两次脚本的不同,判断是否需要进行关联

        第三步:确定插入关联的位置

        第四步:在VIEW TREE中使用web_reg_save_param函数手动建立关联

        第五步:将脚本中有用到关联的数据,用参数代替

        第六步:验证关联的正确性

下面详细介绍:

第一步:

录制测试脚本,录制二遍

这一步就不用多说了,相同的操作,录制两份,分别保存

第二步:

使用WinDiff工具协助找出需要关联的数据
        1. 在第二份脚本中,点选VuGen的【Tools】>【Compare with Vuser…】,并选择第一份脚本。
        2. 接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选【Options】>【View】>【Show Inline Differences】)。

查看二份脚本中差异的部份,每一个差异都可能是需要做关联的地方。

注意:lr_thik_time部分的差异可以忽略

找到不同的部分后,复制,然后打开Recording Log或是Generation Log,(一般情况录制脚本时选择Single Protocol单协议在Recording Log里找,录制脚本时选择Multiple Protocol协议,在Generation Log里找)按Ctrl+F,在查找窗口中粘贴差异部分的内容,点击查找找到后,查看该部分的信息,确认是客户端的请求信息还是服务器回应的信息。也可以将脚本的视图方式换到树形方式,如下图,在Server Response里找。

如果出现在$$$$$$ Request Header For Transaction With Id 3 Ended $$$$$$这个部分,那证明是客户端发出的请求,这里是不需要做关联的

一般做的关联都是出现在****** Response Header For Transaction With Id 7 ******和****** Response Body For Transaction With Id 7 ******中的部分。

在找到这个信息后,需要记录如下信息:

a.记录这个不同数据之前的内容和之后的内容

b.记录这个不同数据出现的位置,是Header还是Body。(如果出现在如“****** Response Header For Transaction With Id 7 ******”这们的日志部分,则是“Search ”参数的范围可设置为“Headers”,如果出现在如“****** Response Body For Transaction With Id 7 ******”这们的日志部分,则是“Search ”参数的范围可设置为“Body”)

第三步:

确认插入关联的位置

我们在日志中找到了两次脚本的不同点的位置,根据这个位置,我们再确定是在哪个请求之后产生的,也就是说要定位发生不同点的response是由哪个request产生的,找到了这个请求的函数位置,我们就知道要往哪里做关联了

一般情况下关联函数写到发出请求的函数之前,服务器已经回应的要进行关联的数据脚本之后,在发出请求之前进行关联操作(调用web_reg_save_param函数中存放得到的动态内容的参数名称)(在发出请求之前就要将有变化的地方进行参数化,所以要放在发出请求之前,)

第四步:

插入关联函数

在插入关联函数前,我们先介绍关联函数web_reg_save_param

一个web_reg_save_param函数的例子:   
  web_reg_save_param ("sessionid", 
              "LB=Session_id:",
              "RB=;",
             "Search=Body",
              LAST);

在这里我们只介绍几个常用参数的含义
        语法: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。属性值不分大小写
        LB( Left Boundary ) : 返回信息的左边界字串。该属性必须有,并且区分大小写
        RB( Right Boundary ): 返回信息的右边界字串。该属性必须有,并且区分大小写
        Search : 返回信息的查找范围。可以是Headers,Body,Noresource,All(缺省)。该属性质可有可无。

那么如何插入该关联函数呢?
        1.将vugun切换到 view tree 模式下
        2.在左边的列表中,找到在上一步发出请求的函数,点击“右键”
        选择“insert before”

3.在弹出的“add step”对话框的“find function”中输入“web_reg_save_param”,点击“ok”
        在“parameter name”中输入,关联函数的名称,这里最好有含义,“sessionid”
        在“left boundary”中输入,刚才记录下的不同点字符串的左面的几个字符,定义左边界,Session_id:
        在“right boundary”中输入,刚才记录下的不同点字符串的右面的几个字符,定义右边界,;
        在“search in ”中,选择“body”
        点击“ok”

4.回到脚本编辑模式下,查看该函数插入是否正确

在发出请求的函数前应该看到:          
 web_reg_save_param ("sessionid", 
              "LB=Session_id:",
              "RB=;",
              "Search=Body",
              LAST);
 
        第五步:

将脚本中有用到关联的数据,用参数代替
        如发出请求的参数如下,那么将原来服务器返回的动态值使用{ sessionid } 来替换:  
  web_submit_form("login.php_2", 
              "Snapshot=t2.inf",
              ITEMDATA,
              "Name=login", "Value=wangjin", ENDITEM,
              "Name=password", "Value=wangjin", ENDITEM,
                "Name=Session_id","Value={ sessionid } ", ENDITEM,
              "Name=Submit", "Value=Login", ENDITEM,
              EXTRARES,
              "URL=/media/images/border_bg_l.gif", ENDITEM,
              "URL=/media/images/header_bg.gif", ENDITEM,
              "URL=/media/images/th.gif", ENDITEM,
              LAST);
 
        第六步:
        验证关联的正确性
        回放脚本,验证关联的正确性

ps:loadrunner自带订票系统自动关联扫描没结果,可以用另一种方式来关联

找到session右键鼠标create correlation,在回到脚本视图,代码就自动加好了:

loadrunner怎样进行手动关联的更多相关文章

  1. LoadRunner ---手动关联与预关联

    手动关联                                       如果脚本很长,那么我们想找到一个脚本中哪些地方是需要关联的并不是一件容易的事情.这时,我们可以通过脚本对比的方法找 ...

  2. LoadRunner脚本参数化之自动关联和手动关联

    一.关联的意义  1.关联的含义 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的 ...

  3. 【Loadrunner】Loadrunner 手动关联技术

    Loadrunner 手动关联技术 录制成功,回放失败,怀疑和动态数据有关: 1 重新录制一份脚本,两次录制的脚本进行比对,确定动态数据,复制动态数据: 2  找到第一次产生该动态数据的响应对应的相应 ...

  4. loadRunner手动关联, web_reg_save_param_regexp()函数正则匹配字符,赋值给变量

    loadRunner写脚本实现登录机票网站,手动关联,获取页面源码中特定字符 手动关联,就是通过函数获取某个步骤生成的字符,赋值给一个变量,这个变量可以作为接下来某个步骤的输入, 以便这个脚本能够在存 ...

  5. Loadrunner手动关联详解

    Loadrunner手动关联详解 一.关联的含义: 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到 ...

  6. LoadRunner脚本增强技巧之手动关联

    个人认为LoadRunner的手动关联技巧可以看做参数化的一种,区别在与获取参数的来源不同. 一般的参数化:把脚本中一个写死的数值或者字符串用一个变量参数来代替,每次迭代的时候,从本地文件或者数据库中 ...

  7. 使用loadrunner 12 手动关联

    关联的含义: 如浏览器打发送一个网页A请求,服务器返回这个请求,并且在返回的内容中携带一个session id=key,当浏览器再送出网页B的请求时,这时就要用ID=key的数据,服务器才会认为这是合 ...

  8. Loadrunner脚本自动关联和手动关联

    关于Loadrunner关联一.什么时候需要关联 1.关联的含义        关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服 ...

  9. LoadRunner 自动关联、手动关联的帖子

    https://www.guru99.com/correlation-in-loadrunner-ultimate-guide.html 这个网页里介绍了关联的概念,自动关联和手动关联的知识...

随机推荐

  1. EF6:编写你自己的code first 数据迁移操作(睡前来一篇,翻译的)

    原英文版由EF团队成员 Rowan Miller 在2013年发表,此处只作翻译备忘. 数据迁移提供了一套强类型API,用于执行通用的操作,比如CreateIndex("dbo.Blogs& ...

  2. kali openvas安装

    最新的kali需要用apt-get安装后使用 安装 apt-get install openvas 自动设置 openvas-setup 检测设置 openvas-check-setup 如果检测没有 ...

  3. Java--mysql实现分页查询--分页显示

    当数据库中数据条数过多时,一个页面就不能显示,这是要设置分页查询,首先要使用的是数据库sql语句的limit条件实现分组查询sql语句大概形式为: select * from table limit ...

  4. Appium Hybrid混合应用测试——Native切换WebView , 切换不了WebView (没有试过,先记录在此)

    Appium Hybrid混合应用测试过程中,经常需要在Native和WebView之间进行切换: 1.切换至WEBVIEW操作: for cons in driver.contexts: if co ...

  5. Java中的三元运算:a = (a > b)?a:b

    格式:逻辑值 ? 表达式1 : 表达式2 执行顺序:先执行逻辑值,如果逻辑值为true,则执行表达式1:反之则执行表达式2 a = (a > b)?a:b 如果a>b成立,返回a: 如果a ...

  6. XStream使用笔记

    XStream是一个可以将JavaBean生成XML的工具,很方便的帮助我们在后台服务器将数据序列化为XML,接下来就可以将XML数据响应给前台进行数据交互 XStream需要的jar包 * 核心JA ...

  7. 【BZOJ】1007: [HNOI2008]水平可见直线(凸包)

    题目 传送门:QWQ 分析 在下面维护一个凸壳 好久没写博客了...... 代码 #include <bits/stdc++.h> using namespace std; ; ,INF= ...

  8. MariaDB主从异步复制详解

    一 异步复制(Asynchronous replication) 1.MariaDB本身支持单向的.异步的复制.异步复制意味着在把数据从一台机器拷贝到另一台机器时有一个延时,最重要的是这意味着当应用系 ...

  9. zabbix agent主动模式与proxy模式,实现公网zabbix监控私网客户机

    zabbix agent主动模式,实现公网zabbix监控私网客户机 zabbix_server端当主机数量过多的时候,由Server端去收集数据,Zabbix会出现严重的性能问题,主要表现如下:  ...

  10. cinder backup ceph的配置和使用

    Backup 是将 volume 备份到别的地方(备份设备),将来可以通过 restore 操作恢复. 初看 backup 功能好像与 snapshot 很相似,都可以保存 volume 的当前状态, ...