|
2#
楼主 |
发表于 2018-5-11 16:37:51
|
只看该作者
使用鼠标右键中的替换方式(具体见2.1.2.2节)或手工替换成{FRM_CD}的方式对所有的55010101651000000
0的值进行替换。其他参数化对象也按这种方式进行参数化。
注意:
由于不同的action中都会出现550101016510000000这个烟农值,所以,我们要检查所有的action并进行替换,
避免遗漏。
注意:
在参数化对象中,我们往往会发现我们需要替换的数据值比较相似,比如55010101,5501010165100000000,
55010100000000000001,当在同一个脚本中这三个值都出现的时候,我们在进行替换的时候首先找长度最长的
进行替换5501010165100000000,然后再逐长度递减替换,这样做的目的是为了避免我们在替换55010101的时
候,把本该是别的参数化对象的值替换成了类似{ORG_CD}65100000000,这样,在替换{FRM_CD}值的时候,
我们就惊奇的发现,整个脚本中不存在可替换的对象了。
1.1.2.1.2 方法二
录入脚本只代表你使用的一串相关数据所做的操作,是否需要参数化从脚本中无法直观的看出,因此,可以采用
同一模块操作录制两套脚本进行对比的方法分析需要进行参数化的对象。
那如何录制两套可以进行对比的脚本呢?我们拿具体的例子来进行分析:
这里是物资供应模块,两套脚本录制使用相同的登录帐号进入到模块中,接下来,我们分析下这个模块的要素:
1) 需要录入种植主体;
2) 需要选择物资。
开始结合实际业务进行分析,提出疑问:在实际操作中,录入的种植主体是否相同?选择的供应方案是否一致?
物资是不是也是五花八门?答案是肯定的,可以不一样。
好吧,那这个时候,录制脚本我们采用不同的种植主体,不同的物资进行录制,录制完成后保存下来进行对比:
1) 首先我们根据录制脚本中的注释(在录制过程中,我在准备录制供应单基本信息、准备录制供应方案信息和
准备录制物资供应信息前都加了注释来说明注释后的脚本请求是属于哪个信息栏的)
这样,我们具体分析下每个信息栏的请求,首先分析“供应单基本信息录入”,我们会发现两个不同种植主体编
号的录入结果不一样
因此,我们可以确定,这是一个可以进行参数化的对象。
2)接下来,我们根据这种思路,在对比分析不同的注释下提交的请求脚本,我们发现,在物资供应信息栏的相
关代码下,物资种类的ID和物资规格的ID也不相同
我们可以确定,还有物资种类和规格需要进行参数化。
3)查询同一个脚本中是否还存在与发现的参数化对象相同的数值(如种植主体的CD值“5501010165100000”
在一个录制脚本中会多次出现),统一将这些脚本中的value值归为一个FRM_CD的参数化对象并全部进行替换。
1.1.2.2 参数化方法
1、方法一:
选中要参数化的数值,右键---【Replace with a new parameter】
2、方法二:
菜单【insert】----【new Parameter…】
1.1.2.3 添加参数化数据的几种方式
1.1.2.3.1 方式一:通过Create Table****编辑数据
点击Create Table 会出现表格,在表格,再次点击Edit with Notepad ,然后会打开一个记事本,我们可以对记事
本进行添加数据
1.1.2.3.2 方式二:通过dat文件添加数据
参数化类型选择“file”
点击File输入框后面的“Browse..”按钮,找到本地的dat数据文件,进行添加就可以了。
需要注意的是,文件里面的数据不要乱写,每条数据一行,不然会读取有误。
1.1.2.3.3 方式三:****其他类型设置
如果我们要参数化的不是一个文件,比如是特定的日期时间,可以从Parameter type 列表中进行选择
这里可以设置日期时间格式,循环迭代方式,不过除了file类型外,其他用的不多。
1.1.2.4 参数化之间的关联
假设我们已经对用户名进行了参数化,或对密码进行了参数化,这样是不是脚本就能正常跑了,不好说。因为用
户名和密码不是一一对应关系,每次运行脚本时取的用户名和密码没有对应上的话肯定就会出问题。
假设,我们已经对用户名已经进行了参数化,参数名为【username】,下面设置密码参数化与用户名关联。
点击“Properites…”会打开编辑用户名参数化窗口。File列表框中,刚才保存用户名信息的文件"username.dat"。
点击“Add Column…”,添加新的一列信息,用于放置密码。
点击“Edit with Notepad”再次编辑参数化数据文件,使用户名密码建立一一对应关系。
完成之后,我们已经成功对用户名和密码进行了参数化,并且让用户名和密码形成了对应关系。
1.1.2.5 参数化列表说明
常用类型:
n File: 来自某文件,该文件需要符合一定格式
n Date/Time: 日期时间,可定制格式。
n Random Number:随机值
n Unique Number: 唯一值,设置起始值,范围,注意使用次数不要超过范围
Ø Select Next Row
Sequential/Random/Unique/Same Line as
按顺序/随机/唯一/和XX同一行取值
Ø Update value on
Each Iteration/Each occourrence/Once
每次迭代更新/每次碰到更新/只取一次
Ø When Out Of Value
ü 当Select Next Row=Unique时可设置
Abort Vuser/Continue in a cyclic manner/Continue with last value
退出用户/循环使用/使用最后那个值继续
Ø Allocate Vuser values in the controller
ü 当Select Next Row=Unique时可设置
Automatically allocate block size
自动为每个用户分配参数值数量
Allocate XX values for each vuser
固定为每个用户分配多少值
1.1.2.6 数据分配与更新方式组合**** ****参数化举例
参数化过程比较简单,参数化时复杂的是对参数属性的设置。主要是以下两个属性的组合。
Ø 数据分配(select next row )有三个选项: Sequential(顺序读取)、Random(随机读取)、Unique (唯一)
Ø 数据更新(update the value)也有三个选项: Each Occurrence(每次遇到 )、 Each iteration(每次迭代 )
、 Once(一直 )
这两个属性可以有九种组合方式,每种方式都不一样,总结一下就是:
sequential为顺序取,每个用户均从第一个参数开始取值。
Unique为唯一,每个用户取值均不同。
Random 为随机,每个用户均随机取值。
1.1.2.6.1 参数化脚本
Action()
{
lr_error_message("ID = %s", lr_eval_string("{param}"));
return 0;
}
1.1.2.6.2 参数化文件
1.1.2.6.3 场景设计
如下图所示
迭代次数:3次
并发用户数:2个
1.1.2.6.4 运行结果
以下为9种组合的测试结果:
(1)sequential Once
2个用户 每个用户取值均一样,每个用户的所有迭代中的取值均一样。
迭代1
迭代2
迭代3
用户1
1
1
1
用户2
1
1
1
(2)unique once
2个用户 每个用户取值都唯一,每个用户的所有迭代中的取值均一样。
迭代1
迭代2
迭代3
用户1
1
1
1
用户2
2
2
2
(3)Random Once
2个用户,每个用户为随机取值,每个用户的所有迭代中的取值均一样。
迭代1
迭代2
迭代3
用户1
3
3
3
用户2
5
5
5
(4)Sequential Each iteration
2个用户,每个用户取值均一样,每个用户每次迭代取一个新值。
迭代1
迭代2
迭代3
用户1
1
2
3
用户2
1
2
3
(5)Unique Each iteration
2个用户 每个用户取值都唯一,每个用户每次迭代取一个新值。
迭代1
迭代2
迭代3
用户1
1
2
3
用户2
4
5
6
(6)Random Each Iteration
2个用户,每个用户为随机取值,每个用户每次迭代均随机去一个值。
迭代1
迭代2
迭代3
用户1
3
5
1
用户2
5
2
4
(7)Sequential Each ocurrance
2个用户,每个用户取值均一样,每个用户每次遇到均取一个新值。
迭代1
迭代2
迭代3
用户1
1
2
3
用户2
1
2
3
(8) unique Each occurrance
2个用户,每个用户取值都唯一,每个用户每次遇到均取一个不同的值。
迭代1
迭代2
迭代3
用户1
1
2
3
用户2
4
5
6
(9) Random Each Occurrence
2个用户,每个用户为随机取值,每个用户每次遇到均随机去一个值
迭代1
迭代2
迭代3
用户1
3
5
1
用户2
5
2
4
|
|