jmeter实现参数化

一、Jmeter实现参数化

参数化:在实际中我们需要对某些数据进行可变处理,此时我们就可以通过参数化来完成,在jmeter当中存在多种实现方式

1、用户参数实现参数化

(1)在请求的前面添加前置处理——用户参数

(2)在用户参数当中设置相应的变量名和变量值,名字和值都可以存在多个

(3)在具体的请求里去使用相应的变量【在jmeter里同样是${变量名}的形式来使用变量】

(4)用户参数如果想要做到值不同则应该在请求的是时候分配多个用户而不是循环次数

2、用户自定义变量实现参数化

(1)原理:此种方法实现的本质是通过添加一个配置元件来完成

(2)在请求之前添加一个配置元件——用户自定义变量

(3)在该元件中设置我们想要的数据,基本格式为:变量——变量值

(4)在需要使用的数据的地方直接通过${变量名}的格式来获取数据

(5)该元件可以配合逻辑控制器实现多个参数循环使用的效果

3、读取外部文件数据实现参数化

(1)原理:这种方法本质就是通过jmeter去读取外部文件的数据,然后实现数据的可变调用

(2)在请求之前添加一个配置元件——csv data set config

(3)在该元件当中引入相应存放数据的文件【通过路径来引入】

(4)设置具体的调用参数【单独分析的内容】

(5)在需要使用数据的地方直接调用相应的变量即可

二、CSV data set config

1、filename:该选项就是用来设置被引入文件的路径【绝对路径或者相对路径】

2、文件编码:只有保证编码统一里面的数据才会正常显示

3、变量名称:在外部文件中可以存放多个不同类型的数据,我们在jmeter里需要通过变量来进行调用,此选项当中就是用来设置具体的调用变量名,多个变量名之间用逗号隔开。

4、分隔符:默认是逗号,如果在文件当中是用tab空格来分割我们需要写\t

5、数据读到文件结尾之后是否循环:true表示重头循环,false表示不循环

6、数据读到文件结尾之后是否停止错误线程:true 表示停止 false表示不停止

7、共享模式:前二个我们可以理解为一样表示将当前的数据给所有的用户去使用,第三种操作方式就是给每一个用户都独立的分配一份数据

三、jmeter集合点

1、定义:在实际应用我们对于某一个接口可能存在多个用户同时请求的场景(并发)

2、原理:在jmeter里实现集合点的方式本质上就是设置一个定时器元件

3、具体实现操作:

(1)在请求之前添加一个定时器

(2)在该定时器中设置我们想的集合的用户数,以及相应的等待时间

四、jmeter关联

1、定义:在一个完整的测试请求当中可能会分成不同的请求步骤,而关联指的是让这些不同的操作步骤之间存在某种数据联系

2、原理:在jmeter里实现关联的本质就是设置相应的后置处理器

3、具体实现操作:

(1)在需要获取数据的请求下面添加一个后置处理器——正则表达式提取器

(2)在正则表达式提取器中定义规则,来完成数据的提取

(3)为了方便我们查看有没有获取到相应的数据,所以我们可以添加一个debug取样器,通过这个取样器在请求执行之后我们就可以在监听器中查看到jmeter当中的所有变量及变量值【如果我们之间的提取操作是正确的那么我们就可以看到想要的变量名及变量值】

五、正则表达式提取器

1、正则:它本身是一门语言,主要的功能就是可以通过书写自己的规则然后从一堆字符串中获取我们想要的内容

2、正则常见的元字符:

(1)元字符:它就可以理解为是当前这门语言用来与实际字符进行对应的符号

(2).号:表示任意的字符

(3)*号:表示数量(表示0个或者多个)

(4)+号:表示数量(表示1个或者多个)

(5)?号:默认情况下我们定义的正则是贪婪匹配的原则,但是通过?可以让其只匹配一个

3、正则表达式提取器相关属性:

(1)引用名称:可以理解为是自定义变量名,我们将来匹配的数据就存在这个变量中

(2)正则表达式:具体的匹配规则,在jmeter中要求一个规则就用一个()包起来

(3)模板:规则就是$编号$,其中编号就是我们相应的匹配分组

(4)匹配数字:我们定义的规则有可能匹配到多个结果,0就表示随机的从这些结果当中返回一个值,而1就表示将匹配到的所有数据都返回

(5)缺省值::可以理解为是 默认值

六、json-path后置处理器

1、在实际的接口请求获取数据操作过程中我们得到的数据格式不一定都是字符串。其中还有一些json格式(这种格式当前是常用的)

2、默认情况下jmeter中是没有json-path后置处理器,它是我们自己安装上的一个插件

3、如何安装插件:将我们下载得到的插件jar包直接复制到ib目录下的ext子目录或者lib下的直接目录

4、如何使用json-path插件

(1)在某一个请求的下面添加该后置处理器

(2)将我们在chrome浏览器插件中获取到的数据路径 复制到这个后置处理器中【将json修改为$】

