0

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

4

2 回答 2

0

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

例如:

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

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

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

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

-上瘾

于 2015-04-03T16:55:18.703 回答
0

您将必须执行以下操作。

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

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

于 2013-09-18T09:51:23.550 回答