51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4626|回复: 21
打印 上一主题 下一主题

[原创] 用controller依次跑2个脚本时,参数化问题!(问题解决了,不知道结论对不对)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-5-18 23:13:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 夏日摸摸茶 于 2011-5-20 21:00 编辑

内容有点长哈 不过像我一样的新手 好好看看 能对参数化那块多一些理解的



接触LR时间不长,并且之前没有跑过2个脚本的经历,这次用自带的 webtours 录制了2个脚本,结果被参数化那块难住了 ,帮忙看下原因:

脚本1:注册用户(打开首页-点注册按钮-进行注册-退出)
对其中的username进行了参数化,存放在username.txt中,其他密码地址等信息都是相同的。

脚本2: 订票(登录-订票-退出)
同样对其中的username进行了参数化(使用同一个参数列表username.txt文件中的值)

测试目的:
不涉及加压,只是用controller添加这两个脚本,先模拟2个用户进行注册,完成后,紧接着模拟2个用户,使用注册好的username登录并订票。

脚本回放没问题,当用controller单独运行各个脚本时,一切都正常,注册和投票也都没问题。
于是同时添了2个脚本,按组的方式运行,并设置依次执行(先注册成功,再登录投票)。


问题:

跑完场景后,没有任何错误,但用这两个用户名登录webtours后,都能够登录成功,但查看订票记录中都为空,说明脚本1都正常执行,脚本2中实际上没有实现投票。

尝试了如下参数化方式:
脚本1这样参数化:

从结果来看,注册2个用户能成功,说明脚本1应该没什么大问题。

奇怪的地方是脚本2:
当使用如下方式参数化时,

结果:2个用户都不能订票成功

当使用如下方式参数化时,

结果:排在第一位的用户订票成功2次,第二位的用户不能订票。

每次重新执行场景时,我都更新了参数化中的列表,去掉了用过的username。此脚本也未涉及关联。controller中未更改过任何默认配置。
run-time-setting那里未改动,迭代1次。浏览器模拟那块设置的是


最初跑的是20个用户,还涉及迭代,后来为了排除问题,弄了这个最简单的场景,结果这个方式也不能订票成功。对奇怪的就是脚本2的那两种参数化方式上,各种匹配多尝试了,主要的结果还是这样。
场景的结果:


只要这俩脚本一起运行(按先后顺序)时,就不能订票,此时,取消脚本1,只跑脚本2,由于用户已刚刚注册成功过,因此2个用户都能够定票成功
哎,不知道说的够不够清楚,困惑2天了,求指点中。。。。





解决办法:

单独执行2个脚本,结果都是正常的,但按group的方式,依次执行,就出问题。(俩脚本的内容都录制在)

于是在脚本2中用户登陆后,设置了检查点,通过查看日志,发现用户并未登陆成功。问题出在脚本2的参数化取值上。
我尝试着设置了另外一个一摸一样的参数列表文件username1.txt,里面的内容和原username保持一致。并且把脚本2中的参数更新成这个username1。

结果这个尝试是正确的:
①从结果来看,在场景中,如果2个脚本共用一个参数化文件username,并且都选择unique的方式的话,假如参数中有10行内容,脚本1的两个用户取走了前2行,脚本2的两个用户就会从第三行开始取,而不是都从第一行开始取值。这和设想的不一样,原以为两脚本之间没有联系。但结果竟然。。。。。所以造成了 第三行的用户根本未注册,更别提投票了。(不知道有没有什么设置能让两个脚本都从通过一个文件的第一行开始取值???)   
回复 :13楼an_sshan  感觉像是您说的问题,造成了脚本2无效,但是我都是录在action中的。  


按照用2个参数化文件的方式继续说:
②当脚本2的参数列表中只有2个值时,报错:Insufficient records parameter ‘username’ in table to provide the vuser with unique data  数据不够用
当参数个数大于等于4个值时,就执行成功,想不明白第二个脚本中为何需要有一倍或者一倍以上的参数值。
(PS:单独运行脚本2时能正常投票,但当1和2连续运行,就存在这个“数据不够”的问题 此时必须多写出一倍以上的参数值,才能正常执行  而且最先运行的脚本1中的参数化方式和参数值 与脚本2一摸一样 脚本1就不涉及“数据够不够用这回事” 这点让人非常困惑 )

纠结了很久,也问了很多人,后来查了几次参数化那块,发现是 疏忽引起的问题:
在脚本2中,最初用的是username当参数,后来改用username1之后,原来的username参数仍处于界面中  如图

因此,俩脚本同时跑场景时,即使脚本2里已不再使用username参数,但仍有2个unique限制,需要比实际用户数多一倍的值,所以会报“数据不够”的错。当手动将这里的username参数删除后,只需要与用户数相同的参数(2个值)就可以成功了。一切都和当初的测试目的一样了。

值得关注的就是:
①双脚本连续运行时,都使用unique+each iteration更新方式时,第二个脚本不是从头开始取值。如果脚本2使用sequential+each iteration方式,才是从头取值,但2个用户会都取第一个值,结果第一个值投票2次,第二个值没有被用到。这是我实践的结果。

②参数化列表中,不用的参数应该及时删除,以免画蛇添足。
这地方还有点困惑,在上面的图中,为什么脚本1和脚本2同时运行时 就会报错,仅运行脚本2时,就不报错。
(由于同用一个txt文件,莫非是脚本1中的username参数激活了脚本2中的这个多余的参数? )

