如何在测试停止后运行JMeter失败的线程?

如何在测试停止后运行JMeter失败的线程?,jmeter,jmeter-plugins,Jmeter,Jmeter Plugins,我正在使用JMeter运行一个功能测试来更新许多用户的密码(22K)。我在两个脚本中分离了用户,并使用了一个极限线程组,起始线程数=100,这是我得到的错误较少的值,但是我仍然有1.5%的事务失败,我只需要重新运行失败的线程,因为所有用户都需要有相同的密码。 我试图找到这个特定问题的答案,但我只找到了防止这种情况发生的方法,比如使用带计时器的While控制器,或者记录失败的完整响应,但我没有找到具体的方法来重新运行失败的线程。 有人知道这是否可行吗?您必须执行以下操作 使用JSR223采样器将

我正在使用JMeter运行一个功能测试来更新许多用户的密码(22K)。我在两个脚本中分离了用户,并使用了一个极限线程组,起始线程数=100,这是我得到的错误较少的值,但是我仍然有1.5%的事务失败,我只需要重新运行失败的线程,因为所有用户都需要有相同的密码。 我试图找到这个特定问题的答案,但我只找到了防止这种情况发生的方法,比如使用带计时器的While控制器,或者记录失败的完整响应,但我没有找到具体的方法来重新运行失败的线程。
有人知道这是否可行吗?

您必须执行以下操作

  • 使用JSR223采样器将重新编码设置为0
  • 而控制器具有(如果重新编码!=200)
    • HTTP采样器
      • JSR223后置处理器作为javascript作为脚本语言
      • 使用prev.getResponseCode()存储响应代码
        • e、 g.vars.put(“重新编码”,prev.getResponseCode())

您可能需要为脚本添加更多的智能以避免无限循环。

解决此问题的另一种方法是预测某些密码更新调用的错误,并在失败时使用所需的信息构建数据文件

例如:

创建默认值为false、模板值为true的正则表达式后处理器。使表达式与预期响应匹配,如果示例失败,则将失败

然后,在该采样器之后,可以基于新的true/false变量添加if语句。如果为false,则表示上一次密码更新失败。在if语句中,添加一个虚拟采样器,其响应数据包含您需要知道哪些帐户必须重试的所有信息

然后,向这个虚拟采样器添加一个简单的文件编写器,并将虚拟采样器响应数据记录到一个文件中。在测试运行结束时,此数据文件将包含重新尝试所有失败帐户所需的所有信息

遗憾的是,这是一个稍微手动的过程,但我相信只要有一点创意,您就可以自动执行递归测试运行,直到重试文件为空为止。Beanshell文件IO可以让您在一次测试运行中处理所有这些

-混乱的