JMeter 的事务控制器是一个非常方便的工具,用于组织测试的不同部分并确定这些部分将如何出现在报告中。正如 Apache JMeter 的文档中所述:“事务控制器生成一个额外的样本,用于测量执行嵌套测试元素所花费的总时间。”

但这意味着什么?这个“额外样本”对您的 BlazeMeter 报告有什么影响?

如果您还不是非常熟悉这些功能,那么仅仅因为它是一个抽象的概念,可能会让人有点困惑。为了揭开这个话题的神秘面纱,我们将通过展示结果的各种示例来详细了解此功能,以准确了解它在不同场景中的行为。

这里讨论的所有内容都将围绕这个“生成父样本”的小复选框:

Creating a Basic JMeter Script

为了演示事务控制器及其父示例如何工作,让我们首先创建一个非常基本的 JMeter 脚本。 我们需要这个脚本包含在这个实验中的是:

  • A single Thread Group
  • A single Transaction Controller
  • Two HTTP Request samplers
  • A View Results Tree listener

将两个 HTTP 请求采样器放在事务控制器中,给每个采样器一个唯一的名称(我的是“标签 1”和“标签 2”),如下所示:

接下来,将每个采样器配置为只需点击 blazedemo.com:

事务控制器将为我们提供其中所有内容(我们的两个采样器)的执行时间,合并为一个“事务”。

让我们看看我们如何调整这个事务控制器来从测试报告中获得我们想要的。

Scenario 1: No Parent Sample

对于我们的第一个实验,我们将设置我们的事务控制器,以便通过确保“生成父样本”框未选中(禁用)来生成任何父样本:

保存测试计划,然后在执行测试时观察查看结果树侦听器。 注意我们的两个采样器是如何显示的:

我们看到了两个采样器,但有三个标签。 第三个标签是我们的“父样本”,即事务控制器本身。

不可避免的下一个问题当然是:我们不是禁用了生成父样本吗? 我们确实这样做了,因此父样本显示为附加的正常采样器,而不是实际的父样本。 别担心——当你看到第二个场景时,这会更有意义!

接下来,让我们在 BlazeMeter 中运行此测试,然后查看请求统计报告以了解标签的显示方式:

就像查看结果树一样,我们有三个标签,第三个代表事务控制器本身。

这是什么意思?

让我们回到 JMeter 文档的描述:“事务控制器生成一个额外的样本,用于测量执行嵌套测试元素所花费的总时间。”

换句话说,测试为两者生成了指标(平均响应、平均命中数/秒等):

事务控制器的各个内容(“标签 1”和“标签 2”)。
两个标签的组合;换句话说,从头到尾的完整“交易”,显示为第三项。

这很方便,因为它告诉我们事务控制器内所有内容的指标(包装起来就像是一个采样器),以及每个所述内容的指标。

结论:如果我们不启用父样本,则会报告整个交易和交易内容(子项)的指标。

Scenario 2: Generate Parent Sample

如果我们勾上:

脚本在其他方面保持不变; 我们只检查框,仅此而已。 再次保存测试计划,运行测试,并观察查看结果树监听器:

看看它是如何改变的? 我们现在只看到一个标签,我们可以点击它展开如下:

启用“生成父样本”选项现在只给我们一个标签而不是三个,它本身有两个子标签——我们的两个采样器。

父采样器现在显示为包含子采样器的父采样器,而不是单独显示为普通采样器。 因此,如果我们通过选中该框“生成父样本”,则意味着父样本将作为父样本出现在报告中,而不是作为第三个单独的项目。

将复选框视为“将父级视为报告中的实际父级”。 现在让我们看看请求统计报告是如何变化的:

一个标签——就是这样!

生成父样本意味着,出于报告目的,JMeter 将仅报告组合事务的指标; 它不会报告有关内容的详细信息。

结论:生成父样本将确保仅针对事务控制器的组合内容报告指标,而不针对其中的单个内容报告指标。

Advantages and Disadvantages of Generating a Parent Sample

您是否要生成父样本取决于您要为报告包含或排除的内容。考虑时请记住以下几点:

如果您的脚本有许多事务控制器,每个事务控制器中都有许多采样器,则生成父样本可以帮助整理报告。

生成父样本会使故障排除/调试变得不必要地困难。考虑到,在测试报告中,如果一个采样器失败,则整个事务控制器都将失败,因为所有内容都报告为一个标签。该报告不会指出哪个特定项目失败。因此,禁用父样本有助于识别故障点。

如果生成父采样器,测试报告会将事务控制器的内容视为“嵌入式资源”。 (这不仅适用于 BlazeMeter,而且适用于 JMeter 本身。)这是可以理解的误导。例如,如果您的测试遇到错误,您可能会发现由于事务控制器内的采样器失败而实际上发生的嵌入式资源的错误显示。这再次阻碍了故障排除,因此在查看任何此类错误时禁用生成父样本。

不生成父样本可能会扭曲某些指标的报告。

事务控制器生成一个额外的样本,用于测量执行嵌套测试元素所花费的总时间。

注意:选中“在生成的样本中包括定时器和前后处理器的持续时间”复选框时,时间包括控制器范围内的所有处理,而不仅仅是样本。

有两种操作模式:

(1) 在嵌套样本之后添加额外样本
(2) 附加样本被添加为嵌套样本的父级