感兴趣的可以亲手试试  以上纯属个人猜测,缺乏权威,望高人指点。

本帖子中包含更多资源

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

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

使用道具 举报

该用户从未签到

2#
发表于 2011-5-19 10:57:51 | 只看该作者
先帮顶,一会拿个测试环境试验下
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2011-5-19 11:01:25 | 只看该作者
在实际的业务逻辑中,是先注册了用户才能订票;而你设计的场景是,注册与订票一起进行,你可以设一些检查点,看一下脚本2的用户有没有登录进系统。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2011-5-19 11:20:34 | 只看该作者
本帖最后由 夏日摸摸茶 于 2011-5-19 11:22 编辑
在实际的业务逻辑中,是先注册了用户才能订票;而你设计的场景是,注册与订票一起进行,你可以设一些检查点 ...
Nio 发表于 2011-5-19 11:01


谢谢您指点 但我设置的初始化脚步2的方法是“等脚步1执行完之后在进行”的呀   登录之前,用户已经是注册OK了的  这样也不行吗
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    5#
    发表于 2011-5-19 21:17:10 | 只看该作者
    为啥不写到一个脚本里哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    6#
    发表于 2011-5-19 21:18:42 | 只看该作者
    从你描述的情况看,看上去与参数取值的unique 有关,建议楼主将参数的取值打印出来看看具体是取到了什么用户名来登陆
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2011-5-20 09:54:59 | 只看该作者
    回复 5# msnshow

    不是为了测压力 只是想尝试下这样做可行不可行 呵呵
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2011-5-20 10:33:40 | 只看该作者
    回复 7# 夏日摸摸茶


        插入检查点,验证你的脚本是不是好的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2011-5-20 13:44:47 | 只看该作者
    监测下事务,确认是否真的是脚本1运行完毕后再运行脚本2.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2011-5-20 14:21:39 | 只看该作者
    回复  夏日摸摸茶


        插入检查点,验证你的脚本是不是好的。
    zhouxiaowen 发表于 2011-5-20 10:33


    在controller中 我先单独运行脚本1,没问题
    然后在使用刚注册的用户 单独运行脚本2 也没问题

    没有设置检查点 我手动登陆webtours查看得到的结果
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2011-5-20 14:39:26 | 只看该作者
    对登录用户进行参数化,在进行叠加,其后果就是你叠加几次,完全是第一个用户跑了几圈,至于其他用户全部失败;
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2011-5-20 15:23:40 | 只看该作者
    回复 10# 夏日摸摸茶


        设置检查点,确认脚本问题是更有效的方法。你可以试试的。

       还有,建议你不要总按你的思路或想法去处理问题,那样你会一直解决不好。因为你总是在那里不停的转来转去,压根没有很好的解决问题措施。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2011-5-20 15:37:04 | 只看该作者
    你的这两个脚本都是放在了Action中吗?请检查。最基本的别忘了,vuser_init()只执行一次;如果把登陆的操作放在了vuser_init()中,那么你在执行场景时,就只会有一个username来进行订票。在第2个脚本中所作的参数化也就没有意义了!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2011-5-20 22:52:09 | 只看该作者
    你的这两个脚本都是放在了Action中吗?请检查。最基本的别忘了,vuser_init()只执行一次;如果把登陆的操作放 ...
    an_sshan 发表于 2011-5-20 15:37



       是都放在action中的,脚本2我录制的时候是把登陆放在 inti中 但后来又剪切到 action中了 退出部分也一样。  注册的脚本1都是在action中的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
     楼主| 发表于 2011-5-20 22:53:16 | 只看该作者
    回复  夏日摸摸茶


        设置检查点,确认脚本问题是更有效的方法。你可以试试的。

       还有,建议你 ...
    zhouxiaowen 发表于 2011-5-20 15:23


    通过检查点的方法 查到了 脚本2的用户没有成功登陆。 多谢指点。~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2011-5-20 22:55:12 | 只看该作者
    为啥不写到一个脚本里哦
    msnshow 发表于 2011-5-19 21:17


    只是为了熟悉下这种 多脚本先后 执行的方式 呵呵
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2011-5-21 11:59:25 | 只看该作者
    看了一下可能关键的地方就是多个脚本运行时参数化取值的位置是公用的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2011-5-23 18:03:53 | 只看该作者
    本帖最后由 sincool 于 2011-5-23 18:12 编辑

    你可以用一个脚本实现这些操作:注册-成功后是登陆状态-订票-退出,如果要单独测试注册性能的话,就单纯的注册脚本,如果注册字段有限制,加判断

    第2个脚本:
    登陆 -订票-退出
    这里的登陆 使用的用户名在数据库中查找参数化即可


    如果非要用注册刚刚注册的用户来登陆订票,那么就合在一个脚本中,用不同action。注册后既是登陆状态,接着就订票,然后退出,再循环,不过这种方法不可取,一般实际性能测试中,就按第2个脚本那样做就OK了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2011-5-23 18:04:02 | 只看该作者
    如果还不会请私信我
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
     楼主| 发表于 2011-5-26 09:57:27 | 只看该作者
    如果还不会请私信我
    sincool 发表于 2011-5-23 18:04


    现在的级别貌似不能给你发信息 呵呵 我没太明白您说的操作方式
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-16 19:00 , Processed in 0.087162 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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