为了解决重复性操作,比如查询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数据文件设置和函数进行参数化。用户参数和用户定义的变量,作为辅助手段,择机使用。