51Testing软件测试论坛

标题: 请前辈指点:lr中"参数化"和"关联"的差异之处 [打印本页]

作者: xqqxjnt1988    时间: 2008-12-24 11:05
标题: 请前辈指点:lr中"参数化"和"关联"的差异之处
现在刚用lr,比较困惑"参数化"和"关联"的差异之处
一直不明白这两者的区别

请大家指点

谢谢
作者: Lemon_s    时间: 2008-12-24 11:17
参数化,数据驱动的一种,测试脚本和测试数据分离开来的一种,数据不是写死在脚本里,这样可以提高脚本的复用性。
关联,服务器返回给客户端一些动态变化的值,客户端使用这些值去访问服务器的时候,不能把这些值写死放在脚本中,而应该存放在一个变量里面。
作者: xqqxjnt1988    时间: 2008-12-24 11:34
谢谢本站支柱lemon的指点,
那么我是否可以这样理解:
我把服务器传回来的数据进行参数化,赋予一个变量呢,这样也不是写死的呀
可是这样一来,就成了参数化了,不用关联了

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

呵呵,我真的糊涂了,请大家讲明白一点好吗
作者: Lemon_s    时间: 2008-12-24 11:49
标题: 关联教程
[attach]47957[/attach]
这里有一份有关关联的教程,LZ看一下,讲的很详细。
相信看过之后就会清楚了。
作者: Lemon_s    时间: 2008-12-24 12:07
标题: 为什么要参数化
在录制程序运行的过程中,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.可以增强脚本的可读性和可维护性
作者: Lemon_s    时间: 2008-12-24 12:08
LZ还有什么不清楚的吗?
作者: xqqxjnt1988    时间: 2008-12-24 14:19
谢谢你,lemon
讲得这么详细
从你的讲解中,我的理解是这样,还请你看看我理解的对吗?谢谢

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

关联包括参数化这个方式,还包括某些无法用变量描述的动态过程,
所以关联是一个过程,而参数化是关联的一种形式
作者: xqqxjnt1988    时间: 2008-12-24 14:29
标题: 请问:需要进行关联的数据一定是服务器发给客户端的吗?
请问:需要进行关联的数据一定是服务器发给客户端的吗?
     客户端发给服务器的就一定不需要关联吗

那比如我要模拟很多人写邮件,不同的人邮件加入的附件是不同的,附件可能无法用参数化来动态模拟,那么可以关联吗
请问
作者: Lemon_s    时间: 2008-12-24 14:50
建议楼主再次理解关联这一概念。
作者: Lemon_s    时间: 2008-12-24 14:59
在Web系统架构中,浏览器向Web服务器发送第一个请求后,在服务器的回应数据包中,有一个Session ID,以后浏览器再向服务器发送请求时,都会在请求数据包中夹带这个Session ID,Web服务器接下来就会利用这个Session ID来识别跟它要数据的是不是同一个浏览器。对于每个新的交易,服务器都会产生新的Session ID给浏览器。如果Vugen还是用旧的Session ID向服务器要数据,服务器会发现这个Session ID是失效的或是它根本不认识这个Session ID,当然就不会传送正确的网页数据给Vugen了。
要对付这种服务器,必须想办法找出这个Session ID到底是什么,位于何处,然后把他截取下来,放到某个参数中,并且取代掉脚本中有用到的Session ID的部分,这样就可以骗过服务器,正确地完成整个交易。
作者: majun915    时间: 2008-12-25 13:53
我可以这样理解吗?参数化是为了从数据库中取用户名、密码
关联是用某个参数取代录制中得一个数据 在回放得时候不显示或不执行 去欺骗服务器 是吗 呵呵
愚见
请教诲
作者: dawee    时间: 2008-12-25 13:59
原帖由 xqqxjnt1988 于 2008-12-24 11:05 发表
现在刚用lr,比较困惑"参数化"和"关联"的差异之处
一直不明白这两者的区别

请大家指点

谢谢


你和你朋友要去美国,
参数化:那你用你的签证,别人用别人的签证;
关联:你这次去用这次的签证,下次去要再办签证,上次的签证失效了。
作者: deargodlove    时间: 2008-12-25 14:51
讲的好
作者: deargodlove    时间: 2008-12-25 14:52
2楼有啥联系方式没 能加你一下么?以后多多向你学习
作者: 郭佩华    时间: 2008-12-26 10:52
对于Lemon_s回答我有一些不理解。难道在浏览器和服务器在第一交互时服务端会发送一个session ID,那么这个session id的寿命保持多久,你所指的交易能不能说的再具体点。
谢谢啦:
作者: medoraemon    时间: 2008-12-26 11:49
原帖由 dawee 于 2008-12-25 13:59 发表


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



