为了解决重复性操作,比如查询30个学院信息,所以通过循环的方式,从一个数据源获取数据,对重复执行的操作,进行动态赋值的过程叫做参数化。
参数化原理:复杂的技术都是源于简单的重复
(1)简单的重复过程:列表,分析哪里是不变的操作,哪里是变化的数据
(2)把变化的数据告诉jmeter:使用参数,存储变化的数据
(3)把需要使用参数的位置用同一个变量替代
注意:
①变量名理论上可以是任意的英文字母组成,建议不要夹杂其他的字符
②变量的引用形式 ${变量名}
参数化分析思路:
(1)罗列所有简单的重复过程,直到能看出规律
(2)分析第一步中哪些是不变的部分,哪些是变化的部分
(3)分别处理不变的部分和变化的部分
(4)点击运行,观察动态赋值的过程,是否符合预期,如果不符,加以调试
接下来介绍参数化的四种方法
一、用户参数(在变化的部分使用变量替代)
步骤:
(1)新建http请求
(2)设置线程组的属性,使得请求循环或者重复执行起来
(3)添加前置处理器-用户参数,定义变量名和变量值
注意:①用户数要和线程数保持一致,变量名要保持一致
②每个用户的变量取值是不变的,第n个线程执行时取第n个用户的值,无论循环多少次
二、CSV数据文件设置
因为用户参数的参数化数据有限,CSV可以创建大量数据,所以使用配置元件-CSV数据文件设置(CSV Data configuration set)。
(一)CSV概念
定义:逗号分割值,数据和数据之间用英文半角逗号分割
创建CSV:①使用文本编辑工具编写,并另存为csv文件。
②使用excel表格编写,并导出为csv文件。
注意:①逗号必须是英文半角逗号,否则全角逗号当做一列。
②有效数据之间不能有空行,否则空行取不到值。
③编码格式建议是UTF-8编码,否则中文乱码。
(二)属性设置
文件名:填写或浏览CSV数据所在的目录和文件名
文件编码:指定CSV文件的编码方式,可以下拉列表选择
变量名称:定义引用CSV数据的变量名,多个变量之间使用英文半角逗号分割
(三)循环赋值方式
要遍历所有的csv数据,需要线程组总的循环次数(线程数x循环次数)要大于等于CSV数据的行数。
(1)从第几行取值,取决于是第几次循环
(2)从第几列取值,取决于是第几个变量
(四)使用步骤
(1)新建请求
(2)设置线程组属性
(3)准备CSV文件,用于参数化数据取值
(4)添加配置元件----CSV数据文件设置
(5)运行调试脚本
三、用户定义的变量(使用一个用户定义的变量,封装使用频繁,但是基本不变的数据)
路径使用繁琐,一旦发生变化,脚本维护和修改将花费大量时间成本。
定义:使用一个配置元件,定义一个变量,来封装不变但是使用频繁的数据,这个变量就叫做用户定义的变量,实现这个封装的元件,也叫用户定义的变量。
操作步骤:配置元件-用户定义的变量-添加变量名和值
四、函数
操作步骤:
(1)调用函数助手-选择一个函数-填写函数的参数,生成函数的调用形式
(2)将函数的调用形式粘贴到任意想要使用的地方
(3)运行脚本,观察效果
(一)计数器函数counter
第一个参数的取值:
true---每个用户独享一个计数器
false---所有用户共享一个计数器
默认值为false
第二个参数:存储返回值的变量,可不写
(二)随机数函数random
第一个参数:区间的最小值,可以取到
第二个参数:区间的最大值,可以取到
第三个参数: 存储返回值的变量,可不写
(三)时间函数time(获取电脑本地时间)
第一个参数:作用是定义时间的显示格式
时间 | 表示字母 | 表示字母 |
年--year | y | |
月-month | M | |
日-day | d(本月的第几天) | D(本年的第几天) |
时-hour | h(12小时制) | H(24小时制) |
分-minute | m | |
秒-second | s(秒) | S(毫秒) |
写法示例(结果相同):
y年M月d日h点m分s秒S毫秒
yyyy年MM月dd日hh点mm分ss秒SSS毫秒
(四)CSVRead函数(封装了对csv文件进行取值的功能)
通过读取外部csv文件,获取csv格式的数据,用于jmeter内部,常用于参数化。
第一个参数:指定csv文件所在的目录和文件名
第二个参数:指定从几列取值。0表示第一列,1表示第二列,以此类推
注意:
①从csv第几列取值由第二个参数指定
②从csv第几行取值由第几个线程决定
③要想遍历csv文件的所有行,需要保证线程数要大于等于csv的行数
④如果csv数据中含有中文,csv编码格式改为ANSI
五、四种方式总结
相同点:都是从一个数据源获取数据,动态赋值到重复操作的过程中
不同点:
(1)用户参数数据源在jmeter内部准备,适用于数据量比较小的场景,使用次数较少
(2)CSV数据源在jmeter外部准备,可以设计大量数据,也可借助于工具或者代码生成大量数据,用于数据量比较大的场景,使用较频繁
(3)用户定义的变量适用于数据变化不大但是使用频繁的场景,使用次数较少
(4)函数多样、灵活、功能强大、使用较多
CSV数据文件设置:总的循环次数每变化一次,CSV文件的取值就变化一次
用户参数:用户数(线程数)每变化一次,用户参数的取值就变化一次
建议优先选择CSV数据文件设置和函数进行参数化。用户参数和用户定义的变量,作为辅助手段,择机使用。