(3)在使用这个处理器的时候我们一定给出一个变量名,所以在需要使用数据的时候直接写入变量名即可

七、jmeter断言

1、定义:在测试中我们有一个实际的返回结果同时还有一个测试之前的预期结果而断言要做的事情就是让二者进行比较从而判断我们的测试是否通过

2、原理:在jmeter中断言操作的本质就是使用断言元件(响应断言、断言持续时间)

3、具体实现操作:

(1)在请求之后添加断言元件——响应断言

(2)选择需要的匹配模式,然后输入具体的期望值

(3)可以添加监听器(断言结果或者在察看结果树)当中来得到当前断言是否通过的结论

 4、响应断言属性

(1)我们默认有四种匹配模式我们将他们分为二组,其中前两组为一组

(2)二组之间的区别就是前两个可以书写正则表达式而后二个只能书写具体的字符串

(3)包括:只要我们的期望值是被包括在实际结果中的就允许通过

(4)匹配:要求我们的期望值必须和实际完全一样才允许通过

5、持续断言时间

每一个请求都会有一个实际的请求时长,而我们这个持续断言时间可以用来设置一个期望的请求时长,如果二者不同我们的实际值大于期望值,那么该断言就不会被通过

八、HTTP请求取样器属性

1、服务器或者ip地址:不用填写http字样,且不能有子路径

2、自动重定向和跟随重定向:二者的区别就在于后者会将整个请求过程中遇到的地址都记录下来

九、逻辑控制器

逻辑控制器我们可以分为二类,其中一类是专门用来控制取样器的执行顺序,另外一类就可以用来对我们的取样器进行分组整理操作

1、for each 控制器

(1)该组件的主要功能就是用来从某一个配置元件中循环的读取数据,同时控制它下面取样器的执行次数

(2)将配置元件和取样器都放置在逻辑控制的下面进行管理,在配置元件中定义具有相同前缀的变量名

(3)在for each控制器中进行相应的属性设置(输入变量名前缀和输出变量、起始的编号)、

2、for each控制相关属性

(1)输入变量名前缀:就是我们在配置元件中设置的变量名前缀

(2)开始循环的编号:在jmeter中默认从0开始

(3)结束循环的编号:我们想要循环多少次就写上相应的数字

(4)输出变量名:将来我们具体调用数据名字

(5)是否添加“_”:根据我们配置元件中是否存在来决定要不要勾选

十、jmeter中的函数

1、函数:在jmeter中我们可以将函数理解为是工具本身已经封装好的一些功能,我们只需要去使用就可以得到相应的结果

2、函数的基本语法和使用:

(1)${__functionName( 参数 )} 【 在jmeter 中我们不需要死记函数,因为函数助手 】

(2)在使用的时候可以通过函数助手直接来复制它自动生成好的调用代码

(3)通过函数助手我们可以得到一个调用函数的代码,直接使用即可

3、常见函数

(1)CsvRead: 它的功能就是可以帮助我们从外部的文件当中读取数据,默认读的是第一行第一列,其中可以设置二个参数,第一个参数就是被读取文件的绝对路径,第二个就是想要数据的列号,默认从0开始,如果存在多行数据那么 csvread 函数会以线程数来进行区分,第个线程读一行,第二个线程读第二行.........

(2)Counter: 它的功能就是可以调用一个计数器,每次都只增加1,可以设置第一个参数值为 false 或者true 其中设置为 false 就表示不论有多少个线程它们都使用同一个计数器,则true 的作用就是每个线程都会有一个属于自已的计数器。

(3)threadNum: 该函数可以返回当前线程的编号,默认从1 开始。

(4)Random: 该函数可以设置二个参数,分别表示开始和结束的值,然事它会生成并返回一个在二者之间的随机数字。

(5)randomString: 该函数可以在我们设置的长度及取样范围内生成一个随机字符串。

十一、jmeter全局变量

所谓全局变量我们就可以理解为是在一个jmeter测试脚本中可以到处起作用的一个值

1、基本步骤

(1)在获取数据的线程中先将我们想要的数据通过相应的后置处理器拿出来然后放在一个变量当中

(2)通过setproperty函数来设置具体的属性名及属性值,但是这句话只是相当于在调用一个函数,我们必须要通过一个取样器让它执行起来才会起作用【这个操作完成之后我们就相当于让这个数据已经变成了全局】

(3)此时我们就可以在想要使用该数据的地方通过property函数来直接找到相应的变量去使用即可

十二、参数化方式总结

1、CSV Data Set Config:功能强大、适应各种迭代及多参复杂场景

2、用户参数:适应传递少量参数时使用

3、用户定义的变量:和用户参数使用场景相似,不同在于一般做全局变量使用

4、函数:功能强大,行数类型繁多,灵活度大,适应各种应用场景

十三、推荐

1、CSV Data Set Config

2、函数

猜你喜欢

转载自blog.csdn.net/qq_35169931/article/details/86484171