头像
淇迹时刻
-- : -- : --
切换主题色
-- : -- : --

JMeter配置元件详解

最后更新于:

JMeter配置元件详解

一、配置元件概述

1.1 什么是配置元件

配置元件(Config Elements)是JMeter中为采样器提供默认配置的元件,用于设置请求的默认值、管理连接、处理Cookie等。

1.2 配置元件的作用

  • 设置默认值:为采样器设置默认参数
  • 管理连接:管理HTTP连接、数据库连接等
  • 处理Cookie:自动处理Cookie
  • 设置HTTP头:设置HTTP请求头
  • 缓存数据:缓存常用数据

1.3 配置元件执行顺序

1配置元件执行顺序:
21. 配置元件(按在测试计划树中的顺序)
32. 前置处理器
43. 定时器
54. 采样器
65. 后置处理器
76. 断言
87. 监听器

1.4 配置元件分类

类型配置元件名称说明
HTTP配置HTTP请求默认值、HTTP信息头管理器、HTTP Cookie管理器HTTP相关配置
数据库配置JDBC连接配置数据库连接配置
变量配置用户定义的变量、简单配置元件变量和配置管理
缓存配置缓存管理器数据缓存

二、HTTP请求默认值

2.1 添加HTTP请求默认值

1右键点击线程组 → Add → Config Element → HTTP Request Defaults

2.2 配置

1名称: HTTP请求默认值
2协议: http
3服务器名称或IP: localhost
4端口号: 8080
5路径: /api

2.3 参数说明

协议(Protocol)

1协议: http

选项

  • http:HTTP协议(默认)
  • https:HTTPS协议

服务器名称或IP(Server Name or IP)

1服务器名称或IP: localhost

说明:目标服务器的域名或IP地址。

端口号(Port Number)

1端口号: 8080

说明:目标服务器的端口号。HTTP默认80,HTTPS默认443。

路径(Path)

1路径: /api

说明:请求的默认路径前缀。

其他配置

参数说明
Content encoding请求内容编码,如UTF-8
Connect timeout连接超时时间(毫秒)
Response timeout响应超时时间(毫秒)

2.4 使用场景

 1测试计划结构示例:
 2测试计划
 3├── 线程组
 4│   ├── HTTP请求默认值
 5│   │   协议: http
 6│   │   服务器名称: localhost
 7│   │   端口号: 8080
 8│   │   路径: /api
 9│   ├── HTTP请求(获取用户列表)
10│   │   路径: /users(完整路径为 /api/users)
11│   └── HTTP请求(创建用户)
12│       路径: /users(完整路径为 /api/users)

效果:所有HTTP请求都会继承默认值,只需要填写路径部分。

三、HTTP信息头管理器

3.1 添加HTTP信息头管理器

1右键点击线程组 → Add → Config Element → HTTP Header Manager

3.2 配置

 1名称: HTTP信息头管理器
 2
 3信息头列表:
 4    名称: Content-Type
 5    值: application/json; charset=UTF-8
 6    
 7    名称: Accept
 8    值: application/json
 9    
10    名称: Authorization
11    值: Bearer ${token}

3.3 参数说明

名称(Name)

1名称: Content-Type

说明:HTTP头的名称。

值(Value)

1值: application/json; charset=UTF-8

说明:HTTP头的值。

3.4 常用HTTP头

名称说明
Content-Typeapplication/jsonJSON请求
Content-Typeapplication/x-www-form-urlencoded表单请求
Content-Typemultipart/form-data文件上传
Acceptapplication/json接受JSON响应
AuthorizationBearer tokenBearer认证
User-AgentMozilla/5.0用户代理
Refererhttp://example.com来源页面

3.5 使用场景

设置JSON请求头

 1测试计划结构示例:
 2测试计划
 3├── 线程组
 4│   ├── HTTP信息头管理器
 5│   │   ├── Content-Type: application/json; charset=UTF-8
 6│   │   └── Accept: application/json
 7│   └── HTTP请求(JSON接口)
 8│       方法: POST
 9│       路径: /api/users
10│       Body Data: {"username": "test", "password": "123456"}

设置认证头

1测试计划结构示例:
2测试计划
3├── 线程组
4│   ├── HTTP信息头管理器
5│   │   └── Authorization: Bearer ${token}
6│   ├── HTTP请求(登录)
7│   ├── JSON提取器(提取Token)
8│   └── HTTP请求(需要认证的接口)

四、HTTP Cookie管理器

4.1 添加HTTP Cookie管理器

1右键点击线程组 → Add → Config Element → HTTP Cookie Manager

4.2 配置

1名称: HTTP Cookie管理器
2清除每次迭代的Cookie: false
3策略: Standard

4.3 参数说明

清除每次迭代的Cookie(Clear cookies each iteration?)

1勾选: 清除每次迭代的Cookie

说明:如果勾选,每次线程迭代时清除所有Cookie。

策略(Policy)

1策略: Standard

选项

  • Standard:标准Cookie策略
  • Netscape:Netscape Cookie策略
  • RFC2965:RFC2965 Cookie策略
  • RFC2109:RFC2109 Cookie策略

Cookie列表

