51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 12391|回复: 34
打印 上一主题 下一主题

[原创] 请前辈指点:lr中"参数化"和"关联"的差异之处

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-12-24 11:05:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在刚用lr,比较困惑"参数化"和"关联"的差异之处
一直不明白这两者的区别

请大家指点

谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

该用户从未签到

推荐
发表于 2008-12-24 11:49:18 | 只看该作者

关联教程


这里有一份有关关联的教程,LZ看一下,讲的很详细。
相信看过之后就会清楚了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

推荐
发表于 2008-12-25 13:59:32 | 只看该作者
原帖由 xqqxjnt1988 于 2008-12-24 11:05 发表
现在刚用lr,比较困惑"参数化"和"关联"的差异之处
一直不明白这两者的区别

请大家指点

谢谢


你和你朋友要去美国,
参数化:那你用你的签证,别人用别人的签证;
关联:你这次去用这次的签证,下次去要再办签证,上次的签证失效了。
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

2#
发表于 2008-12-24 11:17:42 | 只看该作者
参数化,数据驱动的一种,测试脚本和测试数据分离开来的一种,数据不是写死在脚本里,这样可以提高脚本的复用性。
关联,服务器返回给客户端一些动态变化的值,客户端使用这些值去访问服务器的时候,不能把这些值写死放在脚本中,而应该存放在一个变量里面。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-12-24 11:34:21 | 只看该作者
谢谢本站支柱lemon的指点,
那么我是否可以这样理解:
我把服务器传回来的数据进行参数化,赋予一个变量呢,这样也不是写死的呀
可是这样一来,就成了参数化了,不用关联了

这两个概念是一回事吗,都是把动态的数据赋予一个变量啊
那还要弄两个概念出来干嘛呢

呵呵,我真的糊涂了,请大家讲明白一点好吗
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-12-24 12:07:12 | 只看该作者

为什么要参数化

在录制程序运行的过程中,Vugen自动生成了脚本以及录制过程中实际用到的数据。在这个时候,脚本和数据是混在一起的。

比如,你用VU的Web Vuser录制一个用户登陆Web系统的过程,对于登陆的操作,会生成以下脚本:
web_submit_form(
...
"Name=username", "Value=test", ENDITEM,
"Name=password", "Value=tt", ENDITEM,
...
LAST);

web_submit_form是登录触发的动作,而"test"和"tt"是填入的数据。
如果Controller里以多用户方式运行这个脚本的时候,每个虚拟用户都会以同样的用户名"test"、密码"tt"去登陆Web系统。这样做性能测试肯定不行,这显然不是一个真实的业务场景。尤其服务器大都会采用Cache功能提高系统性能,用同样的用户名、密码登陆系统的Cache命中率会很高,也要快的多。
因此,希望用LR多用户多循环运行时,不会只是重复一个用户的登陆,也就是说,此函数中的数据要变化,这样的话,就把这些数据用一个参数来代替,其实就是把常量变成变量。
参数化后的脚本如下:
web_submit_form(
...
"Name=username", "Value={username}", ENDITEM,
"Name=password", "Value={password}", ENDITEM,
...
LAST);
参数化后,用户名"test"被一个参数{username}替换,密码"tt"被另外一个参数{password}代替。
{username}和{password}分别和参数文件关联,在脚本运行时,用户名和密码的值就从参数{username}和{password}中获得。这样就实现了脚本和数据的分离。

参数化是LoadRunner中经常用到的功能。除了实现数据驱动之外,参数化脚本还具有以下优点:
1.可以使脚本的长度变短
2.可以增强脚本的可读性和可维护性
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-12-24 12:08:40 | 只看该作者
LZ还有什么不清楚的吗?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2008-12-24 14:19:20 | 只看该作者
谢谢你,lemon
讲得这么详细
从你的讲解中,我的理解是这样,还请你看看我理解的对吗?谢谢

我把需要动态变化的数据用参数代表,如果参数与某文件有关系的话,就是关联了
                                 如果参数不与任何文件有关系,就是单纯的参数化了

关联包括参数化这个方式,还包括某些无法用变量描述的动态过程,
所以关联是一个过程,而参数化是关联的一种形式
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-12-24 14:29:31 | 只看该作者

请问:需要进行关联的数据一定是服务器发给客户端的吗?

请问:需要进行关联的数据一定是服务器发给客户端的吗?
     客户端发给服务器的就一定不需要关联吗

