处理器 JMeter:预处理器和后处理器

处理器 Apache JMeter 是一个测试计划元素,用于修改其作用域内的采样器。它会自动运行,要么在请求离开之前运行,要么在请求离开之前运行。 JMeter 或者在收到响应后立即执行,这使其成为处理动态数据的主要机制。 性能测试.
有两种类型的处理器:
- 预处理器
- 后处理器
作用域决定了处理器的探测范围。直接放置在……下方的处理器 测试计划 或者说,线程组会影响其下的所有采样器,而嵌套在单个采样器内的处理器仅影响该请求。理解这条规则可以避免本页故障排除部分所述的配置错误。
预处理器
预处理器执行一些操作 before 提出采样器请求。
考虑一个简单的例子:假设你想要 JMeter 通过被测网站进行“爬取”, 解析 链接(检查页面上的所有链接)和 回报 HTML。您可以在创建 HTTP 请求之前向控制器添加一些操作,例如“HTML 链接解析器”。
上图显示了位于控制器和传出请求之间的预处理器。由于它首先运行,因此是构建请求数据的正确位置:生成时间戳、从 CSV 列读取值、将会话标识符重写到请求体中。 URL或者为每个虚拟用户分配不同的凭证。
后处理器
后处理器在发出采样器请求后执行一些操作。
考虑一个简单的例子: JMeter 向被测 Web 服务器发送 HTTP 请求(等等 www.google.com)并获取响应。你想要 JMeter 如果服务器响应错误,则停止测试。您可以使用后处理器按如下方式执行上述任务:
如第二个图所示,后处理器在采样器完成后读取响应。这也是相关性分析的标准方法。当服务器返回每次运行都会改变的令牌、会话 ID 或订单号时,后处理器会将该值捕获到…… JMeter 变量,以便下一个采样器可以重用它。
预处理器的类型 JMeter
Apache JMeter 它配备了一套精简的预处理器。每个预处理器都以不同的方式准备采样器,因此选择正确的元素可以确保测试计划清晰易读且易于维护。
- 示例超时: 定义请求的最大持续时间。任何运行时间超过配置值的采样器都将被标记为失败。
- 用户参数: 为每个虚拟用户分配特定的变量值,以便每个线程发送自己的数据集。
- HTML链接解析器: 爬取被测页面,解析找到的链接,并将它们传递给以下 HTTP 请求。
- HTTP URL 重写修饰符: 将会话标识符注入到 URL 适用于以下应用 track 个不使用 cookie 的会话。
- 正则表达式用户参数: 使用从先前响应中捕获的正则表达式的值填充请求参数。
- JDBC 预处理器: 在采样器之前运行 SQL 语句,这对于填充或重置数据库记录非常有用。
- JSR223 预处理器: 执行一个 Groovy or Java 用于任何自定义预处理逻辑的脚本。它取代了旧版的 BeanShell 预处理器,并且在负载下性能显著提升。
💡提示: 建议使用 JSR223 预处理器 Groovy 基于 BeanShell 的语言。 Groovy 脚本经过编译和缓存,因此当数千个线程并行运行时,它们消耗的 CPU 资源要少得多。
后处理器的类型 JMeter
后处理器分为两类:例如trac处理程序从采样器中提取值,并对采样器的结果做出反应。下表将每个元素映射到最适合的响应格式。
| 后处理器 | 最适合 | 典型用途 |
| 正则表达式示例trac器 | 任何文本回复 | 从 HTML 和纯文本中捕获令牌或 ID |
| 边界trac器 | 任何文本回复 | 使用左右边界而不是完整的正则表达式来捕获值 |
| JSON 示例trac器 | JSON 响应 | 在读取 REST 有效负载中的字段期间 API测试 |
| CSS/jQuery 示例trac器 | HTML响应 | 使用 CSS 选择器选择元素 |
| XPath 示例trac器 | XML 和 XHTML 响应 | 浏览结构化文档树 |
| JDBC 后处理器 | 数据库结果 | 请求后验证或清理行 |
| JSR223 后处理器 | 任何回应 | 自定义脚本解析和断言 |
| 结果状态操作处理程序 | 任何回应 | Stop 停止ping 当采样器失败时,线程或整个测试都会失败。 |
边界trac托尔抵达 JMeter 4.0 版本通常是最快的输入方式,因为它只需要输入值左右两侧的文本。正则表达式 Extrac当响应之间的周围标记发生变化时,tor 仍然是更灵活的选择。
预处理器和后处理器的区别
这两个元素遵循相同的作用域规则,但却解决相反的问题。下面的比较总结了它们之间的区别,然后再给出示例。
| 参数 | 预处理器 | 后处理器 |
| 执行时间处理时间 | 在采样器发送请求之前运行 | 在采样器收到响应后运行 |
| 主要目的 | 准备和修改请求数据 | 读取响应数据并做出相应反应 |
| 典型元素 | 用户参数、HTML链接解析器、JSR223预处理器 | 正则表达式示例tractor,JSON Extractor,结果状态操作处理程序 |
| 对流动的影响 | 无法停止测试,只能修改请求。 | 可以停止线程或整个测试运行 |
| 共同的目标 | 参数化 | 相关性和误差处理 |
实际上,这两者是协同工作的。后置处理器从登录响应中捕获会话令牌,而前置处理器在下一个请求中,在发送调用之前注入该令牌。下面的示例演示了该模式中的后置处理器部分。
后处理器示例
本教程将逐步向您展示如何使用后处理器 JMeter.让我们从简单的测试脚本开始。
- JMeter 向被测 Web 服务器发送 HTTP 请求 www.google.com.
- JMeter 收到来自 Google 服务器。
- 如果服务器响应 一个错误, JMeter 将 停止 考试。
- 如果服务器响应 OK (没有错误), JMeter 将 继续 考试。
这里是 路线图 本例中:
前提:
We 再利用 文章中的步骤 1 和步骤 2 JMeter 性能测试。 如果 JMeter 尚未安装,请按照以下步骤操作 JMeter 安装指南 隐形价值。
步骤1)添加线程组
上点右键 测试计划 并添加一个新的线程组: 添加 -> 主题(用户) -> 线程组
但是在线程组控制面板中,输入线程属性如下:
此设置允许 JMeter 创建信息图 10 用户请求 http://www.google.com 10 倍。
步骤2)添加 JMeter 分子
- 添加 HTTP 请求默认值
- 添加 HTTP 请求
我们仍然 JMeter 发送请求 http://www.google.com 至 Google 服务器。
步骤 3)添加后处理器元素
右击 线程组 -> 添加 -> 后处理器 -> 结果状态操作处理程序
结果状态操作处理程序 如果用户请求失败,允许用户停止线程或整个测试。
在结果状态操作处理窗格中,选择 立即停止测试. 如果出现以下情况,此选项将停止测试 JMeter 从服务器响应中获取错误。
步骤 4)配置 HTTP 请求
打开 HTTP 请求面板。输入 “ abc” 到路径字段。
当您输入 “ abc” 到路径, JMeter 会创造一个 URL 请求 Google 服务器:http://www.google.com/abc。 URL 不存在 Google 服务器。它是 错 URL 请求如此 Google 服务器将返回错误。
步骤 5)添加查看结果树
右击 线程组 -> 添加 -> 倾听者 -> 查看结果树
步骤 6)运行测试
选择查看结果树,按菜单栏上的运行按钮。您将看到 错误 回复 Google 服务器和测试将停止 没有 完成100个线程。
现在回到第 4 步,打开 HTTP 请求窗格,输入“日历”到窗格。这使得 JMeter 创建信息图 URL 请求 https://calendar.google.com/calendar/u/0/r 以及 Google 服务器。这是 正确 URL 请求如此 Google 服务器将返回 OK(无错误)。
选择查看结果树,按菜单栏上的运行按钮。您将看到 OK 回复 Google 服务器将持续运行测试,直到所有 100 个线程都完成为止。
添加一个 断言 与结果状态操作处理程序一起,检查会更加严格,因为断言可能会使返回 HTTP 200 但提供了错误内容的采样器失败。
故障排除
如果您在运行上述场景时遇到问题……请执行以下操作:
- 检查您是否通过代理连接到互联网。如果是,请删除代理。
- 打开Jmeter的一个新实例
- 打开 处理器测试计划.jmx 在Jmeter中
- Double-单击线程组->查看结果树
- 运行测试
如果后处理器看起来没有任何作用,请先检查它的位置。放置在其目标采样器作用域之外的后处理器永远不会运行,这是导致输出为空的最常见原因。tracted 变量。相关元素,例如 控制器 和 分布式测试 遵循相同的作用域逻辑。









.gif)

.gif)