当前位置: 首页 > 后端技术 > Java

jMeterTransactionController学习笔记

时间:2023-04-02 01:06:15 Java

JMeter的TransactionController是一个非常方便的工具,用于组织测试的不同部分并确定这些部分将如何出现在报告中。正如ApacheJMeter的文档中所述:“事务控制器生成一个额外的样本,用于测量执行嵌套测试元素所花费的总时间。”但是,这是什么意思?这个“额外样本”如何影响您的BlazeMeter报告?如果您还不是很熟悉这些功能,可能会有点困惑,因为它是一个抽象概念。为了揭开这个话题的神秘面纱,我们将通过展示各种结果示例来详细研究这个函数,以准确了解它在不同场景中的行为方式。这里讨论的所有内容都将围绕这个小的“生成父样本”复选框:创建基本JMeter脚本为了演示事务控制器及其父样本如何工作,让我们首先创建一个非常基本的JMeter脚本。我们需要这个脚本在这个实验中包含的是:一个线程组一个事务控制器两个HTTP请求采样器一个查看结果树监听器在事务控制器中放置两个HTTP请求采样器,给每个采样器一个唯一的名称(我的是“标签1”和“标签2”)如下:接下来,配置每个采样器只需点击blazedemo.com:事务控制器将给我们所有的(我们的两个采样器),组合成一个“事务”。让我们看看我们如何调整这个事务控制器来从测试报告中得到我们想要的。场景1:没有父样本对于我们的第一个实验,我们将设置我们的事务控制器,以便通过确保未选中(禁用)“生成父样本”框来生成没有父样本:保存测试计划,然后执行Watch测试时查看结果树监听器。注意我们的两个采样器是如何显示的:我们看到两个采样器,但是三个标签。第三个选项卡是我们的“父样本”,即事务控制器本身。不可避免的下一个问题当然是:我们没有禁用生成父样本吗?我们确实做到了,以便父样本显示为附加的普通采样器,而不是实际的父样本。别担心-当您看到第二个场景时,它会更有意义!接下来,让我们在BlazeMeter中运行此测试,然后查看请求统计报告以了解选项卡的显示方式:就像查看结果树一样,我们有三个选项卡,第三个选项卡代表事务控制器本身。这是什么意思?让我们回到JMeter文档的描述:“事务控制器生成一个额外的样本,用于测量执行嵌套测试元素所花费的总时间。”换句话说,测试为两者生成指标(平均响应、平均点击/秒等):事务控制器的各个内容(“标签1”和“标签2”)。两个选项卡的组合;换句话说,从开始到结束的完整“交易”,显示为第三项。这很方便,因为它告诉我们事务控制器(像采样器一样包装)内所有内容的指标,以及每个所述事物的指标。结论:如果我们不启用父样本,则会报告整个交易和交易内容(子)的指标。场景2:生成父样本如果我们勾选:脚本否则保持不变;我们只需选中该框即可。再次保存测试计划,运行测试,然后观察ViewResultsTree侦听器:看看它有何变化?我们现在只看到一个选项卡,我们可以单击它展开如下:启用“生成父样本”选项现在只给我们一个选项卡而不是三个,它本身有两个子选项卡-我们的两个采样器。父采样器现在显示为包含子采样器的父采样器,而不是单独显示为普通采样器。因此,如果我们通过选中该框来“生成父样本”,这意味着父样本将作为父样本出现在报告中,而不是作为第三个单独的项目。将复选框视为“在报告中将父级视为实际父级”。现在让我们看看请求统计报告是如何变化的:一个选项卡-就是这样!生成父样本意味着,出于报告目的,JMeter将仅报告组合事务的指标;它不会报告有关内容的详细信息。结论:生成父样本将确保仅报告事务控制器的组合内容的指标,而不报告其中的单个内容。生成父样本的优点和缺点是否要生成父样本取决于您要为报告包含或排除的内容。在考虑时,请记住以下几点:如果您的脚本有许多事务控制器,每个事务控制器中有许多采样器,生成父样本可以帮助组织您的报告。生成父样本会使故障排除/调试变得不必要的困难。考虑一下,在测试报告中,如果一个采样器失败,则整个事务控制器将失败,因为所有内容都报告为一个标签。该报告不会指出哪个具体项目失败了。因此,禁用父样本有助于识别故障点。如果生成父采样器,测试报告会将事务控制器的内容视为“嵌入式资源”。(这不仅适用于BlazeMeter,也适用于JMeter本身。)这是可以理解的误导。例如,如果您的测试遇到错误,您可能会发现嵌入式资源的错误显示实际上是由于事务控制器内的采样器失败而发生的。这再次阻碍了故障排除,因此在查看任何此类错误时禁用生成父样本。不生成父样本可能会扭曲某些指标的报告。事务控制器生成一个附加样本,用于测量执行嵌套测试元素所花费的总时间。Note:Whenthe"Includedurationsoftimersandpre-andpost-processorsingeneratedsamples"checkboxisselected,thetimesincludeallprocessingwithinthescopeofthecontroller,notjustthesamples.有两种操作模式:(1)在嵌套样本之后添加额外样本(2)添加额外样本作为嵌套样本的父样本2.11)计时器和预/后处理器处理时间,除非复选框“包括计时器和生成样本中的前/后处理器持续时间”被选中。根据时钟分辨率,它可能比单个采样器加定时器的总和稍长。时钟可能会在控制器记录开始时间之后但在第一个样本开始之前滴答作响。最后也一样。生成的样本只有在其所有子样本都成功时才被认为是成功的。在父模式下,单个样本在树视图侦听器中仍然可见,但不再作为单独的条目出现在其他侦听器中。此外,子样本不会出现在CSV日志文件中,但可以保存到XML文件中。在父模式下,可以将断言(等)添加到事务控制器。但是,默认情况下,它们将应用于单个样本和整个交易样本。要限制断言的范围,请使用简单控制器来包含示例并将断言添加到简单控制器。父模式控制器当前不正确支持任一类型的嵌套事务控制器。更多Jerry原创文章在这里:《王子熙》: