【问题标题】:How to run JMeter failed threads after test stops?测试停止后如何运行 JMeter 失败的线程?
【发布时间】:2013-09-17 16:21:48
【问题描述】:

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

【问题讨论】:

    标签: jmeter jmeter-plugins


    【解决方案1】:

    你必须做以下事情。

    • 使用 JSR223 采样器设置 rescode=0
    • 当控制器带有(如果重新编码!=200)
      • HTTP 采样器
        • JSR223 后处理器作为 javascript 作为脚本语言。
        • 使用 prev.getResponseCode() 存储响应代码
          • 例如vars.put("rescode", prev.getResponseCode());

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

    【讨论】:

      【解决方案2】:

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

      例如:

      创建一个正则表达式后处理器,默认值为 false,模板值为 true。使表达式匹配预期的响应,如果样本失败则失败。

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

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

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

      -添加

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-06
        • 1970-01-01
        • 2023-03-17
        • 2021-09-17
        相关资源
        最近更新 更多