生成的采样时间包括嵌套采样器的所有时间,不包括默认(自版本 2.11 起)计时器和前/后处理器的处理时间,除非选中复选框“在生成的示例中包含计时器和前后处理器的持续时间”。根据时钟分辨率,它可能比单个采样器加定时器的总和稍长。时钟可能会在控制器记录开始时间之后但在第一个样本开始之前滴答作响。最后同样如此。

生成的样本只有在它的所有子样本都成功时才被认为是成功的。

在父模式下,单个样本仍然可以在树视图侦听器中看到,但不再作为单独的条目出现在其他侦听器中。此外,子样本不会出现在 CSV 日志文件中,但可以保存到 XML 文件中。

在父模式下,可以将断言(等)添加到事务控制器。但是,默认情况下,它们将应用于单个样本和整个交易样本。要限制断言的范围,请使用简单控制器来包含示例,并将断言添加到简单控制器。父模式控制器当前不正确支持任一类型的嵌套事务控制器。

更多Jerry的原创文章,尽在:“汪子熙”:

jMeter Transaction Controller 学习笔记相关推荐

  1. ASP.NET Core分布式项目实战(Consent Controller Get请求逻辑实现)--学习笔记

    任务20:Consent Controller Get请求逻辑实现 接着上一节的思路,实现一下 ConsentController 根据流程图在构造函数注入 IClientStore,IResourc ...

  2. JMeter事务控制器(Transaction controller)

    JMeter事务控制器(Transaction controller) 事务控制器会产生一个额外的取样器(sampler),用来计算衡量它所包含的所有测试组件(比如包含2个http采样器)的总体时间. ...

  3. oracle in查询 一直等待,学习笔记:Oracle awr 分析解决inactive transaction branch等待事件...

    天萃荷净 通过Oracle AWR报告分析inactive transaction branch等待事件的原因 分析一份awr,发现不太熟悉的等待事件"inactive transactio ...

  4. JMeter学习笔记1-安装环境

    前面已经写完了JavaScript学习笔记系列,已经对JavaScript的基本语法完全掌握和知道如何用JavaScript编写第一个Selenium自动化测试脚本.我觉得已经达到了,了解和会Java ...

  5. Jmeter学习笔记

    接口测试 Jmeter 文章目录 1.Jmeter概述 1.1 Jmeter简介 1.2 Jmeter作用 1.3 Jmeter优点 1.4 Jmeter缺点 2.Jmeter环境搭建 2.1 Jme ...

  6. jmeter 学习笔记

    jmeter 学习笔记 察看结果树:JSON Path Tester.RegExp Tester(正则表达式).XPathTester.JSON JMESPath Tester.Document 断言 ...

  7. Jmeter学习笔记(八)——监听器元件之聚合报告

    1.聚合报告添加 聚合报告是常用的监听器之一,添加路径: 点击线程组->添加->监听器->聚合报告 2.聚合报告界面及说明 Label:请求的名称,就是我们在进行测试的httpreq ...

  8. SpringCloud(H版以及Alibaba版本)的学习笔记(三)

    本笔记学习自B站尚硅谷Springcloud时所记录 学习视频链接 源码地址[码云] 笔记内容包括了:Springcloud的H版以及Alibaba版本 H版具体内容包括:Eureka.Zookeep ...

  9. Spring Cloud 学习笔记(3 3)

    Spring Cloud 学习笔记(1 / 3) Spring Cloud 学习笔记(2 / 3) - - - 108_Nacos之Linux版本安装 109_Nacos集群配置(上) 110_Nac ...

最新文章

  1. SAP RETAIL初阶之商品主数据门店视图里没有WM数据
  2. 如何在div中将绝对定位的元素居中?
  3. 来入门一下kotlin吧
  4. 联想笔记本java环境变量_联想ThinkPad笔记本如何添加系统环境变量?
  5. 两平面平行但不重合的条件是_____「初一数学」平行线的判定与性质的综合应用...
  6. oracle 创建表空间_Oracle 创建和管理表
  7. Unity3D shader Blending
  8. 在 Mac 上的 Safari 浏览器中如何放大网页?
  9. otsu阈值分割算法原理_局部阈值分割算法总结
  10. 申论高分作者心得分享——站在政府的角度写申论
  11. euht网络登录_基于EUHT技术的城轨高速线路车地无线网络解决方案
  12. Lettuce之RedisClusterClient使用以及源码分析
  13. input标签只能输入数字
  14. 怎样找回html里收藏的文件夹,电脑浏览器收藏的网址重装后如何找回
  15. 二维码及验证码的生成
  16. C语言网上订餐系统设计报告,网上订餐系统总体设计与详细设0814121
  17. 菜鸟柳--23种设计模式初学记录笔记(二)装饰者设计模式
  18. 猿创征文 | 项目整合KafkaStream实现文章热度实时计算
  19. 阿里电商故障治理和故障演练实践
  20. 交换机组播风暴_【交换机】交换机如何配置storm-contro风暴控制

热门文章

  1. CentOs 中显示乱码问题
  2. SpringCloud之路由网关zuul(五)
  3. 2.5 隐藏委托关系
  4. 网络安全泡沫是否即将破灭?
  5. NUMA架构的CPU -- 你真的用好了么?
  6. 【转】测试架构师团队的管理
  7. 更新系统时跳过某个软件包
  8. 多线程异步处理:AsyncTask异步更新UI界面(详细完整总结篇)
  9. [收藏]61条面向对象设计的经验原则
  10. shop--10.商品--商品添加(前端)及问题的解决