如何发送具有不同数量有效负载元素的请求,同时在脚本末尾达到所有元素的期望平均值?

How to send requests with varying number of payload elements while reaching a desired average of all elements at the end of the script?

我需要在定义的持续时间内连续生成相同的 HTTP 请求,但在每个线程循环中主体中的对象数量随机变化(在 1-99 范围内),我的要求是在脚本的结尾,我应该得到 3 个这样的对象的计算平均值。所以我认为我需要以某种方式存储每个 HTTP 请求(在并发重负载下)的对象数量,然后在 运行 时间内影响这些对象的创建,以便我最终可以达到 3 个的目标脚本持续时间。

在 Jmeter 中,我有一个 HTTP 请求采样器,其中包含一些静态 XML 主体和一些变量,这些变量包含一个位置,我可以在其中插入动态生成的数据。为了动态数据生成,我有一个 JSR223 预处理器作为子元素。该预处理器具有可以根据 int 参数生成一个 XML 节点或更多节点的代码。如果我说我想创建 2 XML 个节点,我将该参数设置为 2。我可以创建 1 个或 99 个这样的节点。然后我将这个 XML 节点插入可变位置的 HTTP 请求采样器的正文有效负载中,在每个请求中。

我称之为 XML 节点的示例。在这个例子中,我有 3 个这样的节点。一个节点在标签之间:

  <object a='false' b='false' pReqID='ID00001'>
    <al ad='2021-09-20' alc='bla' bla='2021-09-20T11:00:00.000Z' sn='AB8912' />
    <doc docType='P' docId='555551555' name='Braiden' date='12/31/2022' />
  </object>
  <object a='false' b='false' pReqID='ID00002'>
    <al ad='2021-09-20' alc='bla' bla='2021-09-20T11:00:00.000Z' sn='AB8912' />
    <doc docType='P' docId='100000001' name='Dominique' date='12/10/2024' />
  </object>
  <object a='false' b='false' pReqID='ID00003'>
    <al ad='2021-09-20' alc='bla' bla='2021-09-20T11:00:00.000Z' sn='AB8912' />
    <doc docType='P' docId='100000002' name='Joyce' date='11/15/2025' />
  </object>

我的需要是每次在正文中生成具有不同 XML 节点的 HTTP 请求,但在脚本持续时间结束时,我应该以计算出的数量 3 结束。

我知道我可以执行一个 1 到 99 之间的随机函数来在每个 运行 的 HTTP 请求正文中生成随机节点,但我不知道如何控制平均节点数该脚本是 运行ning,因此当脚本结束时,我最终会收到一些已发送的样本,这些样本的内容节点应该在 1 到 99 之间变化,但平均而言,计算结果应该是 3.

例如,假设我用 2 个线程和 5 个循环发送了同一个 HTTP 请求,所以总共发送了 10 次,但是在这 10 次中,请求的主体包含 1、2、3、4、5 , 6, 7, 8, 9 和 10 XML 个节点。平均而言,这将是 5.5,但我不知道如何根据我对 JMeter 的要求来衡量和 control/influence 这个结果。

JMeter 如何检查每个请求的平均值和 control/influence 节点生成,以便在脚本具有 运行 一定持续时间(2 小时)后平均成为我想要的成为?

我认为这不可能,因为您不知道 2 小时内会发生多少次迭代。您可以非常接近 3,但如果调用次数波动,均值也会波动。

如果您从 2 小时执行切换到固定次数的迭代,您可以: