1 背景介绍
工具提供参数化功能,即每个用户发送的数据存在不同。当发送数据内容里面存在“{key}”符号时,工具自动将key值替换为对应的实际参数值,例如:
上图是一个HTTP请求消息,里面存在多个“{}”符号,即存在多个需要替换为实际值的参数:Host、Cookie、Content-Length、username、password、validateCode,工具在发送数据前会自动将这些参数替换为对应的参数值。
上面参数对应的实际参数值来源方式不同,包括:参数列表配置、从服务器收到的响应消息提取(即关联参数,如validateCode)、工具自动处理(如Content-Length);
该文重点是介绍参数列表配置,因此不对关联参数进行介绍,关联参数可以参照《kylinPET 关联参数》文档
工具自动处理的参数每种协议都不同,如HTTP支持:Host、Cookie、Content-Length等等;SIP支持:Content-Length、Call-ID等等。详细参照各个协议对应的文档。
2 添加参数
点击“工具” -> “参数列表”或者“工具栏”的按钮。包括:随机参数、固定参数、顺序递增参数、从文件/数据库导入参数、日期类型参数。
1) 最小值与最大值为随机值的范围,如1,50表示1到50之间的随机值;
2) 前缀表示在随机值前面加上的字符串
3) 总长度:0表示不固定,为“前缀+随机值”的长度;其他值表示固定参数值的总长度,如果“前缀+随机值”的长度小于设置的长度,则在前缀后添加0补充,如长度设置为5,则abc1值变为abc01,长度为6则为abc001;如果“前缀+随机值”的长度大于设置的长度,则值为“前缀+随机值”,不会删除多余部分。
每个用户该参数的值都一样
1) 初始值:为该参数值的第一个值
2) 步值:后面递增的步值,如初始值为1,步值为2,则依次为1,3,5,7,…
3) 前缀:表示在值前面加上的字符串
4) 总长度:与上面的“随机参数”一样意义。
点击然后在弹出的文件选择框选择参数文件,
csv(以逗号分隔)格式。
在场景配置里将脚本引用的参数选择绑定
如果存在多个压测机,平台自动按参数文件个数平均分配给多个压测机。
如果需要每个压测机使用不同的参数文件
列名代表参数名,下面表格每一行代表参数值,该功能类似数据库。
注意:
1、
每个用户按读取顺序读取每一行记录,到达结束后则从第一个值开始
1)
数据库:包括Oracle与Mysql、Sysbase、SQL Server、DB2,不包括的数据库请自己导出文件再通过文件方式导入。
2) 注:工具自动加载ext/ db目录下对应数据库目录的jdbc驱动jar包,如果是jdbc驱动问题,请自己更换最新的jar包
3) 开始行与结束行:读取结果集里的开始行到结束行,即限制了读取记录数,结束行为0表示一直到结束。
4) 配置数据库信息后,先点击测试连接测试下是否连接数据库成功。
5) SQL命令:
select * from tableName 表示所有字段都为参数名
select a, b from tableName表示只读取a,b字段为参数名
例如数据库test存在表help_topic,表字段及记录如下图:
1) 导入所有字段,字段名即为参数名
select * from help_topic
点击确定加载数据如下图:
其中表的字段名为参数名,由于没限制记录数,因此加载了全部记录
2) 只导入表部分字段,限制记录数
select name,help_category_id from help_topic
只加载了100条数据,加载字段只有name与help_category_id
3) 将表的字段添加别名,即参数名为别名
如表字段name与help_category_id,如果希望加载到工具的参数名为a与b,则只需要为name与help_category_id分别添加别名a与b。
select
name as a,help_category_id as b from help_topic
当参数值是由运行时的实际决定,即每个用户运行时的参数值为运行当时的系统时间(动态变化),可将参数添加为日期格式。
上图表示值为Long格式,即为时间戳,单位为毫秒。
上图表示值为yyyy-MM-dd HH:mm:ss格式,即将时间戳转为某种格式。
3 用户读取方式
假设运行4个用户user1、user2、user3、user4,有参数列表如下:
|
Para1 |
Para2 |
1 |
1 |
1 |
2 |
2 |
2 |
3 |
3 |
3 |
4 |
4 |
4 |
工具按先后顺序启动user1、user2、user3、user4几个用户,每个用户线程方式运行:
|
Para1 |
Para2 |
user1 |
1 |
1 |
user4 |
2 |
2 |
user3 |
3 |
3 |
user2 |
4 |
4 |
这种情况,仍然是保证每个用户使用不同的参数,所以不影响性能测试。