-
CSV Data Set Config(参数化常用组件)
- CSV Data Set Config的面板样式
- 什么是csv?
- 为了实现简单的数据存储,是一个纯文本的文件
- 最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中
- CSV 文件可以用记事本、excel打开;用记事本打开的话,每一列数据都用逗号隔开
- 字段详细介绍:
-
Filename:文件名。test.dat文件名,保存参数化数据的文件目录,可选择相对或者绝对路径(建议填写相对路径(相对于bin目录),避免脚本迁移时需要修改路径)。如果直接写文件名,则该文件要放在bin目录中。对于分布式测试,主机和远程机中相应目录下应该有相同的CSV文件
-
File encoding:文件编码。er\csvtest.dat文件的编码格式,在保存时保存编码格式为UTF-8即可;
-
Variable Names:变量名。类似excel文件的文件头,起到标示作用,同时也是后续引用的标识符,建议采用有意义的英文标示;(如:有几列参数,在这里面就写几个参数名称,每个名称中间用分隔符分割,这里的 user,pwd,可以被利用变量名来引用:{pwd};
-
Ignore first line: 是否忽略首行。果csv中第一行是表头,而不是参数化用的数据,这里要选择True。
-
limiter:参数文件分隔符。默认是 “,”。用来在“Variable Names”中分隔参数,与参数文件中的分隔符保持一致即可。
-
Allow quoted data?:是否允许变量使用双引号,允许的话,变量将可以括在双引号内,并且这些变量名可以包含分隔符
-
Recycle on EOF?:是否循环读取参数文件内容;因为CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入;
Ture:为true时,当已读取完参数文件内的测试用例数据,还需继续获取用例数据时,此时会循环读取参数文件数据(即:读取文件到结尾时,再重头读取文件);
False:为false时,若已至文件末尾,则不再继续读取测试数据;通常在“线程组线程数* 线程组循环次数>参数文件行数”时,选用false(即:读取文件到结尾时,停止读取文件); -
Stop thread on EOF?:遇到文件描述符停止线程。当Recycle on EOF为False时(读取文件到结尾),停止进程,当Recycle on EOF为True时,此项无意义;
若为ture,则在读取到参数文件行末尾时,终止参数文件读取线程;
若为false,此时线程继续读取,但会请求错误,因此时读取的数据为EOF; -
Sharing mode:线程共享模式。即参数文件的作用域,有以下几种方式:
△All threads:当前测试计划中的所有线程中的所有的线程都有效,默认;
△Current thread group:当前线程组中的线程有效;
△Current thread:当前线程有效; -
举第1个栗子,场景如下:10个线程,csv文件7条单列数据,CSV Data Set Config设置变量名为name,不忽略首行,分隔符为“,” 变量值中不允许有双引号,遇到文件描述符不结束循环,遇到文件描述符结束线程,这里使用debug sample来做示范,标题引用name变量。
「结果如下」:Image
-
举第2个栗子,场景如下:10个线程,csv文件7条3列数据。CSV Data Set Config设置变量名为name,str、mao,不忽略首行,分隔符为“,” 变量值中允许有双引号,遇到文件描述符继续下一次循环,遇到文件描述符不结束线程,这里使用debug sample来做示范,标题引用name、str、mao变量。
「结果如下」:
-
- CSV Data Set Config的面板样式
-
计数器
- 计数器,顾名思义就是在测试执行过程中会记录迭代次数。可以在线程组任何位置创建,允许用户配置起点、最大值和增量。配置后,计数器将从起点循环到最大值,然后重新开始,直到线程结束。允许用户创建一个计数器,可在线程组中任何地方被引用。
- 字段详细介绍:
- 启动(start):给定计数器的起始值、初始值,第一次迭代时,会把该值赋给计数器
- 递增(Increment):每次迭代后,给计数器增加的值
- 最大值(Maximum):计数器的最大值,如果超过最大值,重新设置为初始值(Start),默认的最大值为Long.MAX_VALU E,2^63-1(如果持续压测,建议最好不要设置最大值)
- Number format:可选格式,比如000,格式化为001,002;默认格式为Long.toString(),但是默认格式下,还是可以当作数字使用
- 引用名称(Reference Name):用于控制在其它元素中引用该值,形式:$(reference_name}
- 与每用户独立的跟踪计数器(Track Counter Independently for each User):全局的计数器,如果不勾选,即全局的,比如用户#1 获取值为1,用户#2获取值还是为1;如果勾选,即独立的,则每个用户有自己的值:比如用户#1 获取值为1,用户#2获取值为2。7.每次迭代复原计数器(Reset counter on each Thread Group Iteration):可选,仅勾选与每用户独立的跟踪计数器时可用;如果勾选,则每次线程组迭代,都会重置计数器的值,当线程组是在一个循环控制器内时比较有用。
- 举第1个栗子,场景如下:启动1,递增2,无最大值,格式为czdx_000,不勾选用户独立跟踪计数器,10个用户,1次循环,不使用循环控制
结果如下:
- 举第2个栗子:启动1,递增2,无最大值,格式为czdx_000,勾选用户独立跟踪计数器,10个用户,2次循环,不使用循环控制器
结果如下:
- 举第3个栗子:启动1,递增2,无最大值,格式为czdx_000,勾选用户独立跟踪计数器,10个用户,2次循环,不使用循环控制器,每次迭代复原计数器。
结果如下:
- 重点注意」:循环控制器是相当于用户做同样的动作,「当勾选用户独立跟踪计数器」后,循环控制器的循环次数不管是几次,计数器都是保持不变。
- 举第1个栗子:启动1,递增2,无最大值,格式为czdx_000,10个用户,1次循环,使用循环控制器设置循环次数为2,不勾选用户独立跟踪计数器
结果如下:
- 举第2个栗子:启动1,递增2,无最大值,格式为czdx_000,10个用户,1次循环,使用循环控制器设置循环次数为2,勾选用户独立跟踪计数器,计数器放在循环控制器「外」。
结果如下:
- 举第3个栗子:启动1,递增2,无最大值,格式为czdx_000,10个用户,1次循环,使用循环控制器设置循环次数为2,勾选用户独立跟踪计数器,计数器放在循环控制器「内」。
结果如下:
计数器是每个线程独享的,不再是公共计数器,所以每次有新的线程运行时,都是新的计数器开始循环计数
- 计数器,顾名思义就是在测试执行过程中会记录迭代次数。可以在线程组任何位置创建,允许用户配置起点、最大值和增量。配置后,计数器将从起点循环到最大值,然后重新开始,直到线程结束。允许用户创建一个计数器,可在线程组中任何地方被引用。
-
用户自定义变量(相当于当前作用域的全局变量)
User Defined Variables中定义的参数值在test plan执行过程中不能发生取值的改变,因此一般仅将test plan中不需要随迭代发生改变的参数(只取一次的参数)放在这里。例如:被测应用的host和port值- 线程组下的用户自定义变量 优先级高于 测试计划里的用户自定义变量
- HTTP 请求下的用户自定义变量 优先级高于 线程组下的用户自定义变量
- 若有重名变量,优先取优先级高的用户自定义变量
- 用户自定义变量在测试计划运行后,是全局生效的且只生成一次,它不是动态生成的;从测试结果可以看到,即使变量的值是随机数(Random),不同用户数循环多次,拿到的用户自定义变量值都是一样的
-
随机变量(Random Variable):用于生成随机数字字符串并将其存储在变量中。
- 相比 __Random 的优势」:
__Random 函数也可以生成随机数字字符串,但如果要重复引用的话,需要结合用户自定义变量控件(User Defined Variables) 使用 Random Variable 可以生成完随机数字字符串后存储在变量中,可以直接重复引用 - 参数详细介绍:
- Variable Name:变量名,存储随机字符串的变量的名称。
- Output Format:格式化字符串,例如,“ 000”将生成至少3位数字,或者“ USER_000”将生成USER_nnn形式的输出。如果未指定,则默认为使用Long.toString()生成数字。
- Minimum Value:最小值;生成的随机数的最小值(长整数)。
- Maximum Value:最大值;生成的随机数的最大值(长整数)。
- Seed for Random function(该输入项可以不填):随机种子,随机数生成器的种子。默认值为当前时间,以毫秒为单位。如果在“将每个线程”设置为true的情况下使用相同的种子值,则与“ 随机” 类一样,将为每个线程获得相同的值
Per Thread(User)?:每个线程,如果为False,则在线程组中的所有线程之间共享生成器。如果为True,则每个线程都有自己的随机生成器。
- 举第1个栗子,# 占位符:
5个用户:
结果如下:
- 相比 __Random 的优势」:
-
知识点:
-
可以用在输出格式中,当做占位符的数量和数字字符串长度不一定要相等
-
举第2个栗子,0 占位符:
结果如下:
-
-
知识点:
- 0 也可以用在输出格式中,当做占位符
- 当数字字符串长度小于 0 的数量时,会自动补 0,大于还是会显示完全数字字符串
-
举第3个栗子,非占位符:
结果如下:
随机数字字符串会跟在 88 后面 -
举第4个栗子,配合循环次数和循环控制器:2个线程,循环次数2,循环控制器次数设置为3
一共12个请求,每个线程一共生成6个随机数 -
举第5个栗子,随机种子使用:只有设置了随机种子和 True 才会生效
「每次循环都会产生新的随机数字字符串,所有线程共用一个数字字符串」
5.配置元件
最新推荐文章于 2022-08-31 13:08:36 发布