Jmeter各组件介绍 及 使用(一)

原创不易,感谢查阅。

本篇主要讲述Jmeter的各个组件及简单使用,其中包括以下内容:

一、线程组
二、逻辑控制器
三、配置元件
四、定时器
五、后置处理器
六、断言
七、监听器

八、参数化

线程组

1、线程组的添加:测试计划---添加---Threads ---线程组

持续压测600秒,需要把 循环次数 永远 勾上

2、梯形线程组的添加:

 梯形线程组的发压参数配置说明

梯形线程组不是Jmeter本身自带的,是需要下载Jmeter的插件,由于众所周知网络的原因,我下载下来放在国内的网盘上了,有需要的可以去下载。

下载地址: https://url90.ctfile.com/d/38447490-56978418-acf3bc?p=2587  (访问密码: 2587)

3、终极线程组【可以实现梯度也可以模拟突然的高并发】

 

逻辑控制器

常用的逻辑控制器

1、循环控制器:可以设置该控制器内的sampler执行的次数,循环次数与线程的循环次数各自独立。

设置线程组循环次数为1,如下图所示:

设置 循环控制器 的循环次数为5,如下图所示:

在 察看结果树 中执行的请求次数为5,如下图所示:

2、如果(If)控制器:根据判断条件决定是否执行该控制器内的请求。

首先添加一个用户自定义变量,如下图所示:

设置 如果(If)控制器 的条件,如下图所示:

现在,可以在 察看结果树 中看到发送的请求,比如条件处为:1==1也可以执行get请求;如果条件处为 空或者为1==2,则不会执行get1请求。

3、随机控制器:随机执行该控制器内的 一个 请求。

添加随机控制器,我添加了三个请求以做演示。如下图所示:

线程组为打开后默认的随机1次,1秒内起1个虚拟用户。

执行后在 察看结果树 中仅显示一个get请求,如下图所示:

4、随机顺序控制器:执行该控制器内的所有请求,顺序随机。

前提条件:线程组为打开后默认的随机1次,1秒内起1个虚拟用户。

添加 随机顺序控制器 ,如下图所示:

点击运行后,显示的执行结果为:随机并顺序的执行的所有get请求,如下图所示:

5、仅一次控制器:该控制器内的请求只执行一次,无论线程循环多少次。

前提条件:线程组为打开后设置为循环次数2次,1秒内起1个虚拟用户。

在 仅一次控制器 下添加两个get请求,如下图所示:

执行后在 察看结果树 中显示为如下图所示:

其上图中Text中的两个标红的get3为测试计划中独立于 仅一次控制器 的get3请求,因为我在线程组设置的循环为2次,所以在Text处显示为两个get3请求。

6、switch控制器:设置控制器上的value值(从0开始【0代表第一个请求;1代表第二个请求;2代表第三个请求以此类推】),也可直接写想要执行的请求名,比如get2;执行控制器内对应的sampler。

前提条件:线程组为打开后设置为循环次数2次,1秒内起1个虚拟用户。

如下图所示设置为2 即为第三个请求get3:

执行后的结果为 如下图:

如下图所示switch处设置为请求的名称get2:

执行后的结果为 如下图所示:

7、事务控制器:测试场景中包含了多个接口,需要做整体的数据统计的时候使用【同LR中的事务概念

 

===============================================================

配置元件

常用的配置元件

1、http cookie管理器:可以在浏览器中抓取到cookie信息,然后通过http cookie管理器为http请求添加cookie信息。

 如下图中展示:

2、http信息头管理器:在http信息头管理器中添加http请求header中的名称和值,可以修改请求头的值。

如下图所示修改了两个请求的名称和值:

3、用户自定义变量:用户可以自定义的变量比如:JDBC连接数据库时用到的用户名密码端口和URL,也可与函数助手生成的函数混合使用。

详见该文章的参数化章节

4、CSV Data Set Config:参数化的一种。

详见该文章的参数化章节

===============================================================

定时器

常用的定时器

1、固定定时器:设置一个固定的延迟时间,单位ms。

前提条件:线程组为打开后默认的随机1次,1秒内起1个虚拟用户。

设置为3s的定时器即为  在发送请求之前停留3秒的时间,如下图所示:

