暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

LoadRunner参数化详解(超详细)

全栈测试笔记 2019-11-01
1766




参数化的定义及使用场景


定义:将脚本中的特定值用变量替代,该变量值是变化的(注意:这个值是我们自己创建的,不是服务器返回的)。 
参数化的原因,并不是网上说的真实模拟不同用户,真实反应服务器性能,而是:
  数据唯一性(比如注册名不能一样)
  避免数据库查询缓存
思考:模拟1000个用户登录论坛,1000个相同的用户名相同的密码与1000个不同的用户名不同的密码的区别? 
 

File参数类型--文本


File参数类型--文本参数显示问题,参考:
https://www.cnblogs.com/uncleyong/p/11725392.html
进行参数化前,我们要先把需要用到的参数设计好,这里以创建“File类型参数”为例
点击下面的图标
点击左下角【New】
默认是File类型
点击Create Table,默认生成一个NewParam.dat文件
单击
编辑数据文件,第一行默认名称是NewParam,重命名为具有含义的字段名,因为是用户名,这里就改为name,最后一个参数下面最多只能一个空行
保存后
修改参数名称为name
修改完成,注意:下面两个name含义不一样,第一个是在脚本中引用的变量名,第二个是为了方便我们识别列,取的列名
 

参数化替换举例


参数设计好后,我们选择要替换的常量,然后右键选择使用已有的参数替换
对loadrunner自带的订票网站登录的用户名做参数化,上面已经将参数name创建好了

参数值更新方式(3x3)


参数更新方式总共3X3=9种方式

 下面验证这9种方式  
3个参数值(a,b,c),迭代4次,看是如何取值的。
 
测试脚本为: 

日志级别设置为标准
另外,运行的日志会存放到output.txt文件中,这个文件放到脚本目录下

每次迭代

一次迭代过程中,相同参数值不发生变化,即只取一次值。每次迭代,是将所有的Action都执行。
每次迭代--顺序
从头开始按顺序取值,当值不够用时又从头开始。
 
 
每次迭代--随机
每次迭代--唯一
和每次迭代-顺序类似,从头开始按顺序取值,当值不够用时按照设置的方式处理。
此时可以自动分配,也可以自定义分配value数,(“每次发生--唯一”只能自定义分配value数)
当值不够用时,有3种情况,默认情况下,使用最后一个值继续;停止脚本;从头再来(类似每次迭代,顺序取值) 
Error: Parameter 'paramtest': No more unique values for this parameter in table 'paramtest.dat' [unique range is 1-3].The parameter continues with last value of the range according to "When Out Of Values" policy.
默认自动分配
自定义分配,
运行结果依旧和上图一样,因为在vuser中,就只有一个vuser,单独一个用户分享所有参数值。

每次发生

每次发生,相同参数取不同值,也可以取相同值<随机或者唯一不够时>
每次发生--顺序
和每次迭代-顺序类似,从头开始按顺序取值,当值不够用时又从头开始。
每次发生--随机
不一定从头开始按顺序取值,且值也可能相同。(无论参数多少)
每次发生--唯一
和每次迭代-顺序、每次迭代-唯一类似,从头开始按顺序取值,当值不够用时按照设置的方式处理。
此时自定义分配value数必填,(“每次迭代-唯一”可以自动分配,也可以自定义分配value数) 
填入上面框中的数字无论为多少(1至X),在vuser中,运行结果都一样。(在虚拟用户脚本中只有一个用户,无论Allocate处填多少都无用,单独一个用户分享所有参数值)
完整Error信息:Error: Parameter 'paramtest': No more unique values for this parameter in table 'paramtest.dat' [unique range is 1-3].The parameter continues with last value of the range according to "When Out Of Values" policy.
 
填1或者任意值,在vug中,都是如下结果:

一次

只取一个值。
一次--顺序
只取第一个值。
始终第一个值
一次--随机
随机取一个值。
一次--唯一
只取第一个值。
(下面这种情况是冲突的,Unique是每个数据唯一,只使用一次,Once是只更新一次,但是只认Once,如果只有2个数据,迭代>2次,也不会报错,全部是用第一个数据。)
 
始终第一个值

并发时,参数值更新方式(3x3)


【3个值(a,b,c),脚本中参数出现3次,选择迭代4次,5个vuser】

场景中,先设置一直发消息:
可以查看每个vuser的log:

每次迭代