那比如我要模拟很多人写邮件,不同的人邮件加入的附件是不同的,附件可能无法用参数化来动态模拟,那么可以关联吗
请问
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-12-24 14:50:18 | 只看该作者
建议楼主再次理解关联这一概念。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-12-24 14:59:43 | 只看该作者
在Web系统架构中,浏览器向Web服务器发送第一个请求后,在服务器的回应数据包中,有一个Session ID,以后浏览器再向服务器发送请求时,都会在请求数据包中夹带这个Session ID,Web服务器接下来就会利用这个Session ID来识别跟它要数据的是不是同一个浏览器。对于每个新的交易,服务器都会产生新的Session ID给浏览器。如果Vugen还是用旧的Session ID向服务器要数据,服务器会发现这个Session ID是失效的或是它根本不认识这个Session ID,当然就不会传送正确的网页数据给Vugen了。
要对付这种服务器,必须想办法找出这个Session ID到底是什么,位于何处,然后把他截取下来,放到某个参数中,并且取代掉脚本中有用到的Session ID的部分,这样就可以骗过服务器,正确地完成整个交易。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-12-25 13:53:21 | 只看该作者
我可以这样理解吗?参数化是为了从数据库中取用户名、密码
关联是用某个参数取代录制中得一个数据 在回放得时候不显示或不执行 去欺骗服务器 是吗 呵呵
愚见
请教诲
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2008-12-25 14:51:18 | 只看该作者
讲的好
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2008-12-25 14:52:22 | 只看该作者
2楼有啥联系方式没 能加你一下么?以后多多向你学习
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2008-12-26 10:52:19 | 只看该作者
对于Lemon_s回答我有一些不理解。难道在浏览器和服务器在第一交互时服务端会发送一个session ID,那么这个session id的寿命保持多久,你所指的交易能不能说的再具体点。
谢谢啦:
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2008-12-26 11:49:37 | 只看该作者
原帖由 dawee 于 2008-12-25 13:59 发表


你和你朋友要去美国,
参数化:那你用你的签证,别人用别人的签证;
关联:你这次去用这次的签证,下次去要再办签证,上次的签证失效了。



这个讲的好,参数化就是签证,都是签证,但究竟是谁的,那就要看你导入的数据了
关联,在LR中不想次次去重新办签证,所以要用上次的签证来蒙混过关,所以需要关联
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2008-12-26 11:58:30 | 只看该作者
原帖由 郭佩华 于 2008-12-26 10:52 发表
对于Lemon_s回答我有一些不理解。难道在浏览器和服务器在第一交互时服务端会发送一个session ID,那么这个session id的寿命保持多久,你所指的交易能不能说的再具体点。
谢谢啦:

并不是所有的情况都会这样,
这里说的是一些比较智能的服务器,在每个浏览器第一次跟它要数据时,都会在数据中夹带一个惟一的标示码,
然后就会利用这个标识码来识别发出请求申请的是不是同一个浏览器。
一般称这个标识码为Session ID。
对于每个新的交易,服务器都会产生新的Session ID给浏览器。
在这种情况下如果你不做关联,执行脚本就会失败,因为VuGen还是用之前的旧的Session ID向服务器要数据,
服务器就会发现这个Session ID已经失效或者无法识别这个Session ID,当然就不会传送正确的网页数据给VuGen了。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2008-12-26 12:00:08 | 只看该作者
如,LR自带的那个Web Tours就是智能服务器。
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2008-12-26 13:08:37 | 只看该作者
参数化针对的数据是已知的,是客户端向服务端发送的数据。比如说订票,航班时间、出发地、目的地这些都是确定的,可以参数化。
关联针对的数据是未知的,是服务端返回给客户端的数据。比如说订票,售票员给你的票的座位号、票的序号这些都是你不知道的,需要关联。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    郁闷
    2018-8-3 13:59
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]测试连长

    20#
    发表于 2008-12-26 13:43:32 | 只看该作者
    我基本同意楼上的。

    参数化是对已知数据,比如你对登陆用户名,密码参数化。100个 用户并发,而我们只录制一个脚本,就把这100个 用户名  密码参数化,
    让脚本自己取。

    关联,是因为有一些情况下,系统会返回一些动态变化的值,录脚本时候是一个值,回放的时候就变成另一个值了。我们关联后,先把这个值
    保存在参数里,让脚本调用,这样就避免脚本校验不过了。

    不知道我这么说,可以明白吗
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-7 05:27 , Processed in 0.080246 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表