{参数化测试}
又名数据驱动测试:使用不同的数据来执行相同的业务
【工作原理】
对脚本中的常量(数据)分别使用变量来替换,变量的取值又来自某个文件中,设置取值方式以及迭代方式即可实现参数化测试。比如准备大量的合法数据进行注册或者登录等,尽量达到模拟用户真实使用系统的情况
【工作组件】在虚拟用户生成器(Vugen)中设置。
【实现步骤】
1)首先确定哪些数据要做参数化,并分别使用参数变量来替换常
量数据,格式:{变量名}
2)然后准备参数池:大量数据 + 文件类型
3)设置参数策略以及迭代次数
4)检查点也要做参数化
【步骤详解】
1) 双击脚本中要做参数化的数据:
jojo ->右击-> Replace with a Parameter 使用一个参数代替
弹出窗口:如下
Parameter Name: username 参数名 - 变量名
Parameter Type: File 参数类型 - 文件
Original value: jojo 初始值 - jojo
点击“ok”后会自动生成LR变量{username}
其他数据同上,但参数化的数据一定要做到全面:做参数化的数据在其他地
方出现过,也要做参数化。不然会报错,有一个小技巧可以检验:
使用Ctrl+F在脚本中查找指定数据并按F3继续查找。
2) 打开参数池配置窗口
在VuGen中倒数第2个按钮:Open Parameter List(快捷方式:Ctrl+L)
点击username->Edit with Notepad 使用记事本编辑测试数据
将光标放置在最后一行数据的下一行开头
使用ctrl+a 全选 检查光标是否符合格式要求:
保存ctrl+s 及时关闭记事本,避免版本问题
其他文件的数据同上操作(比如password)
3) 设置参数策略
1、parameter type参数类型
File文件(常用) Date/time日期/时间 Group name组名
Iteration number重复编号 Table表
Unique number唯一编号 Random number随机编号
Load generator name下载生成名称
User defined function使用规定的功能
Vuser id虚拟用户ID XML XML
2、File文件存储位置
点击browse
3、按钮:
Add column添加列
Add row添加行
Delete column删除列
Delete row删除行
Edit with notepad使用文本编辑
Data wizard通过数据库从ODBC导入
Simulate parameter模拟参数
4、select column选择列
By number 通过编号选择列,第1列就是从1开始
By name通过名称,列名
5、file format文件格式
Column列分隔符
取值:comma逗号分隔符
tab制表分隔符
space空格分隔符
First data第一个行数据
6、select next row选择下一行的设置
取值:Sequential按顺序取值,从第一行开始依次向变量分配参数值
Random随机取值
Unique唯一取值,每个用户只取一个值
Same line as XX 取和xxx参数在同一行的值
7、update value on更新数据的时机
取值:Each iteration每次迭代更新;脚本迭代时使用新数据
在同一次迭代中所有参数的取值是不变的,下一次迭代就更新。
Each occurrence每次取值更新;参数每次出现时使用新数据
即使在同一个迭代中,参数的值也更新。
Once一次;每个用户只取一次值,不再改变(从一而终)
8、when out of value超出值后的设置,迭代次数大于参数个数时的设置
取值:Abort vuser 放弃用户,终止脚本
Continue in a cyclic manner 循环取值继续
Continue with last value 使用最后一个值继续
9、allocate vuser values in the controller控制器里分配虚拟用户数值
Automatically allocate block size自动分配程序块大小
Allocate XXX values for each vuser为每个虚拟用户分配XXX值
说明:一般案例中采用的是默认的SE组合:顺序 + 每次迭代
Sequential + Each Iteration
4) 设置action脚本的迭代次数
点击edit runtime-settings-》run logic-》number of iterations
迭代次数和参数个数之间关系:
取决于第8个选项的设置,和unique相结合使用:
Abort vuser当值超出时终止脚本:
当参数个数大于迭代次数时,超出的参数不会被执行,脚本终止啦。
Continue in a cyclic manner当值超出时循环取值继续:
当参数个数小于迭代次数时,参数会循环使用,直到迭代次数结束位置
Continue with last value当值超出时使用最后一个值继续
当参数个数小于迭代次数时,使用最后一个参数值继续完成剩余的迭代。
{参数化方式}
方式1: 设计多个参数并使用多个独立的文件保存各自数据:
->将脚本中数据设计为多个参数:{变量名}
->准备数据 :一个参数单独有一个文件
使用excel表格准备大量数据并拷贝各自文件中
->设置参数策略 :
在Select Column中:可以指定选择哪一列
1)根据列号选择:1 2 3 …
第一个列就是1,依次类推
2)根据列名选择:username password 见名知意
First data: 从第几行开始读取数据
->编辑运行时设置:
迭代次数:
此方法适合参数之间没有关系时
方式2: 设计多个参数共享一个数据文件,前提:参数之间有关联
->将脚本中数据设计为多个参数:{变量名}
->准备多个数据 :一个参数在共享文件中就是一列
使用excel表格准备大量数据并拷贝共享文件中
编辑文件:多列共享一个文件,使用comma逗号分隔
->设置参数策略 :
将每个参数的File都改为共享文件名
在Select Column中:可以指定选择哪一列
1)根据列号选择:1 2 3 …
第一个列就是1,依次类推
2)根据列名选择:username password 见名知意
在File format中:指定格式
默认使用逗号分隔每一列 Comma
First data: 从第几行开始读取数据
->编辑运行时设置:
迭代次数:
此方法适合参数之间有关系时
3、用参数化方式1的策略来注册前15个新用户:a1~a15,密码:123
步骤:
A》首先录制用户aaa的注册脚本到Action中,添加事务,检查点
B》然后按照参数化的步骤1、2设计参数以及准备数据(实际数据有30个)
a1~a30
C》其次设置参数化策略:
First data: 1
SE组合 顺序+每次迭代
设置迭代次数:15次
4、用参数化方式1的策略来注册前15个新用户:a1~a15,密码:123
步骤:
A》首先录制用户aaa的注册脚本到Action中,添加事务,检查点
B》然后按照参数化的步骤1、2设计参数以及准备数据(实际数据有30个)
a1~a30
C》其次设置参数化策略:
First data: 1
SE组合 顺序+每次迭代
设置迭代次数:15次
参数化策略 详解
最常用的策略组合: 应用场合
1)SE组合: 顺序+每次迭代 最常用
2)UEA组合:唯一+每次迭代+放弃用户 数据唯一时使用
Unique策略时,数据必须要充足,避免报错
版本1:File类型
版本2:Unique Number类型
3)RE组合:随机+每次迭代 用户随机性访问
用户取值从三方面考虑:
A )数据的行数
B )用户的个数
C )迭代的次数
举例1:假设有2行数据:a1 a2,1个用户,迭代2次。
{每个用户迭代2次,合计跑4次}
按照SE组合:顺序+每次迭代
用户取值:(a1, a2)
按照UE组合:唯一+每次迭代
用户取值:(a1, a2)
假设迭代三次,则需要考虑第八项的设置。
举例2:假设有4行数据:a1 a2 a3 a4,2个用户,迭代2次。
{每个用户迭代2次,合计跑4次}
按照SE组合:顺序+每次迭代
第一个用户取值:(a1, a2)
第二个用户取值:(a1, a2)
按照UE组合:唯一+每次迭代
第一个用户取值:(a1, a2)
第二个用户取值:(a3, a4)
举例3:某参数有数据a1 a2 a3 … a10,3个用户,迭代3次。
{每个用户迭代3次,合计跑9次}
按照SE组合:顺序+每次迭代
第一个用户取值:(a1, a2,a3)
第二个用户取值:(a1, a2,a3)
第二个用户取值:(a1, a2,a3)
按照UE组合:唯一+每次迭代
第一个用户取值:(a1, a2,a3)
第二个用户取值:(a4, a5,a6)
第三个用户取值:(a7, a8,a9)
举例4:某参数有数据a1 a2 a3 … a30,只有1用户,脚本迭代3次,
一次迭代中参数只出现一次,完成以下策略组合的结果:
1)顺序 + 每次迭代:a1 a2 a3
2)唯一 + 每次迭代:a1 a2 a3
3)随机 + 每次迭代:a17 a9 a28
4)顺序 + 每次遇到:a1 a2 a3
5)唯一 + 每次遇到:a1 a2 a3
6)随机 + 每次遇到:a2 a30 a18
7)顺序 + 一次:a1 a1 a1
8)唯一 + 一次:a1 a1 a1
9)随机 + 一次:a15 a15 a15