【问题标题】:Multiple Users in JMeter Resulting in an ErrorJMeter 中的多个用户导致错误
【发布时间】:2016-08-25 03:34:31
【问题描述】:

目前,我编写的所有 JMeter 脚本在我与一个用户一起运行时都不会出现任何错误。但是,当我添加更多(即 5 个)时,最终会有一两个给我 401 Authorization Required 消息。我目前有两个正则表达式提取器捕获 X-CSRF,我在 HTTP 标头管理器中使用这些值。我不明白为什么我只在部分时间得到一个错误(我知道这不是因为我的用户参数,因为当我运行不同的用户时,他们一次工作一个用户)。它是否不适用于我正在测试的网站?还是JMeter?还是我错过了什么?

【问题讨论】:

  • 你能展示你的测试计划吗?并详细说明如何提取令牌并注入它们?谢谢
  • 我使用录音控制器登录 -> 添加内部审核 -> 注销。我在需要 X-CSRF 的“握手”步骤中添加了一个正则表达式提取器。正则表达式是 X-CSRF : (.+)?变量名称:token 模板:$1$ 匹配号 1 和要检查的字段是响应标头。然后,我将连接到“握手”步骤之后的步骤的 HTTP 标头管理器中的 X-CSRF 替换为 ${token}。

标签: jmeter authorization


【解决方案1】:

很可能您的提取器无法提取令牌。

我建议你使用gui来调试:

  • 添加查看结果树并运行测试。

  • 在测试计划下添加调试后处理器

  • 运行测试

查看您提取的内容。然后在查看结果树响应选项卡中使用正则表达式测试器来查看您的正则表达式是否匹配响应并正确提取标记。

【讨论】:

  • 我的令牌在 5 次中可能被正确提取了 3-4 次。当它不起作用时,它不会提取任何内容并使用默认值 Not Found。
  • 这不是你的问题吗?你能展示你的测试计划吗?谢谢
  • 我有一个线程组,在它下面有用户参数、HTTP Cokkie 管理器、HTTP 缓存管理器和一个记录控制器。在记录控制器中,我有一个用于登录页面的 HTTP 请求,一个用于握手步骤,一个用于登录,然后我有几个其他 HTTP 请求来执行实际脚本:这是向网站添加内部评论。每个 HTTP 请求都有自己的标头管理器,握手步骤和登录步骤都有一个正则表达式令牌。
【解决方案2】:

请检查以下内容:

  1. 您的令牌是否被正确提取? - 您可以在测试结束时添加调试采样器。这将向您显示不同用户选择的值。只需运行一次迭代即可轻松调试。

  2. 您添加了 cookie 管理器吗?检查您是否在每次迭代后清除 cookie?

  3. 您是否添加了缓存管理器?检查您是否正在清除缓存。

  4. 您是否为每个请求单独设置了全局标头管理器或标头?如果您使用的是默认标头管理器,则可能会导致此问题。

【讨论】:

  • 我对每个请求都有一个单独的标头,一个缓存管理器和一个 cookie 管理器都在清除,并且我的令牌可能被提取 3-4 次(共 5 次)。当它不起作用时,它使用未找到的默认值。我确实有两个正则表达式令牌,它是第二个,在我收到 401 错误的第一页上被拾取的那个,这是有问题的。
  • 您能否分享您收到的响应的详细信息以及您用于提取的正则表达式?这有助于我更好地理解问题。
  • 在 GUI 的正则表达式提取器页面上,我选择了主样本和子样本,选择了响应标头作为要检查的字段。参考名称是 Token,正则表达式是 X-CSRF: (.+)?模板是 $1$ 匹配号。为 1,默认值为未找到。当我在一个线程组中与五个用户一起运行时,第三个和第五个用户在使用令牌的步骤和之后无法工作(显示 401 Authorization required 消息)。当您再次运行它时,不同的用户将无法工作(第一个和第四个)。有时整件事情都有效。
  • 如果没有提取令牌,您是否看到对先前请求的正确响应?检查视图结果树,我建议添加响应断言来验证生成 X-CSRF 令牌的响应。你也可以分享示例 X-CSRF 令牌吗?我想验证正则表达式。
  • X-CSRF 令牌示例为:PMbq6c3iV6KWX1IVUKsutL2A/JI+5YtbCNQchw8nYUg=
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 2019-05-26
  • 2014-09-20
  • 2011-08-03
相关资源
最近更新 更多