1名称: session_id
2值: abc123
3域: example.com
4路径: /
5过期时间: 

参数说明

参数说明
名称Cookie名称
Cookie值
Cookie适用的域名
路径Cookie适用的路径
过期时间Cookie过期时间

4.4 使用场景

自动处理Cookie

1测试计划结构示例:
2测试计划
3├── 线程组
4│   ├── HTTP Cookie管理器
5│   ├── HTTP请求(登录)
6│   └── HTTP请求(需要Cookie的接口)

效果:登录接口返回的Cookie会自动保存,并在后续请求中自动发送。

手动设置Cookie

1测试计划结构示例:
2测试计划
3├── 线程组
4│   ├── HTTP Cookie管理器
5│   │   ├── session_id: abc123
6│   │   └── user_token: def456
7│   └── HTTP请求(需要Cookie的接口)

五、JDBC连接配置

5.1 添加JDBC连接配置

1右键点击线程组 → Add → Config Element → JDBC Connection Configuration

5.2 配置

1名称: JDBC连接配置
2变量名: mysql_db
3JDBC驱动类: com.mysql.cj.jdbc.Driver
4JDBC URL: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
5用户名: root
6密码: password
7最大连接数: 10
8最小空闲连接数: 5
9连接超时时间: 10000

5.3 参数说明

变量名(Variable Name of Pool)

1变量名: mysql_db

说明:连接池的名称,JDBC请求和JDBC预处理器/后置处理器需要引用此名称。

JDBC驱动类(JDBC Driver Class)

1JDBC驱动类: com.mysql.cj.jdbc.Driver

常见数据库驱动类

数据库类型驱动类
MySQLcom.mysql.cj.jdbc.Driver
PostgreSQLorg.postgresql.Driver
Oracleoracle.jdbc.OracleDriver
SQL Servercom.microsoft.sqlserver.jdbc.SQLServerDriver
SQLiteorg.sqlite.JDBC

JDBC URL(JDBC URL)

1JDBC URL: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC

常见数据库JDBC URL格式

数据库类型URL格式
MySQLjdbc:mysql://host:port/database
PostgreSQLjdbc:postgresql://host:port/database
Oraclejdbc:oracle:thin:@host:port:SID
SQL Serverjdbc:sqlserver://host:port;databaseName=database
SQLitejdbc:sqlite:path/to/database.db

用户名(Username)

1用户名: root

说明:数据库用户名。

密码(Password)

1密码: password

说明:数据库密码。

最大连接数(Max Connections)

1最大连接数: 10

说明:连接池中最大连接数。

最小空闲连接数(Min Connections)

1最小空闲连接数: 5

说明:连接池中最小空闲连接数。

连接超时时间(Connection Timeout)

1连接超时时间: 10000

说明:连接超时时间(毫秒)。

5.4 前置条件

添加JDBC驱动

1将数据库驱动jar包复制到JMeter的lib目录下:
2- MySQL: mysql-connector-java-x.x.x.jar
3- PostgreSQL: postgresql-x.x.x.jar
4- Oracle: ojdbc-x.x.x.jar
5- SQL Server: mssql-jdbc-x.x.x.jar

5.5 使用场景

 1测试计划结构示例:
 2测试计划
 3├── 线程组
 4│   ├── JDBC连接配置
 5│   │   变量名: mysql_db
 6│   │   JDBC驱动类: com.mysql.cj.jdbc.Driver
 7│   │   JDBC URL: jdbc:mysql://localhost:3306/test
 8│   │   用户名: root
 9│   │   密码: password
10│   ├── JDBC请求(查询)
11│   │   变量名: mysql_db
12│   │   查询类型: Select Statement
13│   │   查询语句: SELECT * FROM users;
14│   └── JDBC请求(插入)
15│       变量名: mysql_db
16│       查询类型: Update Statement
17│       查询语句: INSERT INTO users (name) VALUES ('test');

六、用户定义的变量

6.1 添加用户定义的变量

1右键点击线程组 → Add → Config Element → User Defined Variables

6.2 配置

 1名称: 全局变量
 2
 3变量列表:
 4    名称: base_url
 5    值: http://localhost:8080
 6    
 7    名称: api_version
 8    值: v1
 9    
10    名称: timeout
11    值: 30000

6.3 参数说明

名称(Name)

1名称: base_url

说明:变量名称。

值(Value)

1值: http://localhost:8080

说明:变量的值。

6.4 使用场景

定义全局配置变量

 1测试计划结构示例:
 2测试计划
 3├── 用户定义的变量(测试计划级别)
 4│   ├── base_url = http://localhost:8080
 5│   ├── api_version = v1
 6│   └── environment = test
 7├── 线程组
 8│   ├── HTTP请求
 9│   │   服务器名称: ${base_url}
10│   │   路径: /${api_version}/users

定义测试数据变量

1测试计划结构示例:
2测试计划
3├── 线程组
4│   ├── 用户定义的变量
5│   │   ├── test_user_id = 1
6│   │   ├── test_user_name = testuser
7│   │   └── test_user_email = test@example.com
8│   └── HTTP请求(使用变量)

七、简单配置元件