如果有两个请求get1和get2,执行的顺序为:先停留3秒执行get1;再停留3秒执行get2.如下图所示的:

注释:

Jmeter中的定时器类似于loadrunner中的pacing值和think_time

1)定时器是在每个sampler(采样器)之前执行的

2)定时器是有作用域的;当执行一个sampler之前时,所有当前作用域内的定时器都会被执行。且所有的sampler执行前都会执行定时器

3)如果希望定时器仅应用于其中一个sampler,则把该定时器作为子节点加入,如下图所示:

2、同步定时器(synchronizing timer):在该定时器处,使线程等待,一直到指定的线程个数达到后,再一起释放。可以在瞬间制造出很大的压力。

和loadrunner的集合点差不多的功能

前提条件:设置线程为5,循环2次1秒内启动,如下图所示:

设置同步定时器(synchronizing timer)为5,每组5个用户并发(这个设置与线程组设置的线程数有关联)。如下图所示:

执行后的结果为:

3、泊松随机定时器【类似LR思考时间

 

 ===============================================================

后置处理器

1、正则表达式提取器:可以通过正则表达式来获取http请求返回的数据。

注释:

1)引用名称:匹配后的结果,保存到一个参数中,如param

2)正则表达式:支持正则表达式的语法,用()来进行分组,指定要获取的内容,如":(.+),

3)模板:$1$表示取匹配到的第一组数据,$2$为第二组

4)匹配数字:当某组数据中包含多个参数时,0代表随机,1代表该组的第一个参数,2表示第二个。-1代表获取全部的参数,这个时候,引用名称就变成了参数数组,可以通过param_n来获取指定的参数

当有多组数据时,第一组为param_g1,第二组为param_g2

操作:

前提条件:线程组为打开后默认的随机1次,1秒内起1个虚拟用户。

get URL:http://127.0.0.1:8080/PerfTeach/GetMethod_getSkuInfo.action?skuid=1239&opt=34

get 响应数据:{"skuId":0,"price":88.0,"stock":1268,"opt":34,"result":true}

依据get1返回的数据进行正则的匹配,如下图所示:

提取get1返回的数据放置在get2的请求中,相当于LR的关联。如下图所示:

察看结果树 中显示如下图所示:

 2、json提取器【常用,可实现接口关联】

可以通过json path表达式来获取http请求返回的数据,供下个接口使用

 

===============================================================

断言

1、响应断言【常用】

一般为文本断言,添加想要断言的文本即可,相当于LR中文本检查点,如下图所示:

注意:如果接口返回的是:"success": "true",需要把true前的空格去掉

2、json断言

其他断言方式后续再进行补充……

===============================================================

监听器

常用监听器

1、察看结果树:一般用于调试使用。如下图展示:

2、聚合报告:

3、当前线程数:可以很清晰看出当下已经启动多少线程

4、响应时间【将多个接口封装在一个事务中,可以选择自己想要看的接口响应时间折线趋势】

请忽略比毕加索还抽象派的绘制趋势

5、TPS趋势图【封装在一个事务中,可自行选择要显示的折线图】

请忽略比毕加索还抽象派的绘制趋势

其他监听器后续再进行补充……

 ============================================================

参数化

常用的参数化方式

1、借助自带的 函数助手 生成参数化

1)、生成随机数: __Random函数

2)、生成随机字符串:_RandomString

3)、从文件中读取 __CSVRead

!!!下图所示为以上三种的聚合:

注释:

1处意思为:在abc三个字符中随机生成长度为5的字符串

2处意思为:随机生成数字,范围为:1--12

3处意思为:读取a.txt文件中的数据;其后的0与线程组设置的线程数有关。假设a.txt中有三列数据,线程组设置为3才能都会分别取到

2、用户自定义变量

添加用户定义的变量:HTTP请求--添加--配置元件 --用户定义的变量

说明:“用户定义的变量”也可以添加在事务控制器下或者线程组下,视该配置元件的作用域而定

3、CSV Data Set Config

添加CSV Data Set Config :线程组--添加--配置元件-- CSV Data Set Config

 csv data set config参数化使用(一)

 csv data set config参数化使用(二)

 

posted @ 2016-04-05 13:51  韩凯1202  阅读(1877)  评论(0编辑  收藏  举报