JMeter基础

目录

1. JMeter环境安装

1.1 安装JDK

1.2 安装JMeter

2. JMeter常用文件目录介绍

2.1 Bin目录

2.2 Docs目录

2.3 Printable_docs目录

2.4 Lib目录

3. JMeter元件

4. 元件的作用域和执行顺序

4.1 元件的作用域

4.2 元件的执行顺序

5. 线程组的特点和分类

5.1 线程组作用

5.2 线程组位置

5.3 线程组特点

5.4 线程组分类

6. 线程组参数详解

7. HTTP请求参数介绍

7.1 HTTP请求的作用

7.2 HTTP请求的位置

7.3 HTTP请求的参数

8. 查看结果树

8.1 查看结果树的作用

8.2 查看结果树位置

8.3 查看结果树组成

9. JMeter参数化

9.1 参数化定义

9.2 参数化形式1:用户定义的变量

9.3 参数化形式2:用户参数

9.4 参数化形式3:CSV文件

9.5 参数化形式4:函数(_counter)

10. JMeter断言

10.1 响应断言

10.2 JSON断言

10.3 断言持续时间

11. JMeter关联

11.1 正则表达式提取器

11.2 XPath提取器

11.3 JSON提取器

11.4 JMeter 属性

12. JMeter直连数据库

12.1 连接数据库配置

12.2 配置数据库连接信息

12.3 添加JDBC请求

13. JMeter逻辑控制器

13.1 如果(IF)控制器

13.2 循环控制器

13.3 ForEach控制器

14.JMeter定时器

14.1同步定时器

14.2常数吞吐量定时器

14.3固定定时器


1. JMeter环境安装
1.1 安装JDK

下载-->安装-->配置环境变量-->校验

1.2 安装JMeter

下载-->安装-->配置环境变量-->启动验证

2. JMeter常用文件目录介绍
2.1 Bin目录

存放可执行文件配置文件

2.2 Docs目录

是JMeter的api文档,用于开发扩展组件

2.3 Printable_docs目录

用户帮助手册

2.4 Lib目录

存放JMeter依赖的jar包和用户扩展所依赖的jar包

3. JMeter元件

取样器:发送请求

逻辑控制器:控制语句的执行顺序

前置处理器:对请求参数进行预处理

后置处理器:对应响应结果进行提取

断言:检测接口的返回结果是否与预期结果一致

定时器:设置等待

测试片段:封装一段代码,供其他脚本调用

配置元件:测试数据的初始化配置

监听器:查看JMeter脚本的运行结果

4. 元件的作用域和执行顺序
4.1 元件的作用域

是靠测试计划的树形结构中元件的父子关系来确定的。

4.2 元件的执行顺序

配置元件-->前置处理程序-->定时器-->取样器-->后置处理器-->断言-->监听器

5. 线程组的特点和分类
5.1 线程组作用

线程组就是控制Jmeter用于执行测试的一组用户

5.2 线程组位置

右键点击、测试计划’ --> 添加 -> 线程(用)--> 线程组

5.3 线程组特点

(1)模拟多人操作

(2)线程组可以添加多个,多个线程组可以并行或串行

(3)取样器 (请求)和逻辑控制器必须依赖线程组才能使用

5.4 线程组分类

普通线程组:

普通的、常用的线程组,可以看做一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户

setUp线程组:

种特殊类型的线程组,可用于执行预测试操作

tearDown线程组:

一种特殊类型的线程组,可用于执行测试后工作

6. 线程组参数详解

7. HTTP请求参数介绍
7.1 HTTP请求的作用

向服务器发送http及https请求

7.2 HTTP请求的位置

选中线程组->右键->添加->取样器->HTTP请求

7.3 HTTP请求的参数

8. 查看结果树
8.1 查看结果树的作用

查看HTTP请求的请求和响应结果

8.2 查看结果树位置

选中测试计划/线程组->右键->添加->监听器->察看结果树

8.3 查看结果树组成

取样结果:查看响应信息头信息、响应状态码

请求:查看请求相关信息 (ur1、方法、参数)

响应:查看响应信息

9. JMeter参数化
9.1 参数化定义

把测试数据组织起来,用不同的测试数据调用相同的测试方法。

9.2 参数化形式1:用户定义的变量

作用: 定义全局变量

位置:测试计划 --> 线程组--> 配置元件 --> 用户定义的变量

参数:

9.3 参数化形式2:用户参数

作用: 针对同一组参数,当不同的用户来访问时,可以获取到不同的值

位置: 测试计划 -->线程组--> 前置处理器 --> 用户参数

参数:

9.4 参数化形式3:CSV文件

作用:让不同用户在多次循环时,可以取到不同的值