7.1 添加简单配置元件

1右键点击线程组 → Add → Config Element → Simple Config Element

7.2 配置

1名称: 简单配置元件
2
3参数列表:
4    名称: custom_param
5    值: custom_value

7.3 参数说明

名称(Name)

1名称: custom_param

说明:参数名称。

值(Value)

1值: custom_value

说明:参数的值。

7.4 使用场景

1添加自定义配置参数,与用户定义的变量类似,但更灵活。

八、缓存管理器

8.1 添加缓存管理器

1右键点击线程组 → Add → Config Element → Cache Manager

8.2 配置

1名称: 缓存管理器
2最大缓存大小: 1000
3缓存超时时间: 300000(毫秒)

8.3 参数说明

最大缓存大小(Maximum Cache Size)

1最大缓存大小: 1000

说明:缓存的最大条目数。

缓存超时时间(Cache Timeout)

1缓存超时时间: 300000

说明:缓存条目过期时间(毫秒)。

8.4 使用场景

1缓存HTTP响应,避免重复请求相同的URL。

九、配置元件作用域

9.1 全局配置元件

1添加位置: 测试计划级别
2作用域: 所有线程组

9.2 线程组级别配置元件

1添加位置: 线程组级别
2作用域: 线程组内所有采样器

9.3 控制器级别配置元件

1添加位置: 控制器级别
2作用域: 控制器内所有采样器

9.4 采样器级别配置元件

1添加位置: 采样器级别
2作用域: 仅该采样器

十、实战案例

10.1 案例1:完整的HTTP接口测试配置

需求:测试用户管理系统的CRUD接口

配置步骤

  1. 创建线程组(50线程,循环5次)

  2. 添加HTTP请求默认值:

1协议: http
2服务器名称或IP: localhost
3端口号: 8080
4路径: /api/v1
  1. 添加HTTP信息头管理器:
1Content-Type: application/json; charset=UTF-8
2Accept: application/json
  1. 添加HTTP Cookie管理器

  2. 添加HTTP请求(登录):

1方法: POST
2路径: /auth/login
3Body Data:
4    {
5        "username": "admin",
6        "password": "admin123"
7    }
  1. 添加JSON提取器(提取Token):
1引用名称: token
2JSON路径表达式: $.data.token
  1. 添加HTTP信息头管理器(认证):
1Authorization: Bearer ${token}
  1. 添加HTTP请求(获取用户列表):
1方法: GET
2路径: /users
  1. 添加HTTP请求(创建用户):
1方法: POST
2路径: /users
3Body Data:
4    {
5        "username": "testuser",
6        "email": "test@example.com",
7        "password": "123456"
8    }
  1. 添加查看结果树和聚合报告

  2. 运行测试

10.2 案例2:数据库性能测试配置

需求:测试MySQL数据库的查询性能

配置步骤

  1. 下载MySQL驱动并复制到lib目录

  2. 创建线程组(100线程,循环10次)

  3. 添加JDBC连接配置:

1变量名: mysql_db
2JDBC驱动类: com.mysql.cj.jdbc.Driver
3JDBC URL: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
4用户名: root
5密码: password
6最大连接数: 20
7最小空闲连接数: 10
  1. 添加JDBC请求(查询用户列表):
1变量名: mysql_db
2查询类型: Select Statement
3查询语句: SELECT * FROM users WHERE status = 1 ORDER BY created_at DESC LIMIT 20;
  1. 添加JDBC请求(查询订单详情):
1变量名: mysql_db
2查询类型: Select Statement
3查询语句: SELECT o.*, u.name FROM orders o JOIN users u ON o.user_id = u.id WHERE o.id = ${__Random(1,1000)};
  1. 添加聚合报告

  2. 运行测试

10.3 案例3:环境配置切换

需求:通过变量切换测试环境

配置步骤

  1. 创建用户定义的变量(测试计划级别):
1environment: test
2base_url_test: http://test.example.com:8080
3base_url_prod: http://prod.example.com:8080
  1. 添加用户定义的变量(线程组级别):
1base_url: ${__eval(${base_url_${environment}})}
  1. 创建线程组(100线程,循环10次)

  2. 添加HTTP请求默认值:

1服务器名称或IP: ${base_url}
  1. 添加HTTP请求(测试接口)

  2. 添加聚合报告

  3. 运行测试

效果:通过修改environment变量,可以切换测试环境。

十一、常见问题

11.1 JDBC驱动找不到

回答

  • 将驱动jar包复制到JMeter的lib目录
  • 重启JMeter
  • 检查JDBC驱动类是否正确

11.2 HTTP信息头不生效

回答

  • 检查信息头管理器的作用域是否正确
  • 检查信息头名称和值是否正确
  • 检查是否有多个信息头管理器冲突

11.3 Cookie不生效

回答

  • 确保添加了HTTP Cookie管理器
  • 检查Cookie策略是否正确
  • 检查是否勾选了"清除每次迭代的Cookie"

11.4 配置元件优先级

回答:配置元件按照在测试计划树中的顺序从上到下执行,子级配置会覆盖父级配置。


下一章09-监听器详解.md

最新文章

本页导航