51Testing软件测试论坛

标题: 一个关于虚拟用户的问题 [打印本页]

作者: silvertree    时间: 2006-12-21 10:07
标题: 一个关于虚拟用户的问题
问一个关于虚拟用户的问题:比方说:录制LR自带的例子,录制时是用帐号jojo/bean来登录录制的,录制完成后准备负载测试虚拟十个用户时,这十个用户也都是用这个帐号登录,这不就还是一个用户吗??
作者: netcat    时间: 2006-12-21 11:35
这个问题我也 想问,,,如何既然可以模拟上千个用户,那么怎么样给他们分配不同帐号密码呢,
作者: silvertree    时间: 2006-12-21 11:51
原帖由 netcat 于 2006-12-21 11:35 发表
这个问题我也 想问,,,如何既然可以模拟上千个用户,那么怎么样给他们分配不同帐号密码呢,



有时候这些数据需要开发人员帮忙增加帐号
作者: xingcyx    时间: 2006-12-21 14:23
可以通过设置脚本中的参数来为它们分配不同的账号和密码。
作者: mole_ai    时间: 2006-12-21 15:53
具体的方法我不会,但是我知道需要自己编些代码什么的!应该不是很难,最近也在需要LR,等明白了再和大家分享!
作者: wpunk    时间: 2006-12-21 15:59
参数化的确可以解决这个问题。挺好用的!


我想问个问题,假如一千个相同的用户(用户名相同)并发登录系统,相当于几个用户啊? 相当于一个还是一千个用户并发?
请高人指点!!!
作者: netcat    时间: 2006-12-21 16:26
4#的高手能不能贴图出来啊,7#的问题问的好,我也想问啊,??
是高手的就发言,呵呵sdlkfj3
作者: silvertree    时间: 2006-12-21 18:36
原帖由 xingcyx 于 2006-12-21 14:23 发表
可以通过设置脚本中的参数来为它们分配不同的账号和密码。


那如果有这种情况:录制的是一个登录过程,通过设置参数设定了14对相对应的username/pw(username和pw必须匹配才可以登录),并且是按顺序取数据,然后虚拟20个用户做负载测试,那LR是怎么运行的? 是先按顺序登录这14个用户然后再从第一个用户开始重新登录直到达到20个的吗?
作者: xingcyx    时间: 2006-12-22 09:38
如果你设成按顺序的话,在场景运行的过程中,每个虚拟用户都会按顺序依次取得参数值,当用完后又会返回从第一个参数值开始取。

另外说一句:这些基本的东东在帮助里面都有的。
LR的帮助是初学者很有用的东东,建议多看看。
作者: jut984907    时间: 2006-12-22 11:15
首先聊聊多用户是否可以使用同一用户操作得问题.
讲个例子:
某OA系统有一个管理员admin,实际用户A/B/C/D/E都知道其密码.那么,这5个人都可以(甚至同时)用admin登陆后,做任何操作.
那么,我们在做性能测试时,完全可以用5个相同的admin用户,做任何操作(修改不同的个人信息等).
可见,lr中的并发用户不限制是否同一个,除非真实的应用系统中禁止同一用户有多个连接.
当然,我们会尽量(不是绝对)模拟真实的情况,也就是每个用户都是不同的.
作者: netcat    时间: 2006-12-22 11:36
哦,楼上的,说的有道理,你是河南南阳的??我也河南的,在郑州,呵呵,能联系更好啊,sdlkfj3
作者: yin830129    时间: 2006-12-22 11:41
原帖由 xingcyx 于 2006-12-22 09:38 发表
如果你设成按顺序的话,在场景运行的过程中,每个虚拟用户都会按顺序依次取得参数值,当用完后又会返回从第一个参数值开始取。

另外说一句:这些基本的东东在帮助里面都有的。
LR的帮助是初学者很有用的东东 ...


