Jmeter在测试结果时有条件地运行迭代

时间:2017-05-22 17:02:49

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

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

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

但是我想在循环中运行它并在每次迭代时增加Constant Throughput Timer中的所需值。

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

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

我如何实现上述功能?

由于

1 个答案:

答案 0 :(得分:0)

  • 每次迭代增加100个吞吐量

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

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

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

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