这个讲的好,参数化就是签证,都是签证,但究竟是谁的,那就要看你导入的数据了
关联,在LR中不想次次去重新办签证,所以要用上次的签证来蒙混过关,所以需要关联
作者: Lemon_s    时间: 2008-12-26 11:58
原帖由 郭佩华 于 2008-12-26 10:52 发表
对于Lemon_s回答我有一些不理解。难道在浏览器和服务器在第一交互时服务端会发送一个session ID,那么这个session id的寿命保持多久,你所指的交易能不能说的再具体点。
谢谢啦:

并不是所有的情况都会这样,
这里说的是一些比较智能的服务器,在每个浏览器第一次跟它要数据时,都会在数据中夹带一个惟一的标示码,
然后就会利用这个标识码来识别发出请求申请的是不是同一个浏览器。
一般称这个标识码为Session ID。
对于每个新的交易,服务器都会产生新的Session ID给浏览器。
在这种情况下如果你不做关联,执行脚本就会失败,因为VuGen还是用之前的旧的Session ID向服务器要数据,
服务器就会发现这个Session ID已经失效或者无法识别这个Session ID,当然就不会传送正确的网页数据给VuGen了。
作者: Lemon_s    时间: 2008-12-26 12:00
如,LR自带的那个Web Tours就是智能服务器。
作者: qiujiafu    时间: 2008-12-26 13:08
参数化针对的数据是已知的,是客户端向服务端发送的数据。比如说订票,航班时间、出发地、目的地这些都是确定的,可以参数化。
关联针对的数据是未知的,是服务端返回给客户端的数据。比如说订票,售票员给你的票的座位号、票的序号这些都是你不知道的,需要关联。
作者: kuailederen    时间: 2008-12-26 13:43
我基本同意楼上的。

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

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

不知道我这么说,可以明白吗
作者: medoraemon    时间: 2008-12-26 16:34
原帖由 qiujiafu 于 2008-12-26 13:08 发表
参数化针对的数据是已知的,是客户端向服务端发送的数据。比如说订票,航班时间、出发地、目的地这些都是确定的,可以参数化。
关联针对的数据是未知的,是服务端返回给客户端的数据。比如说订票,售票员给你的票的 ...

家辅兄,最近怎么样了!
作者: qiujiafu    时间: 2008-12-26 18:21
原帖由 medoraemon 于 2008-12-26 16:34 发表

家辅兄,最近怎么样了!

上次去平安复试,没有银行工作经验,被咔嚓了。
现在在家上网,逛逛论坛,看看小说,投投简历。
估计今年就这样过去了。。

你呢?
作者: hades83    时间: 2009-6-11 20:08
说的很明白
作者: hades83    时间: 2009-6-11 20:09
标题: 回复 20# 的帖子
说的很明白
作者: ziva    时间: 2009-7-9 15:53
参数化是针对那些由client端产生的数据,如username,password; 而关联是针对由server端产生的数据,如SessionID.
作者: 向上de蜗牛    时间: 2010-12-30 09:51
谢谢
作者: zhangminyan    时间: 2011-8-30 10:09
谢谢你们讲得都很详细
作者: zhaozhixiu    时间: 2011-9-2 15:05
回复 12# dawee


   


这个回答形象,直接说出了两者的不同,呵呵
作者: 123321asdf    时间: 2011-10-12 12:19
我基本同意楼上的。

参数化是对已知数据,比如你对登陆用户名,密码参数化。100个 用户并发,而我们只录 ...
kuailederen 发表于 2008-12-26 13:43



  也就是说 一个登陆程序 有验证码的话 验证码这一块就 需要关联了
作者: meibaocai    时间: 2011-11-15 17:16
很不错的文档
作者: meibaocai    时间: 2011-11-15 17:17
很不错的文档
作者: yinjianying1982    时间: 2011-11-16 16:36
讲的很详细,可是,可是我看不懂呢。
作者: jacckljl    时间: 2011-11-23 14:52
简单理解一点好:
参数就是你发给服务器的数据,需要用变量替代
关联就是服务器发给你的数据,需要回送给服务器,其实也一种变量,只不过这种变量你无法掌控!
作者: wower1985    时间: 2011-11-29 14:26
回复 19# qiujiafu


   同意!关联是因为返回的值不预知内容,不好控制,所以先保存着,然后备用。
  如果能预知或可控返回的内容,参数化一样能达到效果。
作者: 小二呀    时间: 2016-1-4 14:45
20楼,那请问可以把关联的值进行参数分配么?如何做到?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2