【问题标题】:Jmeter conditionally run iteration upon test resutlsJmeter 根据测试结果有条件地运行迭代
【发布时间】:2017-05-22 17:02:49
【问题描述】:

我正在尝试创建一个将运行多次压力测试迭代的测试计划。 我试图实现的想法是向服务器运行 1 分钟的 HTTP 请求并保持恒定的吞吐量。 然后增加所需的吞吐量并再次运行测试 1 分钟。 我想在每次迭代中将吞吐量提高 100 个请求/秒,直到我看到实际吞吐量远低于期望的吞吐量。

我已经成功创建了一个测试计划,该计划运行一分钟的恒定吞吐量: 我有一个带有 X 个线程的线程组,我将调度程序设置为 60 秒的持续时间。 在那个线程组中,我有一个 HTTP 请求采样器和一个恒定吞吐量计时器,我将它们设置为所需的值。

但是我想在循环中运行它并在每次迭代时增加恒定吞吐量计时器中的所需值。

当我看到聚合报告中观察到的实际吞吐量远低于我在恒定吞吐量计时器中为该迭代设置的吞吐量时,我还想停止循环(或跳过连续迭代)。

所以基本上当我达到我的服务器无法跟上的地步时,我不想继续强调它。

我怎样才能实现上述功能?

谢谢

【问题讨论】:

    标签: java performance jmeter performance-testing jmeter-plugins


    【解决方案1】:
    • 每次迭代将吞吐量提高 100

      • 使用__P() function 将其定义为常量吞吐量计时器中的属性,例如${__P(throughput)}
      • user.properties file or via -J command-line argument 中定义throughput 属性初始值(您甚至可以在JMeter 之外使用Beanshell server feature 来完成)
      • Test Action 采样器添加到线程组的末尾(它不会生成任何示例结果,因此不会出现在日志中)
      • JSR223 PreProcessor 添加为测试操作采样器的子项,并将以下代码放入“脚本”区域:

        def throughput = Integer.parseInt(props.get('throughput'))
        throughput += 6000
        props.put('throughput', String.valueOf(throughput))
        

      这样每次迭代的吞吐量会增加每分钟6000个请求(每秒100个请求)

    • 您可以使用AutoStop Listener 来停止根据各种标准压倒您的服务器。

    【讨论】:

    • 感谢您的回复。我看到 AutoStop Listener 只能访问平均响应时间、平均延迟和错误率。但是当聚合侦听器中显示的实际吞吐量远低于预期时,我想停止。
    • 你介意分享一个例子吗?我已按照您提到的所有内容进行操作,但没有得到预期的结果。
    猜你喜欢
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    相关资源
    最近更新 更多