51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1759|回复: 5
打印 上一主题 下一主题

[求助] 关于参数化

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-1-20 16:32:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bb64844866 于 2014-1-20 16:57 编辑

问一个比较常见的问题:
现在录制一个脚本后,对其中某一项做了参数化,例如对‘产品编号’这个数据项定义了参数化,然后打开参数列表编辑后用记事本给了5个备选值,比如‘0001,0002,0003,0004,0005’。取参数的方法(‘选择下一行’)那一项我设置的是‘顺序’,之后保存脚本并进行单用户调试且通过。
接下来如果我运行时候加入了50个虚拟用户并发运行该脚本,场景是每隔30秒启动一个虚拟用户。那么我的问题是,当运行后虚拟用户数超过10个以后或者说50个用户都启动后,每个虚拟用户肯定是按参数列表里的顺序去拿里面的‘产品编号’这个数据吗?如果是那样的话,可以理解为所有虚拟用户拿到的都是第一个‘产品编号’吗?
现在这个脚本我加虚拟用户运行后,我到数据库里查数据(产品编号)发现并不是像想象的这样,不知道为什么。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2014-1-21 10:46:35 | 只看该作者
补充下:
参数列表里面有5个值:‘0001,0002,0003,0004,0005’,而脚本里只有一个处调用了此参数。参数列表里设置的是顺序选择,起始位置是第一行参数,也就是'0001', 那么当多个用户并发运行脚本时候,有没有可能其它用户拿的是第二个或第三个参数?这是为什么?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2014-1-21 14:14:27 | 只看该作者
首先,你没告诉我你的更新取值方式是每次迭代还是每次出现还是仅一次
假设你是每次迭代,那么第一次迭代的时候每个用户都会取第一条记录,然后第2次迭代取第2次,以此类推
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2014-2-10 16:48:56 | 只看该作者
如果取参数的方法(‘选择下一行’)那一项设置的是‘顺序’, 那还要看Update value on(更新时的值)
取的是什么, 如果取的是每次迭代(Each iteration), 那么取值就是“ 0001,0002,0003,0004,0005,0001,0002,0003,0004,0005……” 这样。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2014-2-10 17:10:31 | 只看该作者
假设存在:
数据:A、B、C
虚拟用户:Vuser1、Vuser2、Vuser3
脚本中参数出现三次,脚本迭代三次

怎样取下一行数据?
Sequential:顺序,所有虚拟用户按照顺序读取数据表
Random:随机,所有虚拟用户随机形式读取数据表
Unique:唯一,所有虚拟用户每次各取一值(不重复)

什么时候访问数据表完成数据更新?
Each iteration:每次迭代以后
Each occurrence:每次出现参数
Once:每出现一个虚拟用户


实例:
顺序
Sequential + Each iteration
第一次迭代 无论参数任何时候出现 Vuser1、Vuser2、Vuser3 取A
第二次迭代 无论参数任何时候出现 Vuser1、Vuser2、Vuser3 取B
第三次迭代 无论参数任何时候出现Vuser1、Vuser2、Vuser3 取C

Sequential + Each occurrence
第N次迭代 参数第一次出现 Vuser1、Vuser2、Vuser3 取A
第N次迭代 参数第二次出现 Vuser1、Vuser2、Vuser3 取B
第N次迭代 参数第三次出现 Vuser1、Vuser2、Vuser3 取C

Sequential + Once
第N次迭代 无论参数任何时候出现 Vuser1取A Vuser2取B Vuser3取C

随机
Random + Each iteration
第N次迭代 无论遇到该参数多少次 Vuser1都只取A,或者B,又或者C,本次迭代不再更新
第N次迭代 无论遇到该参数多少次 Vuser2都只取A,或者B,又或者C,本次迭代不再更新
第N次迭代 无论遇到该参数多少次 Vuser3都只取A,或者B,又或者C,本次迭代不再更新
在N+1次迭代,每个Vuser重新随机抽取数据


Random + Each occurrence
第N次迭代 第一次遇到该参数 Vuser1、Vuser2、Vuser3在A、B、C中随机抽取一个
第N次迭代 第二次遇到该参数 Vuser1、Vuser2、Vuser3重新在A、B、C中随机抽取一个
第N次迭代 第三次遇到该参数 Vuser1、Vuser2、Vuser3重新在A、B、C中随机抽取一个
在N+1次迭代,每个Vuser继续保持每遇到一次参数就重新抽取一次数据

Random + Once
第N次迭代 无论遇到该参数多少次 Vuser1都只取A,或者B,又或者C
第N次迭代 无论遇到该参数多少次 Vuser2都只取A,或者B,又或者C
第N次迭代 无论遇到该参数多少次 Vuser3都只取A,或者B,又或者C
在N+1次迭代,每个Vuser不会重新抽取数据

唯一
注意:使用该Unique类型必须注意数据表有足够多的数。
比如Controller 中设定20 个虚拟用户进行5 次循环,那么编号为1 的虚拟用户取前5个数,编号为2 的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据,否则Controller 运行过程中会返回一个错误。
因此以下例子在数据表中加入数据D、E、F、G、H、I。

Unique + Each iteration
第一次迭代 无论参数出现多少次 Vuser1取A Vuser2取D Vuser3取G
第二次迭代 无论参数出现多少次 Vuser1取B Vuser2取E Vuser3取H
第三次迭代 无论参数出现多少次 Vuser1取C Vuser2取F Vuser3取I

Unique + Each occurrence
第一次迭代 第一次出现该参数 Vuser1取A Vuser2取D Vuser3取G
第一次迭代 第二次出现该参数 Vuser1取B Vuser2取E Vuser3取H
第一次迭代 第三次出现该参数 Vuser1取C Vuser2取F Vuser3取I

Unique + Once
无论进行多少次迭代 无论参数任何时候出现 Vuser1取A Vuser2取B Vuser3取C
数据D、E、F、G、H、I不取
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2014-2-10 17:11:20 | 只看该作者
希望你理解上面的参数化设置!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-25 21:52 , Processed in 0.085704 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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