我设置的是 “每次遇到” 都取不同的值,但结果还是和 “每次循环” 取不同值结果一样,比如说10个vu运行3个循环,第一个循环10个都是一样的A,第二次都是一样的B,第三次都是一样的C,但是应该是第一个循环里面就开始取不同的值才对啊?怎么搞的呢?
教程里面没只说“  ◆Each Occurrence:在运行时, 每遇到一次该参数, 便会取一个新的值
                        ◆Each iteration:运行时, 在每一次循环中都取相同的值”
为什么我做的不一样呢?
作者: xingcyx    时间: 2006-12-22 11:51
每次遇到是当你的一次循环里面有多个参数的时候,它每次遇到都会取一次新值。
如果你的action里面只有一个参数,这两个设置当然都是一样的。
还有看你的理解,似乎是完全搞糊涂了。脚本中的参数设置和虚拟用户是没有关系的,建议再仔细看看,加深理解。
作者: yin830129    时间: 2006-12-22 12:00
那我要实现10个不同的用户名登陆系统,密码和用户名自动关联,那10个用户都取第一个账号密码,不就错了?那我应该怎么设置啊?
教程我看了好几遍了,这点还没搞明白,真是太笨了,麻烦不吝赐教!
作者: silvertree    时间: 2006-12-22 13:30
把用户名和密码都参数化,顺序要对应,就是说用户名和密码的顺序要一样,然后将select next row都选择sequential,update value on都选择Each iteration,这样就会取各自对应的密码了
作者: yin830129    时间: 2006-12-22 14:33
原帖由 silvertree 于 2006-12-22 13:30 发表
把用户名和密码都参数化,顺序要对应,就是说用户名和密码的顺序要一样,然后将select next row都选择sequential,update value on都选择Each iteration,这样就会取各自对应的密码了


我不是问怎么对应账号密码,而是我用10个虚拟用户去分别用10个不同的用户密码去登陆,结果他们都只用同一个账号密码登陆,为什么啊?应该怎么修改设置??
作者: xingcyx    时间: 2006-12-22 15:01
你改成随机的试一下
作者: yin830129    时间: 2006-12-22 15:17
啊?随机的有可能重复啊,我只是想知道怎么让他按顺序做,而且每个VU分配一个账号密码,应该可以实现的啊,为什么我做不出来呢,郁闷!
作者: silvertree    时间: 2006-12-22 15:55
原帖由 yin830129 于 2006-12-22 14:33 发表


我不是问怎么对应账号密码,而是我用10个虚拟用户去分别用10个不同的用户密码去登陆,结果他们都只用同一个账号密码登陆,为什么啊?应该怎么修改设置??


不知道你是怎么设置的,我刚才用LR自带的例子试了一下,可以用不同的用户密码去登陆呀

图上面就是按照我参数化时的用户名和密码按顺序登录的
作者: liuyong_100    时间: 2006-12-23 14:42
用SQL语句生成你想要的那么的用户不就可以了啊。
作者: lijian422202    时间: 2006-12-25 11:14
参数化有很多策略,有时间是很容易头晕。!为了自己更方便理解。在做参数的每次过程中都输出LOG,可以更加明了!也可以加深理解
作者: picture    时间: 2006-12-25 17:06
要完全理解参数化我觉得是不太容易的,LR教程上讲的太简单了,LR帮助里也讲的不完全,不过帮助基本的都说到了,
http://bbs.51testing.com/viewthr ... ighlight=%2Bpicture
我的理解,你也可以看帮助!
作者: yin830129    时间: 2006-12-25 17:26
谢谢“picture”兄弟的讲解,还是你的直观,一看什么都明白了!
作者: charmer    时间: 2006-12-25 18:43
我不知道你们是怎么做的,我是采用SOCKET来录制的脚本,虚拟了100个用户登陆我们的服务器,只是密码均采用同一个密码,如果采用不同的密码应该在参数化的时候用户名和密码应对应起来,有两列
作者: huangcm    时间: 2006-12-27 22:28
当使用文件中的值时,通过 VuGen 可以指定向参数分配值的方法。可用的方法包括:
➤ 顺序
➤ 随机
➤ 唯一

顺序
“顺序”方法顺序地向 Vuser 分配参数值。当正在运行的 Vuser 访问数据表格时,它将会提取下一个可用的数据行。

如果在“更新值的时间”列表框中指定了“每次迭代”,则 Vuser 将为每一次迭代从数据表格中提取下一个值。
如果在“更新值的时间”列表框中指定了“每次出现”,则 Vuser 将为每一次参数的出现从数据表格中提取下一个值,即使它在同一次迭代中。
如果在“更新值的时间”列表框中指定了“一次”,则第一次迭代中分配的值就会在每个 Vuser 接下来所有的迭代中使用。

例如,假定您的表格拥有下面显示的值:
名称
Kim
David
Michael
Jane
Ron
Alice
Ken
Julie


如果选择了“每次迭代”,则所有 Vuser 就会在第一次迭代中使用 Kim,第二次迭代中使用 David,第三次迭代中使用Michael,等等。
如果选择了“每次出现”,则所有 Vuser 就会在第一次出现时使用 Kim,第二次出现时使用 David,第三次出现时使用Michael,等等。
如果选择了“一次”,则第一个 Vuser 为所有的迭代提取Kim,第二个 Vuser 为所有的迭代提取 David,等等。
如果在数据表格中没有足够的值,则 VuGen 返回到表格中的第一个值,循环继续直到测试结束。

                  
随机
当测试开始运行时,“随机”方法为每个 Vuser 分配一个数据表格中的随机值。

如果在“更新值的时间”列表框中指定了“每次迭代”,则 Vuser 将会为每一次迭代从数据表格中提取一个新的随机值。
如果在“更新值的时间”列表框中指定了“每次出现”,则 Vuser 将会为每一次参数的出现从数据表格中提取一个新的随机值,即使它在同一次迭代中。
如果在“更新值的时间”列表框中指定了“一次”,则第一次迭代中分配的随机值就会在该 Vuser 的所有迭代中使用。

当从 LoadRunner Controller 运行一个方案时,您可以指定随机顺序的种子数。每个种子值代表用于测试执行的一个随机值顺序。每当使用该种子值时,都会将相同顺序的值分配给方案中的 Vuser。如果在测试执行中发现问题,并且要使用相同的随机值顺序重复该测试,请启用该选项。


唯一
“唯一”方法为每一个 Vuser 的参数分配一个唯一的顺序值。

如果在“更新值的时间”列表框中指定了“每次迭代”,则Vuser 将为每一次迭代从数据表格中提取下一个唯一值。
如果在“更新值的时间”列表框中指定了“一次”,则第一次迭代中分配的唯一值就会在每个 Vuser 的所有接下来的迭代中使用。
如果在“更新值的时间”列表框中指定了“每次出现”,则 Vuser 将会为每一次参数的出现从数据表格中提取一个新的唯一值,即使它在同一次迭代中。

例如,假定您的表格拥有左侧表格中显示的值。
如果指定了“每次迭代”,对于一个有 3 次迭代的测试运行,第一个 Vuser 在第一次迭代中提取 Kim,第二次迭代中提取 David,第三次迭代中提取 Michael。第二个 Vuser 提
取 Jane、Ron 和 Alice。第三个 Vuser 提取 Ken、Julie 和Fred。

如果指定了“一次”,则第一个 Vuser 为所有的迭代提取Kim,第二个 Vuser 为所有的迭代提取 David,等等。确保表格中的数据对所有的 Vuser 和它们的迭代来说是充足的。如果您拥有 20 个 Vuser,并且要运行 5 次迭代,则您的表格中必须至少包含有 100 个唯一值。

如果数据表格中没有足够的值,您可以指示 VuGen 如何继续运行:“中断 Vuser”、“以循环方式继续”或者“使用最后的值继续”。如果选择使用最后的值继续运行,则 Vuser 将会为所有接下来的迭代使用表格中最后一行的数据。
假如您想要给每一个 Vuser 都分配值,并且不想让那些值在 Vuser 之间共享,要实现该目标,可以在“在 Controller 中分配 Vuser 值”部分中指示 VuGen 为每个 Vuser 的值分配一个特定的编号。默认情况下, VuGen 自动为 Vuser 的值分配必需的编号。

[ 本帖最后由 huangcm 于 2006-12-27 22:30 编辑 ]
作者: 0709ready    时间: 2006-12-28 00:34
还没仔细研究,顶下楼上的
作者: hiyizhiyu    时间: 2006-12-28 13:54
我也有一个问题
如果脚本是删除页面上一个table中的某一个行
如果虚拟10个用户
是不是这10个用户都会去执行删除这一行的操作呢
但这个逻辑上好像有点问题
因为一行不能被多次删除的
那要完成这个场景是不是就要给每个用户制定一个不同的行让期操作呢
高手指点一下
作者: huangcm    时间: 2006-12-28 19:37
回答楼上:

可以约定去删除一个table中的第一行( 关联第一行记录的id)
用户A删除一条记录后,改记录就没了,下一条记录就变为第一行,
此时其他用户进行删除操作,又删除了table中的第一行

所以一条记录没有被多次删除,

某行记录是可以被多次删除的,只要它存在
作者: hiyizhiyu    时间: 2006-12-29 09:44
to huangcm:多谢多谢
也就是说用LR做压力测试
必须参数化脚本,使得每一个虚拟用户都有真实的数据操作
我之前理解错了
以为LR的虚拟用户只是模拟脚本单个用户执行时压力并不需要做实际操作
我刚刚学习LR的使用
希望多多指点
作者: fairy8642    时间: 2006-12-29 17:32
标题: 回复 #21 silvertree 的帖子
从哪里可以看到登陆的那些用户名?
作者: pele    时间: 2006-12-30 00:23
你可以到相应的日志文件里面去看的啊。最简单的方式,你可以去数据库里看,看什么用户登陆过系统,登陆系统之后进行了什么操作。
数据库可是根源啊。不同用户的行为,最终都会在数据库里面反应出来的。
作者: betty521    时间: 2006-12-30 18:15
我还是不太明白密码怎么设置才能对应用户名,我们现在的情况是用户名和密码不是存在同一个表中,他的顺序也不可能用同样的方法去取用户名和密码能对应上,这样密码这个做为参数应该怎样设置呢
作者: netcat    时间: 2007-1-5 15:52
楼上的,你可以在选择,winzard的时候,把下面的unique,什么的设置一下,让他们依次取值就可以拉,在两个表里应该更好办啊,
用户名参数化下,连一个数据池;密码参数化下,再连一个数据池,
应该就可以拉,呵呵,

[ 本帖最后由 netcat 于 2007-1-5 16:06 编辑 ]
作者: yin830129    时间: 2007-1-24 15:58
标题: 脸红了。。。
sdlkfj1
一个月后,再翻开以前问过的问题,感到好惭愧,不是因为自己的问题幼稚,而是各位高手们明明已经很清楚的指出了,因为自己的不理解,仍一而再,再而三的问,也许契而不舍的发问是值得称赞的,但是不经过细心理解别人的解答就盲目追问真的让我汗颜!
在此想特别对 xingcyx 和 silvertree  两位的热心帮助表示感谢,也对以前不负责任的问题说声对不起!
请以后继续多多指教!
作者: adiao    时间: 2007-1-24 16:52
只要将parameter properties中select next row 设为unique,update value on 设为once就可以了,这样设置必须满足一个条件:虚拟用户<=参数的个数。
作者: Joan2005    时间: 2007-1-28 00:06
...




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