LoadRunner参数化---数据文件属性 之 数据分配方法和数据更新方法
本人初学LR的时候对这块挺困惑的,当时收集了一些相关资料,现整理了一下发出来,相信对刚刚接触到LR的朋友有点作用。
数据分配方法(Select next row)
1>Sequential:该方法顺序地向Vuser分配参数值。当正在运行的Vuser访问数据表的时候,它将会提取下一个可用的数据行。也就是说,按着顺序一个一个取,取了第一行再取第二行,取了第二行取地三行,一次类推。如果在数据表中没有足够的值,则VuGen返回到表中的第一个值,循环直到测试结束。
2>Random:该方法为每个Vuser分配一个数据表中的随机值。比如当前数据表中有100行数据,那么随机数就从1~100之间任取一个,作为行号,去取相应行的参数值数据。
3>Unique:该方法为每一个Vuser的参数分配一个唯一的顺序值。
在这种情况下,必须保证表中的数据对所有的Vuser和它们的迭代是充足的。如果拥有20个Vuser,并且要运行5次迭代,则表中必须至少包含100个唯一值。
超出范围之后可以在When out of values中设置
Abort Vuser-中止
Continue in a cyclic manner-继续循环取值
Continue with last value-取最后一个值
4>Same Line As <parameter>:该方法与以前定义过的参数中同样的一行分配数据,必须制定包含有该数据的列。下拉列表中会出现定义过的所有参数列表。至少其中的一个参数必须是Sequential、Random或Unique
如果数据表中有2列,2个参数定义在列表中,id和password,如下:
id password
----- ---------
admin admin888
guest guest888
...
对于参数id,可以制定Vuser使用Random,而参数password就可以指定方法“Same Line as id”,这样一旦id "admin"被使用,那么,password "admin888"就同时被使用。
上面的Select next row指的是怎么取新值,这里的Update value on指的是什么时候取新值
数据更新方式(Update value on)
1>Each iteration:该方法指示Vuser在每次脚本迭代时使用新值。如果一个参数在脚本中出现了若干次,则Vuser为整个迭代中该参数的所有出现使用同一个值(在同一个迭代中,无论读几次参数,获得的都是同一个参数值)。
2>Each occurrence:该方法指示Vuser在每次参数出现时使用新值(在同一个迭代中,读一次参数,就要取其新值,新值从哪来,由Select next row来规定)。
3>Once:该方法指示Vuser在所有的循环中都使用同一个值(只取一次)
参考例子:
假设文件中包括以下值:a, b, c, d, e, f …..
脚本中有两个参数取文件中的值,设置三个虚拟用户,每个用户迭代4次
如果选择顺序+迭代
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
aa |
bb |
cc |
dd |
User2 |
aa |
bb |
cc |
dd |
User3 |
aa |
bb |
cc |
dd |
如果选择随机+迭代
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
bb (都为随机数,不一定取值是这个顺序) |
ff |
dd |
cc |
User2 |
cc |
bb |
ee |
aa |
User3 |
aa |
ee |
dd |
bb |
如果选择唯一+迭代
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
aa |
dd |
… |
… |
User2 |
bb |
ee |
… |
… |
User3 |
cc |
ff |
.. |
… |
如果选择顺序+遇到
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
ab |
cd |
ef |
gh |
User2 |
ab |
cd |
ef |
gh |
User3 |
ab |
cd |
ef |
gh |
如果选择随机+遇到
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
ae (都为随机数,不一定取值是这个顺序) |
bf |
ed |
bh |
User2 |
cb |
… |
… |
… |
User3 |
ab |
… |
… |
… |
如果选择唯一+遇到
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
ad |
… |
… |
… |
User2 |
be |
… |
… |
… |
User3 |
cf |
… |
… |
… |
如果选择顺序+一次
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
aa |
aa |
aa |
aa |
User2 |
bb |
bb |
bb |
bb |
User3 |
cc |
cc |
cc |
cc |
如果选择唯一+一次
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
aa |
aa |
aa |
aa |
User2 |
bb |
bb |
bb |
bb |
User3 |
cc |
cc |
cc |
cc |
如果选择随机+一次
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
cc |
cc |
cc |
cc |
User2 |
ee |
ee |
ee |
ee |
User3 |
bb |
bb |
bb |
bb |
数据量:
如果选择唯一+迭代= m*n (m是虚拟用户数,n是迭代次数)
如果选择唯一+遇到= m*n *i(m是虚拟用户数,n是迭代次数,i是在脚本中出现该参数的次数)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