51Testing软件测试论坛

标题: 关于LR中‘每次迭代模拟一个新用户’选项的意义和实际影响 [打印本页]

作者: qiuyangzh    时间: 2005-11-29 13:58
标题: 关于LR中‘每次迭代模拟一个新用户’选项的意义和实际影响
向大家请教LR中一个设置的问题
我使用的LR版本为7.8,并安装了中文包。
点击脚本‘运行时设置’,选中‘浏览器>浏览器仿真’,其中有一个选项为‘每次迭代模拟一个新用户’(见后面的图片),LR对其的解释是:每次迭代模拟一个新用户,指示 VuGen 将各个迭代之间的所有 HTTP 上下文重置为 init 部分结束时相应的状态。使用该设置,Vuser 可以更准确地模拟开始浏览会话的新用户。它将删除所有 Cookie,关闭所有 TCP 连接(包括 Keep-Alive 连接),清除模拟浏览器的高速缓存,重置 HTML 帧层次结构(帧编号将从 1 开始)并清除用户名和密码。默认情况下启用该选项。

在我的脚本中(Web(Http/Html)),我把登录操作放到了vuser_init()中,要测试的业务放到了Action()中,在以迭代方式运行脚本的时候,从第2次开始,之后vuser的所有运行都失败,系统(指被测的应用系统,不是LR)给出的错误信息是‘用户未登录’。我把‘每次迭代模拟一个新用户’这个选项去掉,则可以顺利的运行。

我现在感到疑惑的是:按照LR文挡中对‘每次迭代模拟一个新用户’的解释——‘指示 VuGen 将各个迭代之间的所有 HTTP 上下文重置为 init 部分结束时相应的状态’,不应该运行失败啊。因为我的登陆操作就是放在vuser_init()中的,如果是重置为 init 部分结束时的状态’,怎么实际运行的时候会不成功呢?是不是LR的解释不够准确?

还有一点,如果我在不选中‘每次迭代模拟一个新用户’的情况下运行测试,那么对测试结果的准确性是否会产生影响?在什么情况下应该选中这个选项,什么情况下应该不选中?你在遇到这个问题的时候是怎么处理的呢?
作者: tacy_lee    时间: 2005-11-29 14:34
选择了模拟新用户,lr会关所有tcp连接,然后重新建立连接,所以你的session自然失效.

选择这个选项就是模拟新用户操作,

什么时候不选呢,举个例子,你一个用户登入系统之后,有十个查询步骤,当然这些步骤就应该是一个用户完成,这时候不该选,而且遥模拟浏览器cache
作者: qiuyangzh    时间: 2005-11-29 15:07
谢谢tacy_lee
我迭带的目的就是想每次都模拟一个新的用户。没有办法实现吗?因为我不想把登陆的部分放到Action()中
作者: tacy_lee    时间: 2005-11-29 16:03
可以改应用的话,取消login和权限校验,让后面的动作可以单独跑

不行的话就不要模拟cache,当然会有点区别,毕竟不用重新建立tcp连接(这个在大用户量的时候不可忽略)
作者: nettie    时间: 2005-11-29 16:14
Runtime Settings->Run Logic里,把init和end块里面的vuser_init和vuser_end删掉,然后添加到中间的Run块里,就可以实现每次循环都运行vuser_init和vuser_end
作者: qiuyangzh    时间: 2005-11-29 16:17
前一种方法,当然是可以,当现在可能不适合我们的情况
后一个方法,我实验过了,不行,仍然提示用户没有登陆
我认为在LR中是没有办法实现这种要求的。

谢谢tacy_lee
作者: x2test    时间: 2010-12-16 20:34

作者: 梧桐落叶    时间: 2010-12-31 15:30
这是一个值得思考的问题。。
作者: qinyushuang    时间: 2011-9-13 17:22
前一种方法,当然是可以,当现在可能不适合我们的情况
后一个方法,我实验过了,不行,仍然提示用户没有登 ...
qiuyangzh 发表于 2005-11-29 16:17

我觉得lz可以试试将用户名和密码参数化的方法,每次迭代取一条记录作为该次运行的数据,这样应该可以实现lz所说的问题。
作者: 阿星爱美酒    时间: 2012-2-8 00:02
系统的用户名密码被更改了。我想把密码重置。使用loadrunner怎么做(重置密码)。【规则是:改了十次才能够生效。那么应该是最后一次是初始化密码123456 才能够生效。 】怎么做。请求帮助!谢谢!
作者: 云层    时间: 2012-2-8 09:37
这个挖坟的厉害了
作者: mvvztt    时间: 2012-2-8 09:52
谁让你把登录放在Vuser_init()而不放在Action()里呢,迭代只迭代Action()部分,所以当然提示用户未登录啦。话说把登录部分放在Action()里也没什么关系吧,或者你新建一个Action(),把登录放在新建的Action()里




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