位置: 测试计划 --> 线程组--> 配置元件 --> CSV 数据文件设置

参数:

9.5 参数化形式4:函数(_counter)

作用:计数函数,一般做执行次数统计使用

位置:在菜单中选择--> 选项 --> 函数助手对话框

设置:TRUE,每个用户有自己的计数器;EALSE,使用全局计数器

Name of variable in which to store the result (optional):用于存储结果的变量名(可选)

10. JMeter断言

断言:让程序自动判断预期结果和实际结果是否一致

提示:

- JMeter在请求的返回层面有个自动判断机制 (响应状态码)

-但是请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性

JMeter中常用断言:

- 响应断言

-JSON断言

-持续时间断言(Duration Assertion)

10.1 响应断言

作用:对HTTP请求的任意格式的响应结果进行断言

位置:测试计划 --> 线程组--> HTTP请求-->(右键添加)断言 -->响应断言

测试字段: 要检查的项(实际结果)

- 响应文本:来自服务器的响应文本,即主体

- 响应代码: 响应的状态码,例如:200

- 响应信息: 响应的信息,例如: OK

- Response Headers:响应头部

- Request Headers: 请求头部

- Request Data: 请求数据

- URL样本:请求URL

- Document(text): 响应的整个文档

- 忽略状态:忽略返回的响应状态码

模式匹配规则:比较方式

- 包括:文本包含指定的正则表达式

- 匹配:整个文本匹配指定的正则表达式

