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 的原创文章,尽在:” 汪子熙 ”: