Loadrunner Vugen参数列表中数据分配方法及更新值的时间9种组合说明及验证
作为刚开始学习Loadrunner的新人,Data Assignment Method以及Update Method在相互组合之后,LR如何进行取值让我很是头疼。
于是花了一个晚上的时间认真学习官方文档并且编写代码来实际验证,最后把个人的学习成果以及理解全部总结在博客里,分享给大家希望能给大家帮助。
第一部分: Data Assignment Method及Update Method根据官方文档作出的总结:
Data Assignment Method(数据分配方法),在Vuser脚本执行过程中选择参数数据的方法,3种方法总结如下表:
数据分配方法 |
官方解释 |
数据分配 |
数据不足时 |
Sequential 顺序 |
Assigns data to a Vuser sequentially. As a running Vuser accesses the data table, it takes the next available row of data. If there are not enough values in the data table, VuGen returns to the first value in the table, continuing in a loop until the end of the test. 按顺序将数据分配给Vuser。当运行中的Vuser访问数据表时,它获取下一行可用的数据。 如果数据表中没有足够的值,VuGen将返回表中的第一个值,继续循环,直到测试结束。 |
顺序分配数据 |
返回第一值,继续循环直到测试结束 |
Random 随机 |
Assigns a random value from the data table every time a new parameter value is requested. 每次请求新参数值时,从数据表中分配一个随机值。 |
随机分配数据 | 随机分配没有数据不足问题 |
Unique 唯 |
Assigns a unique sequential value to the parameter for each Vuser. Ensure that there is enough data in the table for all Vusers and their iterations. 为每个Vuser的参数指定唯一的顺序值。确保表中有足够的数据供所有vuser及其迭代使用。 |
顺序分配数据 |
Specify what to do when there is no more unique data: Abort the Vuser, Continue in a cyclic manner, or Continue with last value. 在选项“在当超出值时”可以选择:中止Vuser,以循环方式继续,或使用最后一个值继续。 |
Update Method(更新值的时间),参数什么时候切换到下一个值的方法,3种方法:
Each iteration:每次迭代时更新。
Each iteration:每次参数出现时更新。
Once:1次值,从头到尾每次迭代都是一个值。
Update Method跟Data Assignment Method相互组合之后就会比较复杂,我们需要做个总结,共9种,参考下表:
第二部分: 在Vugen中用实际代码来验证加深理解
在Vugen中脚本编写如下:
Action()
{
lr_output_message("这是第%s次迭代,第1次取值为%s.",lr_eval_string("{iteration}"),lr_eval_string("{test}"));
lr_output_message("这是第%s次迭代,第2次取值为%s.",lr_eval_string("{iteration}"),lr_eval_string("{test}"));
return ;
}
新建2个参数,参数iteration为目前迭代次数,设置如下:
test为要取的值,File类型,预先创建4个值,从Dave1到Dave4.
打开Run-time Settings,为了查看当数据不足时,每种组合的实际取值行为,所以我们设置Iteration Count为5次,比实际数据多1.
Sequential Method:
1. 数据分配方法=Sequential,更新值的时间=Each iteration:
Vugen中运行脚本结果如下:
Action.c(): 这是第01次迭代,第1次取值为Dave1.
Action.c(): 这是第01次迭代,第2次取值为Dave1.
Action.c(): 这是第02次迭代,第1次取值为Dave2.
Action.c(): 这是第02次迭代,第2次取值为Dave2.
Action.c(): 这是第03次迭代,第1次取值为Dave3.
Action.c(): 这是第03次迭代,第2次取值为Dave3.
Action.c(): 这是第04次迭代,第1次取值为Dave4.
Action.c(): 这是第04次迭代,第2次取值为Dave4.
Action.c(): 这是第05次迭代,第1次取值为Dave1.
Action.c(): 这是第05次迭代,第2次取值为Dave1.
每一次迭代顺序取值,同一次迭代同样的参数值相同,当数据不足时默认返回第一个值。
模拟参数行为,以2个Vuser迭代5次为例,每个Vuser每个迭代数据分配如下图:
所有的Vusers取值一致。
2. 数据分配方法=Sequential,更新值的时间=Each occurrence:
Vugen中运行脚本结果如下:
Action.c(): 这是第01次迭代,第1次取值为Dave1.
Action.c(): 这是第01次迭代,第2次取值为Dave2
Action.c(): 这是第02次迭代,第1次取值为Dave3.
Action.c(): 这是第02次迭代,第2次取值为Dave4.
Action.c(): 这是第03次迭代,第1次取值为Dave1.
Action.c(): 这是第03次迭代,第2次取值为Dave2.
Action.c(): 这是第04次迭代,第1次取值为Dave3.
Action.c(): 这是第04次迭代,第2次取值为Dave4.
Action.c(): 这是第05次迭代,第1次取值为Dave1.
Action.c(): 这是第05次迭代,第2次取值为Dave2.
所有的Vusers取值一致,每一次参数出现时顺序取值,同一次迭代同样的参数值不同,当数据不足时默认返回第一个值。
设置为Each Occurrence时无法进行参数模拟。
3. 数据分配方法=Sequential,更新值的时间=Once:
Vugen中运行脚本结果如下:
Action.c(): 这是第01次迭代,第1次取值为Dave1.
Action.c(): 这是第01次迭代,第2次取值为Dave1.
.......
Action.c(): 这是第05次迭代,第1次取值为Dave1.
Action.c(): 这是第05次迭代,第2次取值为Dave1.
每一次迭代,同一个参数值都是第一个数据行。
模拟参数行为如下图:
所有的Vusers取值一致。
Random Method:
4. 数据分配方法=Random,更新值的时间=Each iteration:
Vugen中运行脚本结果如下:
Action.c(): 这是第01次迭代,第1次取值为Dave5.
Action.c(): 这是第01次迭代,第2次取值为Dave5.
Action.c(): 这是第02次迭代,第1次取值为Dave3.
Action.c(): 这是第02次迭代,第2次取值为Dave3.
Action.c(): 这是第03次迭代,第1次取值为Dave1.
Action.c(): 这是第03次迭代,第2次取值为Dave1.
Action.c(): 这是第04次迭代,第1次取值为Dave2.
Action.c(): 这是第04次迭代,第2次取值为Dave2.
Action.c(): 这是第05次迭代,第1次取值为Dave4.
Action.c(): 这是第05次迭代,第2次取值为Dave4.
每一次迭代随机取值,同一个迭代同样的参数值相同。
模拟参数行为如下图:
所有的Vuser取值都是随机,值不一定相同。
5. 数据分配方法=Random,更新值的时间=Each Occurrence:
Vugen中运行脚本结果如下:
Action.c(): 这是第01次迭代,第1次取值为Dave2.
Action.c(): 这是第01次迭代,第2次取值为Dave1.
Action.c(): 这是第02次迭代,第1次取值为Dave3.
Action.c(): 这是第02次迭代,第2次取值为Dave1.
Action.c(): 这是第03次迭代,第1次取值为Dave3.
Action.c(): 这是第03次迭代,第2次取值为Dave1.
Action.c(): 这是第04次迭代,第1次取值为Dave1.
Action.c(): 这是第04次迭代,第2次取值为Dave4.
Action.c(): 这是第05次迭代,第1次取值为Dave4.
Action.c(): 这是第05次迭代,第2次取值为Dave4.
每个Vuser每一次参数出现时随机取值,同一个迭代同样的参数值不一定相同。
6. 数据分配方法=Random,更新值的时间=Once:
随机取一个值,每一次迭代值相同,同一个迭代同样的参数值相同.
参数模拟如下图,每个Vuser取值随机,值不一定相同。
Unique Method:
在更新值得时间设置成Each iteration跟Each Occurrence时可以设置数据不足时的行为。
当超出值=Abort Vuser:终止Vuser运行
当超出值=Continue in a cyclic manner:从第一个值继续循环
当超出值=Continue with last value:以最后一个值继续
7. 数据分配方法=Unique,更新值的时间=Each Iteration:
当超出值=Continue with last value:
Vugen中运行脚本结果如下:
Action.c(): 这是第01次迭代,第1次取值为Dave1.
Action.c(): 这是第01次迭代,第2次取值为Dave1.
Action.c(): 这是第02次迭代,第1次取值为Dave2.
Action.c(): 这是第02次迭代,第2次取值为Dave2.
Action.c(): 这是第03次迭代,第1次取值为Dave3.
Action.c(): 这是第03次迭代,第2次取值为Dave3.
Action.c(): 这是第04次迭代,第1次取值为Dave4.
Action.c(): 这是第04次迭代,第2次取值为Dave4.
Action.c(): 这是第05次迭代,第1次取值为Dave4.
Action.c(): 这是第05次迭代,第2次取值为Dave4.
参数模拟如下图,因数据不足,Vuser1迭代5取最后一次迭代值,跟我们上述配置一致,因数据不足Vuser2分配不到数据。
如果我们把Vuser数设置成2个,迭代次数设置成3,参数模拟分配图如下:
用户1分配数据为Dave1,Dave2,Dave3;
用户2分配数据从Dave4开始,因为我们总共只有4个数据,设置数据不足时以最后一个值继续,所以用户2分配到的数据都是Dave4.
与设置“数据分配方法=Sequential,更新值的时间=Each iteration”相比较,Sequential方法设置中所有的Vuser值同步,取在相同位置,而Unique方法每个Vuser取值在唯一位置,也就是说相同的迭代每个Vuser取值不一定相同
8. 数据分配方法=Unique,更新值的时间=Each Occurrence:
当超出值=Continue in a cyclic manner:
Action.c(3): 这是第01次迭代,第1次取值为Dave1.
Action.c(4): 这是第01次迭代,第2次取值为Dave2
Action.c(3): 这是第02次迭代,第1次取值为Dave3.
Action.c(4): 这是第02次迭代,第2次取值为Dave4.
Action.c(3): 这是第03次迭代,第1次取值为Dave1.
Action.c(4): 这是第03次迭代,第2次取值为Dave2.
Action.c(3): 这是第04次迭代,第1次取值为Dave3.
Action.c(4): 这是第04次迭代,第2次取值为Dave4.
Action.c(3): 这是第05次迭代,第1次取值为Dave1.
Action.c(4): 这是第05次迭代,第2次取值为Dave2.
当多个Vuser时需要设置为每个Vuser分配的参数值,如下图,设置值为3:
分配方法是Vuser1 先按顺序分配3个数据,Dave1、Dave2、Dave3;Vuser2再按照顺序分配3个数据,如数据不足时根据“当超出值时”的设置相关。
9. 数据分配方法=Unique,更新值的时间=Once:
在VuGen运行脚本结果每次迭代Test参数每次取值都为Dave1.
在参数模拟2个Vuser,5次迭代,Vuser1先取第一位置值为Dave1,之后5次迭代Test值都是Dave1.
之后Vuser2取下一唯一位置值为Dave2,之后5次迭代Test值都是Dave2.
Loadrunner Vugen参数列表中数据分配方法及更新值的时间9种组合说明及验证的更多相关文章
- loadrunner参数化数据分配方法
数据分配方法: 在“Select next row“列表中选择一个数据分配方法,以指示在Vuser脚本执行期间如何从参数文件中取得数据.选项包括”Sequential“.“Random”.“Uniqu ...
- 使用Excel表格的记录单功能轻松处理工作表中数据的方法
使用Excel表格的记录单功能轻松处理工作表中数据的方法 记录单是将一条记录分别存储在同一行的几个单元格中,在同一列中分别存储所有记录的相似信息段.使用记录单功能可以轻松地对工作表中的数据进行查看.查 ...
- 在Python的列表中利用remove()方法删除元素的教程
在Python的列表中利用remove()方法删除元素的教程 这篇文章主要介绍了在Python的列表中利用remove()方法删除元素的教程,是Python入门中的基础知识,注意其和pop()方法的区 ...
- PHP函数可变参数列表的具体实现方法介绍
PHP函数可变参数列表可以通过_get_args().func_num_args().func_get_arg()这三个函数来实现.我们下面就对此做了详细的介绍. AD:2014WOT全球软件技术峰会 ...
- LR 取到怎么样才能得到参数列表中的每一个值
char *m="e"; lr_save_string("helloworld","p4"); lr_eval_string("{ ...
- day2 列表中常用的方法
列表中有很多方法,下面来看看常用的方法,我们知道,字符串是以字符列表形式存储的.因此上面学习的字符串中的很多方法在列表中也有. 1.extend() extend()列表的扩展,把两个列表进行 ...
- python删除列表中元素的方法
删除列表中元素的三种方法-remove.pop.del 1 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除 2 举例说明: 3 >>> str=[1,2,3,4, ...
- oracle 查询表中数据行(row)上最后的DML时间
在这介绍Oracle 10G开始提供的一个伪列ORA_ROWSCN,它又分为两种模式一种是基于block这是默认的模式(块级跟踪):还有一种是基于row上,这种模式只能在建里表时指定ROWDEPEND ...
- java中Arrays类中,binarySearch()方法的返回值问题
最近在复习Java知识,发现果然不经常使用忘得非常快... 看到binarySearch()方法的使用时,发现书上有点错误,于是就自己上机实验了一下,最后总结一下该方法的返回值. 总结:binaryS ...
随机推荐
- ASP.NET MVC中,动态处理页面静态化 【转载】
首先解释一下什么是动态处理页面静态化 对于需要静态化的页面,第一次访问某个Action时,会先执行Action,并在页面渲染后向Response和服务器中网站的目录下都写入需要返回的html,而第二次 ...
- Django学习笔记之视图高级-类视图
类视图 在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图.使用类视图可以使用类的一些特性,比如继承等. View django.views.generic.base.View是主 ...
- webpack打包vue -->简易讲解
### 1. 测试环境: 推荐这篇文章:讲的很细致 https://www.cnblogs.com/lhweb15/p/5660609.html 1. webpack.config.js自行安装 { ...
- C# .NET 按ASCII 从小到大排序
//C#的SortedDictionary<string,string>集合对key不是按照ascii码排序的因为他没有区分大小写,这就是个差别. 如果参数名中间有大写,小写,数字,Sor ...
- Tomcat 多个虚拟主机配置方法
conf/server.xml 移除注释内容后,类似内容如下: <Server> …… …… …… <Service name="Catalina"> &l ...
- 工控随笔_06_西门子_Step7归档项目无法备份的解决方法
在一次备份Step7项目时,突然发现无法进行备份而是报错,具体的报错内容如下所示: 图 step7 归档程序时报pkzipc.exe 应用程序错误 内存不能为"read" 一.s ...
- ORC 文件存储格式
1.orc列式存储概念 a)列式存储:orc并不是纯粹的列式存储,也是先基于行对数据表进行分组(行组),然后对行组进行列式存储. b)查询数据的时候不需要扫描全部数据(磁盘IO),只需查询指定列即可. ...
- URLConnection(互联网)
一.urlconnection连接Servlet 1:> URL请求的类别: 分为二类,GET与POST请求.二者的区别在于: ...
- 20175311 2018-2019-2 《Java程序设计》第7周学习总结
20175311 2018-2019-2 <Java程序设计>第7周学习总结 教材学习内容总结 这一周我主要学习了第八章的内容-常用实用类String类 构造String对象 字符串的并置 ...
- [UE4]在Character中使用Add Spline Mesh Component,关于Transform.Mobility
一.因为Character是可移动的,因此也需要把Add Spline Mesh Component的Transform.Mobility设置为Movable 二.不然就会得到类似这样的提示.错误信息 ...