蓝布编程网

分享编程技术文章,编程语言教程与实战经验

JMeter(接口、性能测试工具):测试计划元件图文详解

一、测试计划(Test Plan)

测试计划是 JMeter 脚本的根节点,所有其他元件均在此层级下配置。
核心功能

  • 定义全局参数(如用户变量、分布式测试配置)。
  • 管理测试脚本的模块化(通过 测试片段 和 模块控制器)。

二、线程组(Thread Group)

功能:模拟并发用户行为,控制负载模型。
关键参数

  • 线程数(Number of Threads):模拟的并发用户数。
  • Ramp-up Period(秒):逐步启动所有线程的时间。
  • 循环次数(Loop Count):每个线程执行测试计划的次数(勾选“无限”可持续运行)。

类型扩展(需安装插件):

  • Stepping Thread Group:阶梯式增加并发用户。
  • Ultimate Thread Group:自定义多阶段复杂负载。

场景示例

  • 模拟 100 用户登录系统,每秒启动 10 个用户,循环执行 5 次。

三、配置元件(Config Elements)

功能:设置全局参数或默认值,减少重复配置。
常用元件

元件名称

功能描述

应用场景

HTTP 请求默认值

定义 HTTP 请求的默认协议、服务器地址、端口等。

统一管理多个 API 的公共配置。

CSV 数据文件设置

从 CSV 文件中读取测试数据(如用户名、密码)。

参数化测试数据,实现数据驱动。

HTTP Cookie 管理器

自动管理 Cookie,模拟用户会话。

需要保持登录状态的场景。

JDBC 连接配置

配置数据库连接池,供 JDBC 请求使用。

数据库性能测试或数据验证。

示例配置

CSV 数据文件设置:
- 文件名:users.csv
- 变量名称:username,password

四、取样器(Samplers)

功能:发送具体请求到被测系统,模拟用户操作。
常用元件

元件名称

功能描述

应用场景

HTTP 请求

发送 HTTP/HTTPS 请求(GET/POST/PUT/DELETE)。

测试 RESTful API 或 Web 服务。

JDBC 请求

执行 SQL 查询或更新操作。

验证数据库性能或数据一致性。

FTP 请求

模拟文件上传或下载操作。

测试 FTP 服务器的传输性能。

JMS 发布/订阅

发送或接收 JMS 消息(需插件支持)。

测试消息中间件(如 ActiveMQ)。

示例配置

HTTP 请求:
- 协议:https
- 服务器名称:api.example.com
- 路径:/v1/login
- 参数:username=${username}, password=${password}

五、逻辑控制器(Logic Controllers)

功能:控制请求的执行逻辑,实现条件分支、循环等复杂流程。
常用元件

元件名称

功能描述

应用场景

循环控制器

循环执行子元件(如循环 10 次发送请求)。

重复执行某个操作集。

If 控制器

根据条件(如变量值或响应码)决定是否执行子元件。

动态跳过或执行特定步骤。

事务控制器

将多个请求合并为一个事务,统计整体性能指标。

分析多步骤操作的总耗时。

随机控制器

随机选择并执行一个子元件。

模拟用户随机操作路径。

示例配置

If 控制器:
- 条件:${JMeterThread.last_sample_ok}(上一个请求成功时执行)

六、前置/后置处理器(Pre/Post-processors)

功能:在发送请求前或处理响应后执行特定操作(如生成数据、提取变量)。
常用元件

元件名称

功能描述

应用场景

用户参数(Pre)

为每个线程生成独立变量(如用户 ID)。

多用户并发时的数据隔离。

正则表达式提取器(Post)

使用正则表达式从响应中提取数据(如 token)。

动态获取会话 ID 或验证码。

JSON 提取器(Post)

从 JSON 响应中提取字段值(如 $.data.userId)。

处理 REST API 返回的 JSON 数据。

示例配置

正则表达式提取器:
- 引用名称:token
- 正则表达式:"access_token":"(.+?)"
- 模板:$1$

七、断言(Assertions)

功能:验证响应是否符合预期,标记失败请求。
常用元件

元件名称

功能描述

应用场景

响应断言

检查响应内容、状态码或响应头。

验证接口返回结果正确性。

JSON 断言

验证 JSON 结构或字段值(如 $.success == true)。

确保 API 返回的 JSON 数据合法。

持续时间断言

检查请求响应时间是否超过阈值(如 2000ms)。

定位性能不达标的请求。

示例配置

响应断言:
- 测试字段:响应代码
- 模式匹配规则:等于
- 测试模式:200

八、监听器(Listeners)

功能:收集和展示测试结果,生成性能报告。
常用元件

元件名称

功能描述

应用场景

查看结果树

显示每个请求的详细请求/响应数据(调试用)。

检查单次请求的具体内容。

聚合报告

汇总平均响应时间、吞吐量、错误率等关键指标。

性能测试结果的整体分析。

响应时间图

绘制响应时间随时间变化的曲线图。

观察响应时间波动趋势。

PerfMon 监听器

监控服务器资源(CPU、内存、磁盘 IO)使用情况(需插件)。

关联系统资源与性能表现。

示例配置

聚合报告关键指标:
- 平均响应时间:150ms
- 吞吐量:200 req/sec
- 错误率:0.5%

九、定时器(Timers)

功能:控制请求之间的等待时间,模拟用户操作间隔。
常用元件

元件名称

功能描述

应用场景

固定定时器

设置固定延迟时间(如 1000ms)。

模拟用户固定的操作间隔。

高斯随机定时器

生成符合高斯分布的随机等待时间。

更贴近真实用户的随机行为。

同步定时器

阻塞线程直到达到指定并发数,再同时释放请求。

模拟瞬间高并发(如秒杀场景)。

示例配置

同步定时器:
- 模拟用户组的数量:50
- 超时时间:30000ms

十、元件协作流程图

Test Plan  
│  
├─ Thread Group(定义并发用户)  
│   ├─ Config Elements(全局配置)  
│   ├─ Logic Controllers(流程控制)  
│   │   ├─ Samplers(发送请求)  
│   │   ├─ Pre-processors(预处理)  
│   │   └─ Post-processors(后处理)  
│   ├─ Timers(控制请求间隔)  
│   └─ Listeners(收集结果)  
└─ Test Fragments(模块化元件)
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言