Controller中的参数—性能测试进阶指南 LoadRunner 11实战(第二版)

发表于:2015-1-14 11:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈霁、李锋、王臣钧    来源:51Testing软件测试网原创

(51Testing软件测试网获得作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。)
  最后来看一下Unique的取值方式,设置When out of values为Continue with last value。当使用Unique取值的时候,在Parameter List里面会有一个新的选项Allocate Vuser values in the Controller可以使用,如图A.93所示。
  
图A.93  Unique下场景用户分配策略
  在Each iteration中可以选择自动分配也可选择手动分配,而在Each occurrence中只能使用手动分配了。
  先来看看手动分配和自动分配有什么不同。在Unique这种选项下,虚拟用户之间的取值是不同的,并且它遵守唯一性取值,如果用户分配不到该值,那么就提示错误。
  在Each iteration下,VuGen可以知道每个用户运行该脚本需要读取到多少条记录,先来看看使用自动分配Block Size的结果(Run x2),如表A.9所示。
  表A.9  场景下Unique取值基于自动分配Block Size
  
  场景运行后会看到有3个用户为PASS状态,两个用户为FAIL状态,查看日志,可以得到以上结果。那么自动分配做了什么呢?首先自动分配检查一个脚本有多少次迭代,然后让用户根据迭代次数分配该迭代大小的数据块,于是出现了如表A.10所示的这种情况。
  表A.10  自动分配Block Size原理
  如果现在把分配策略转换成手动分配,并且设置Allocate[]values for each Vuser的值为3,那么结果如表A.11所示。
  表A.11  手动分配Block Size为3的结果
  
  数据分配表根据手工策略变为如表A.12所示的情况。
  表A.12  手动分配Block Size为3原理
  根据Block Size,Vuser1被分配到了甲、乙、丙,但是只取值了甲、乙,而Vuser2被分配到了丁、戊,剩下的3个用户都没有对应的取值,所以出错。这就是手动分配和自动分配的区别。为了保证脚本参数化使用Unique取值方式,在场景中运行,用户全部PASS,需要确保以下的公式成立:
  Param参数记录条数≥迭代次数×Vuser数目(在自动分配Unique数据块策略下)
  Param参数记录条数≥手动分配块的数目×Vuser数目(在手动分配Unique数据块策略下)
  以上公式只能保证脚本只运行一次的情况下不出错,而在脚本运行多次的情况下,需要记录大量的参数来确保脚本在Unique模式下正确运行。
  当使用Each occurrence取值时,VuGen禁止使用自动分配参数的策略,必须要手动分配,如图A.94所示。
  
图A.94  Unique下每次取值更新时必须使用手工设置场景分配用户
  手动分配的策略在上面有所介绍,用户只需自己指定分配的数据块大小即可。
  当使用Once时,Allocate Vuser values in the Controller选项将不可用,Controller会自动给每一个用户分配一个唯一的值。如果值不够,那么剩余的用户将会进入Error状态。
  Unique提供了一个非常有趣的环境,每个用户之间的数据是唯一的。如果需要在长时间的场景下运行,那么对参数记录个数有相当高的要求,需要构建大量的参数记录。另一方面由于具有手动分配记录条数的策略,所以也可以通过它来实现以下有趣的业务。
  例如:有10万条记录,其中包括1万个人最常用的10个电话号码,这些电话号码都是按照用户名的顺序依次排列的,如何模拟1万个用户同时打电话的场景呢?
  这时可以通过手动分配10个记录给每个用户的方式将10万条参数记录分配给1万个虚拟用户来实现该测试。
  在Unique模式下,When out of values选项为Continue in a cyclic manner时,循环范围是受到记录分配的策略影响的。例如,Vuser2被分配到"丁|戊"两个值,那么当出现多次调用超出记录范围时,结果是"丁|戊|丁"。
  总结一下参数在场景下取值的对应关系,如表A.13所示。
  表A.13  场景下取值的各种情况
  
  A.6.5  同行取值(Same line as)
  接着来看最后一种Select next row记录选择方式Same line as,这个选项只有当参数多于一个时才会出现,其作用是根据某一个参数的行号取同一行。那么如何将多个参数存放到一个参数文件中去呢?新建两个参数Param1和Param2。分别打开Param1和Param2的文件指向,将这两个参数的文件都指向paramzhongwen.dat。然后设置Param1的Select column为第一列,Param2为第二列,并且设置Param1的取值方法为Random,Param2的取值方法为Same line as Param1。
  在这种设置下,当Param1随机从列1中选择一个值,Param2就会取得与该值同行的列2的记录。对于模拟随机用户登录的脚本,就需要使用Same line as确保随机的用户名和对应的密码配对。
本文选自《性能测试进阶指南—LoadRunner 11实战(第二版)》,本站经作者的授权。
版权声明:51Testing软件测试网获作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号