1. 测试计划
JMeter 中最顶层的根节点 。每一个 .jmx 文件都是一个测试计划。它定义了这个测试的全局属性,所有其他元件(线程组、取样器、监听器等)都必须放在它下面。
2. 线程(用户)
2.1 Open Model Thread Group
通过自定义数学公式精确控制压测模型的线程组。
2.2 setUp 线程组
最先执行,用于登录获取 token 、准备测试数据等
2.3 tearDown 线程组
最后执行,用于 清理数据 、 发送报告 、登出等
2.4 线程组
并发压测(可多个并行)
3. 配置元件
3.1 CSV数据文件设置
从 CSV 文件逐行读取测试数据,每行参数化一次请求,实现数据驱动测试。
3.2 HTTP信息头管理器
给 HTTP 请求统一或单独添加自定义请求头。
3.3 HTTP Cookie管理器
像浏览器一样自动接收和发送 Cookie,维护会话状态。
3.4 HTTP缓存管理器
模拟浏览器的 HTTP 缓存行为,对图片/CSS/JS 等静态资源只请求一次,后续从缓存取。
3.5 HTTP请求默认值
统一配置协议、服务器 IP、端口、路径前缀,让下游 HTTP 请求省略重复信息,一处改全局生效。
3.6 Bolt Connection Configuration
配置 Neo4j 图数据库的 Bolt 协议连接池,给 Bolt Sampler 提供连接。
3.7 DNS缓存管理器
控制 JMeter 的 DNS 解析缓存策略,模拟不同客户端 DNS 行为。
3.8 FTP默认请求
给 FTP 取样器提供统一默认配置(服务器、端口、用户名密码、传输模式)。
3.9 HTTP授权管理器
给需要认证的 HTTP 请求自动附加认证信息(Basic Auth、Digest Auth、Kerberos)。
3.10 JDBC Connection Configuration
配置数据库连接池,给 JDBC Request Sampler 提供连接,用于数据库压测。
3.11 Java默认请求
给 Java 请求取样器提供公共默认参数,让自定义 Java 测试类继承不必每次都重复写。
3.12 LDAP扩展请求默认值
给 LDAP 扩展请求取样器提供公共连接参数,统一配置目录服务器连接信息。
3.13 LDAP默认请求
旧版 LDAP 取样器的公共参数配置(功能类似 3.12,接口更简单)。
3.14 TCP取样器配置
给 TCP 取样器提供 TCP 连接公共参数(协议、超时、编码、行尾符等)。
3.15 密钥库配置
配置客户端 SSL/TLS 证书,让 JMeter 在双向认证(mTLS)场景中提供客户端证书。
3.16 用户定义的变量:
用于定义的变量
3.17 登陆配置元件/素简单配置元件
配置 JMeter HTTP 代理录制时自动提取并回放登录凭据(已过时,了解即可)。
3.18 计数器随机变量
生成自增序列号,每次引用自动 +1,用于构造唯一参数或模拟递增 ID。
4. 监听器
4.1 查看结果树
逐条查看每个请求的完整细节------发了什么、收到什么、耗时多少。调试神器,压测禁用。
4.2 汇总报告
表格化汇总统计,比聚合报告少几个分位数,简洁直观。
4.3 聚合报告
汇总统计的完整版,多了中位数和分位数,是压测结果的核心仪表盘。
4.4 后端监听器
实时将压测结果推送到时序数据库(InfluxDB、Graphite),配合 Grafana 搭建实时监控大屏。
4.5 JSR223监听器
用 Groovy 脚本对每条结果做自定义处理------告警、分类统计、写日志。
4.6 保存响应到文件
把指定请求的响应内容保存到本地文件,每条请求一个文件。
4.7 响应时间图
以折线图实时展示响应时间的变化趋势。
4.8 图形结果
以实时折线图同时展示吞吐量、响应时间、偏离度三条曲线。
4.9 断言结果
专门展示每个请求的断言通过/失败情况,只记录断言结果,不记录响应体。
4.10 比较断言可视化器
配合 Compare Assertion(比较断言) 使用,将两个取样器的响应并排对比展示。
4.11 汇总图
聚合报告的图表版,柱状图 + 折线图展示各接口的性能指标。
4.12 生成概要结果
在命令行模式 下,定期在控制台输出一行汇总统计。这是一个命令行专用监听器。
4.13 用表格查看结果
以表格形式列出每条请求的关键字段,支持排序和 CSV 导出。
4.14 简单数据写入器
把每条请求结果静默写入 JTL 文件(XML 或 CSV 格式),无 GUI 渲染,开销最小。
4.15 邮件观察仪
压测中超阈值自动发邮件告警
4.16 BeanShell监听器
用脚本自定义处理每条请求结果
5. 定时器
5.1 固定定时器
每次都等 N ms 简单控速、保护系统
5.2 统一随机定时器
0~N ms 均匀随机 模拟真人点击、消除规律性
5.3 准确的吞吐量定时器
泊松到达、 分钟级精确。 精准 TPS 基准测试、SLA 验证
5.4 常数吞吐量定时器
动态调延迟凑 QPS 日常压测、线程数可能不够
5.5 JSR223定时器
JMeter 中最灵活的定时器。用脚本(Groovy)动态计算每次请求前的等待时间。
当固定、随机、吞吐量定时器都不能满足你的节奏需求时,用 JSR223 定时器写 Groovy 脚本自由控制。
5.6 同步定时器
让多条线程在同一个位置停下来等待,凑够指定人数后一次性全部放行 ,制造出瞬时并发尖峰。必须放在目标请求的子节点下,不能放在线程组下,否则所有请求都会凑在一起乱套。
5.7 泊松随机定时器
按泊松分布 生成随机等待时间。泊松分布是描述"独立随机事件到达"的数学模型,最接近真实网络流量的到达规律------大部分请求密集到达,偶尔稀疏。
5.8 高斯随机定时器
按正态分布(高斯分布)生成随机等待时间。大部分值集中在均值附近,离均值越远出现概率越低。非常符合人的操作习惯------大多数时候以某个固定节奏操作,偶尔快一点或慢一点。
5.9 BeanShell定时器
用 BeanShell 脚本语言动态计算等待时间。功能上和 JSR223 定时器完全一样,但用 BeanShell 语法。
6. 前置处理器
6.1 JSR223预处理程序
Groovy 脚本自由处理 ,用于签名/加密/随机参数等
6.2 用户参数
为每条线程分配不同参数值
6.3 HTML链接解析器
自动提取页面链接和表单
6.4 HTTP URL重写修饰符
自动拼 jsessionid 到 URL
6.5 JDBC预处理程序
请求前执行 SQL,从数据库拿 token或造测试数据等
6.6 取样器超时
单个请求设超时,某个接口需要更短的超时时间时使用
6.7 正则表达式用户参数
正则批量提取参数,用于批量提取有规律的文本数据
6.8 BeanShell预处理程序
BeanShell脚本预处理
7. 后置处理器
7.1 CSS/JQuery提取器
用 CSS 选择器或 JQuery 语法从 HTML 响应中提取数据。
7.2 JSON JMESPath Extractor
用 JMESPath 查询语言从 JSON 响应中提取数据,支持比 JSONPath 更强大的过滤、管道、聚合操作。
7.3 JSON提取器
用 JSONPath 表达式从 JSON 响应提取数据,一个提取器可同时配多行拿多个字段。
7.4 正则表达式提取器
用正则表达式从任何文本格式的响应中提取数据,最通用。
7.5 边界提取器
用"左边界+右边界"截取文本,不需要写正则,最简单直观。
7.6 JSR223后置处理程序
用 Groovy 脚本在取样器执行后自由处理响应,能做任何代码能做的事。
7.7 JDBC后置处理程序
在取样器执行后运行 SQL 语句。记录测试审计日志到数据库、更新处理状态、清理临时数据。
7.8 XPath2 Extractor
用 XPath 2.0 表达式从 XML/XHTML 提取数据,比 1.0 多了正则、if-else、日期函数等。
7.9 XPath提取器
用 XPath 1.0 表达式从 XML/XHTML 提取数据
7.10 结果状态处理器
根据取样器结果(成功/失败/特定错误)控制测试流程。
7.11 调试后置处理程序
把当前线程所有变量和属性打印出来,在 View Results Tree 里查看。纯粹调试工具。
7.12 BeanShell后置处理程序
用 BeanShell 脚本在取样器后处理数据。
8. 断言
8.1 响应断言
最通用的断言,对响应体/响应头/状态码/请求数据等做字符串或正则匹配。
8.2 JSON断言
专门针对 JSON 响应,用 JSONPath 精确定位字段并校验其值或存在性。
8.3 大小断言
检查响应字节数是否在预期范围内。太大有异常,太小没数据。
8.4 JSR223断言
用 Groovy 脚本自定义断言逻辑,能做任何内置断言做不到的事。
8.5 XPath2 Assertion
用 XPath 2.0 表达式对 XML/XHTML 响应做断言,支持 Boolean/Node/Number/String 四种验证类型和高级函数。
8.6 HTML断言
用 JTidy 解析响应,检查 HTML 语法是否合法------标签是否闭合、属性格式是否正确、嵌套是否合理。只管格式,不管内容。
8.7 JSON JMESPath Assertion
用 JMESPath 查询语言断言 JSON 响应。比 JSONPath 更强的过滤、管道、聚合能力。
8.8 MD5Hex断言
计算响应的 MD5 哈希值,与预期哈希对比。用于验证返回内容是否完整、未被篡改。
8.9 SMIME断言
验证 S/MIME 签名邮件的数字签名是否有效。极少使用的安全邮件专用断言。
8.10 XMLSchema断言
根据 XSD(XML Schema Definition)文件校验 XML 响应的结构和数据类型是否合法------字段名对不对、类型对不对、必填字段有没有、嵌套层级对不对。
8.11 XML断言
用 JTidy 检查响应是否为格式良好的 XML------标签闭合、属性格式、转义字符等语法问题。只看格式,不看内容,不需要 XSD 文件。
8.12 XPath断言
用 XPath 1.0 表达式断言 XML/XHTML 响应,只支持 Boolean 类型(表达式返回 true/false)。
8.13 断言持续时间
检查取样器的响应耗时是否在允许范围内。超过指定毫秒数就标记失败。是验证 SLA 的最直接方式。
8.14 比较断言
比较两轮取样器结果是否一致。适用于幂等性测试、缓存一致性测试、回归测试。
8.15 BeanShell断言
用 BeanShell 脚本做断言。
9. 测试片段
9.1 测试片段
一个不参与执行 的容器。它不会像线程组那样主动跑,只能被
模块控制器或Include Controller引用后才执行。本质是一个可复用的请求模板块。
10. 非测试元件
10. 1HTTP代理服务器
内置的录制代理。浏览器通过它访问被测系统,JMeter 截获所有请求并自动生成测试脚本。不用手动一个个建 HTTP 请求。
10.2 HTTP镜像服务器
内置的回显服务器。收到什么请求,就把请求原样返回。用于调试------验证 JMeter 发出的请求到底长什么样。
10.3 属性显示
显示当前所有 JMeter 属性、系统属性、线程变量的值。
11. 逻辑控制器
11.1 IF控制器
根据条件表达式真假决定子节点是否执行。
11.2 事务控制器
把多个子请求打包成一个事务统计总量------聚合报告里只显示事务总耗时和总吞吐量,不显示子请求。
11.3 循环控制器
让子节点重复执行固定 N 次。
11.4 While控制器
只要条件为真就持续循环。条件留空时上一个取样器失败才停
11.5 ForEach控制器
遍历一组数字后缀命名的变量(
item_1item_2item_3),每次循环取一个放入输出变量。
11.6 Include控制器
把外部 .jmx 文件的全部内容嵌入当前位置执行。实现跨测试计划模块复用。路径可绝对可相对。被引用文件必须是独立可执行的测试计划。
11.7 Runtime控制器
控制子节点按时间运行而不是按次数。
11.8 临界部分控制器
保证子节点同一时刻只有 1 条线程在执行。相同锁名跨线程组也互斥,不同锁名各自独立。
11.9 交替控制器
每次执行只选一个子节点,按轮转顺序交替
11.10 仅一次控制器
每次执行只选一个子节点,按轮转顺序交替
11.11 录制控制器
配合 HTTP 代理服务器录制脚本时,自动存放捕获到的 HTTP 请求。
11.12 简单控制器
最基础的容器。没有任何逻辑控制,纯粹把子节点组织在一起
11.13 随机控制器
每次执行时随机选一个子节点来执行。
11.14 随机顺序控制器
把子节点全部执行一遍 ,但每次循环时随机打乱执行顺序。
11.15 吞吐量控制器
按百分比 或总数控制子节点的执行量。
11.16 Switch控制器
根据条件值选择执行哪一个子节点。
11.17 模块控制器
引用同一测试计划内某个控制器的整个子树来执行。和 Include 控制器不同,它引用的不是外部文件,而是当前测试计划中的某个已有节点。