- Equals: 整个返回结果的文本等于指定的字符串(区分大小写

- Substring: 返回结果的文本包含指定字符串(区分大小写

- 否: 取反

- 或者:如果存在多个测试模式,勾选代表逻辑或(只要有一个模式匹配,则断言就是OK) ,不勾选代表逻辑与 (所有都必须匹配,断言才是OK)

- 注意: Equals和substring模式是普通字符串,而包括和匹配模式是正则表达式

测试模式:预期结果

- 即填写你指定的结果 (可填写多个),按钮[添加]、[删除]是进行指定内容的管理

10.2 JSON断言

作用:对HTTP请求的JSON格式的响应结果进行断言

位置: 测试计划 -->线程组--> HTTP请求 --> (右键添加) 断言 --> JSON断言

参数介绍

- Assert JSON Path exists: 用于断言的JSON元素的路径 (实际结果)

- Additionally assert value:如果你想要用某个值生成断言,请选择复选框

- Match as regular expression: 使用正则表达式断言

- Expected Value: 期望值 (期望结果)

- Expect null:如果希望为空,请选择复选框

- Invert assertion will fail if above conditions met):反转断言(如果满足以上条件则失败)

10.3 断言持续时间

作用:检查HTTP请求的响应时间是否超出要求范围

位置:测试计划-->线程组-->HTTP请求-->(右键添加)断言-->断言持续时间

参数介绍:

- 持续时间 (毫秒) :HTTP请求允许的最大响应时间 (单位: 毫秒)。超过则认为失败

11. JMeter关联

关联:当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。

JMeter中常用的关联方法:

- 正则表达式提取器

- XPath提取器

- JSON提取器

11.1 正则表达式提取器

万能正则表达式提取公式:(.*?)

作用:针对任意格式的响应数据进行提取

位置:测试计划-->线程组-->HTTP请求-->(右键添加)后置处理器-->正则表达式提取器

参数介绍:

- 引用名称:存放提取出的值的参数名称,供下一个请求引用,如填写title,则可用${title)引用它

- 正则表达式

        () : 括起来的部分就是要提取的

        . : 匹配任何字符串

        + : 一次或多次

        ? : 不要太贪婪,在找到第一个匹配项后停止

- 模板:用$$引用起来,如果在正则表达式中有多个提取值,则可以是$2$$3$等等,表示解析到的第几个值给title。如: $1$表示解析到的第1个值

- 匹配数字:0代表随机取值,-1代表全部取值,1代表取第一个值

- 缺省值: 如果参数没有取得到值,那默认给一个值让它取。

11.2 XPath提取器

作用:针对HTML格式的响应结果数据进行提取

位置:添加方式:测试计划-->线程组-->HTTP请求-->(右键添加)后置处器--> XPath提取器

参数介绍:

- Use Tidy (tolerant parser) :

- 当需要处理的页面是HTML格式时,必须选中该选项

- 当需要处理的页面是XML或XHTML格式时,取消选中该选项。

- 引用名称: 存放提取出的值的参数名称

- xPath Query:用于提取值的XPath表达式

- 匹配数字: 如果xPath路径查询出许多结果,则可以选择提取哪个。0: 表示随机,-1: 表示提取所有结果,1表示第一个值

- 缺省值参数的默认值

11.3 JSON提取器

作用针对JSON格式的响应结果数据进行提取

位置添加方式:测试计划-->线程组-->HTTP请求-->(右键添加)后置处理器--> JSON提取器

参数介绍

- Names of created variables存放提取出的值的参数名称

- JSON Path ExpressionsJSON路表达式

- Match No:如果JSON路径配出许多结果,则可以选择提取哪个。0:表示随机,-1: 表示提取所有结果,1表示第一个值

- Default Values参数的默认值

11.4 JMeter 属性

定义:JMeter属性其实就是编程中的全局变量的概念,用于跨线程组传递参数

操作步骤:

1.添加线程组1

2.添加HTTP请求1

3.添加JSON提取器

4.添加BeanShell取样器 (将JSON提取器提取的值保存为JMeter属性),使用_setProperty函数

5.添加HTTP请求2(读取JMeter属性)能,使用_property函数

6.设置测试计划为串行执行

12. JMeter直连数据库
12.1 连接数据库配置

添加MySOL驱动iar包

方式一:在测试计划面板点击”浏览..."按钮,将你的DBC驱动添加进来

方式二:将MySOL驱动jar包放入到lib/ext目录下,重启JMeter

12.2 配置数据库连接信息

添加方式: 测试计划 -->线程组--> (右键添加)配置件 --> JDBC Connection Configuration

参数介绍:

Variable Name: mysql数据库连接池名称 (JDBC请求时要用)

Database URL: jdbc:mysql://localhost:3306/tpshop2.0

组成:协议 + 数据库IP + 数据库端口 + 连接的数据库名称

JDBC DRIVER class: com.mysql.jdbc.Driver (MySQL驱动包位置固定格式一下拉框选择)

Username: root (连接数据库用户名,如实填写)

Password:123456 (连接数据库密码,如实填写)

12.3 添加JDBC请求

添加方式:测试计划 --> 线程组--> 取样器 --> JDBC Request

参数介绍:

variable Name: 数据库连接池的名字,需要与JDBC Connection Configuration的variable Name Bound Pool名字保持一致

Query Type:

查询操作:选择Select Statement

增加、删除、修改操作: 选择update statement

Query: 填写的SQL语句,未尾不要加“;”

variable names:保存SOL语句返回结果的变量名

13. JMeter逻辑控制器
13.1 如果(IF)控制器

作用: if控制器用来控制它下面的测试元素是否运行

位置: 测试计划-->线程组-->(右键添加)逻辑控制器-->如果(if)控制器

JS语法形式:

函数形式:

13.2 循环控制器

作用: 通过设置循环次数,来实现循环发送请求

位置: 测试计划-->线程组-->(右键添加)逻辑控制器-->循环控制器

13.3 ForEach控制器

作用:一般和用户自定义变量或者正则表达式提取器一起使用,读取返回结果中一系列相关 的变量。

该控制器下的取样器都会被执行一次或多次,每次读取不同的变量值。

位置:测试计划-->线程组-->(右键添加)逻辑控制器--> ForEach控制器

参数介绍:

输入变量前缀:要读取的输入变量的固定前缀

开始循环字段:要读取的输入变量后缀数字的最小值-1

结束循环字段:要读取的输入变量后缀数字的最大值

输出变量名称:读取输入变量的值后保存的新变量名,用于后续HTTP请求来引用

14.JMeter定时器
14.1同步定时器

同步定时器: 阻塞线程(累积一定的请求),当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起释放,瞬间产生很大的压力。

位置:测试计划-->线程组-->HTTP请求-->(右键添加)定时器-->Synchronizing Timer

参数介绍:

Number of simulated Users to Group by: 模用户的数量,即指定同时释放的线程数数量。

- 若设置为0,等于设置为线程组中的线程数量

Timeout in milliseconds: 超时时间,即超时多少毫秒后同时释放指定的线程数

- 如果设置为0,该定时器将会等待线程数达到了设置的线程数才释放,若没有达到设   置的线程数会一直死等。

- 如果大于0,那么如果超过Timeout in milliseconds中设置的最大等待时间后还没达到设置的线程数Timer将不再等待,释放已到达的线程,默认为0。

14.2常数吞吐量定时器

作用:让JMeter按指定的吞吐量执行,以每分钟为单位

位置:测试计划-->线程组-->HTTP请求-->(右键添加)定时器--Constant Throughput Timer

参数介绍:

Target throughput (in samples per minute):目标吞吐量。注意这里是每个用户每分钟发送的请求数

14.3固定定时器

位置:测试计划-->线程组-->HTTP请求-->(右键添加)定时器--固定定时器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值