每次迭代--顺序
Vuser1:aaa→bbb→ccc→aaa
Vuser2:aaa→bbb→ccc→aaa
Vuser3:aaa→bbb→ccc→aaa
Vuser4:aaa→bbb→ccc→aaa
Vuser5:aaa→bbb→ccc→aaa
每次迭代--随机
Vuser1:aaa→ccc→aaa→bbb
Vuser2:aaa→bbb→aaa→aaa
Vuser3:aaa→aaa→aaa→aaa
Vuser4:ccc→aaa→aaa→ccc
Vuser5:ccc→aaa→ccc→bbb
每次迭代--唯一
系统自动分配,三个参数,系统都分配给了第一个vuser,其余的vuser无参数而失败,所以成功1个,失败4个,成功的一个还报警,第四次迭代因为没有值而用的最后一个值;
且C:\Users\wgy\AppData\Local\Temp\res3\log中只生成了一个log文件;
Insufficient records for parameter 'paramtest' in table to provide the Vuser with unique data
 
Error: Parameter 'paramtest': No more unique values for this parameter in table 'paramtest.dat' [unique range is 1-3].The parameter continues with last value of the range according to "When Out Of Values" policy.
Vuser1:aaa→bbb→ccc→ccc
手动分配,
如果设置为2,则生成2个log文件;
 
Vuser1:aaa→bbb→bbb→bbb
Vuser2:ccc→ccc→ccc→ccc

每次发生

每次发生--顺序
Vuser1:abc→abc→abc→abc
Vuser2:abc→abc→abc→abc
Vuser3:abc→abc→abc→abc
Vuser4:abc→abc→abc→abc
Vuser5:abc→abc→abc→abc
每次发生--随机
Vuser1:abc→cbc→cca→cba
Vuser2:bac→bbb→bca→abb
Vuser3:cbb→bba→abc→aab
Vuser4:abb→ccb→cca→bcc
Vuser5:cac→bbc→abc→cbc
每次发生--唯一 
每个用户分1个值,分给了3个用户;2个用户无值; 
Vuser1:aaa→aaa→aaa→aaa
Vuser2:bbb→bbb→bbb→bbb
Vuser3:ccc→ccc→ccc→ccc
每个用户分2个值,分给了2个用户;3个用户无值; 
Vuser1:abb→bbb→bbb→bbb
Vuser2:ccc→ccc→ccc→ccc


一次

一次--顺序
全取值a
Vuser1:aaa→aaa→aaa→aaa
Vuser2:aaa→aaa→aaa→aaa
Vuser3:aaa→aaa→aaa→aaa
Vuser4:aaa→aaa→aaa→aaa
Vuser5:aaa→aaa→aaa→aaa
一次--随机
都随机只取一个值 
Vuser1:bbb→bbb→bbb→bbb
Vuser2:bbb→bbb→bbb→bbb
Vuser3:ccc→ccc→ccc→ccc
Vuser4:aaa→aaa→aaa→aaa
Vuser5:ccc→ccc→ccc→ccc
一次--唯一 
都随机只取一个值; 
Vuser1:aaa→aaa→aaa→aaa
Vuser2:bbb→bbb→bbb→bbb
Vuser3:ccc→ccc→ccc→ccc

File参数类型--Mysql数据向导

点击【Data Wizard】
点击【确定】
 如图选择,点击【下一步】

File参数类型--SQL Server数据向导

点击【Data Wizard】 
点击【确定】 
点击【Create】
从下拉列表选择一个数据库连接
更改默认数据库为需要用的数据库
点击测试数据源

File参数类型--Oracle数据向导

写不下了,略。

Unique number类型参数

用于构造不同的用户数据
造1万个数据,如手机号码
13588880000--13588889999
常量跟上一个unique number类型变量。
不足位数,左侧补零

Date/Time类型参数

 
 如有疑问或者建议,请关注联系作者 

声明:封面或正文部分图片来源于网络,如有侵权,请联系删除。

END

抛砖引玉,欢迎交流;

水平有限,难免有错,欢迎斧正。

欢迎长按下图联系作者

欢迎长按下图关注全栈测试笔记


推荐阅读

点击阅读☞录毛线脚本,带你直接手写

点击阅读☞LoadRunner原理、使用流程及脚本实战

点击阅读☞LoadRunner核心功能:关联

点击阅读☞测试必备:jmeter测试http协议接口的各种传参方式

点击阅读☞如何面试性能测试

点击阅读☞面试题(造火箭必备技能):请举例一个最有成就感的性能bug

点击阅读☞性能测试常用术语解释

点击阅读☞测试技术提升建议



未开启留言功能

 如有疑问或者建议,请关注联系作者 


文章转载自全栈测试笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论