【问题标题】:jmeter cookie manager - how to clear cookies for each user for each iteration?jmeter cookie 管理器 - 如何为每次迭代清除每个用户的 cookie?
【发布时间】:2020-08-04 12:35:51
【问题描述】:

我有一个包含 100 个线程(用户)的线程组,循环计数为 10。 我有一个默认设置的 cookie 管理器。 用户是匿名的(未登录),但我想在应用程序洞察中跟踪访问该站点的用户数量,因为它会生成新的 .net 会话令牌。

当我运行测试时,我希望 cookie 对于每个线程循环迭代都是本地的。

所以我希望在每个线程上“清除”cookie 10 次,因此我希望在我的应用程序上生成 1,000 个 .net 会话 cookie。

但是,我没有,我看到了 1。

在cookie管理器中,有两个选项:

  1. 每次迭代清除 cookie
  2. 使用线程组配置来控制 cookie 清除。

两者都未选中。

但这没有任何意义 - 我希望在每次迭代时为每个用户清除 cookie。

我应该检查其中一项还是两项?我需要在线程组上设置什么吗?

在线程组中,我未选中“每次迭代的用户相同的用户” - 每次迭代都应该被视为一个新用户。

另外,它与 cookie 管理器的去向有关吗?我一直把它放在顶部,在线程组之上,但也许它应该放在线程组下面?

想法?

【问题讨论】:

    标签: cookies jmeter


    【解决方案1】:
    • 100 * 10 给出 1000,而不是 10000

    • 有两种方法可以在每次迭代时清除 cookie:

      1. 勾选此框:

      2. 或勾选另一个并取消勾选 Same user on each iteration Thread Group 级别

      我会选择后一个选项,因为这也允许控制 HTTP Cache ManagerHTTP Authorization Manager

    • HTTP Cookie 管理器将仅线程组迭代视为迭代,不考虑其他循环源,如 Loop Controller 或 While Controller

    • 您可以考虑放置您的 HTTP Cookie 管理器,以便根据您的测试场景限制其scope

    【讨论】:

      【解决方案2】:

      您可以使用将在每次迭代开始时清除 cookie 的代码添加到第一个请求 JSR223 PreProcessor

      sampler.getCookieManager().clear()
      

      【讨论】:

        【解决方案3】:

        我做了一些实验。这样做后我得到了正确的结果:

        1. 将cookie管理器放在线程组下。在我上面有它之前。
        2. 在 cookie 管理器中设置“使用线程组配置控制 cookie 清除”
        3. 在线程组中,确保未选中“在每次迭代中使用相同的用户”。

        现在,对于每个线程和每次迭代,我都会看到新的会话 cookie,这些只是为该线程和迭代保留。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-04
          • 1970-01-01
          • 2021-05-04
          • 1970-01-01
          • 2021-03-08
          • 1970-01-01
          相关资源
          最近更新 更多