jmeter cookie管理器-如何在每次迭代中为每个用户清除cookie?

时间:2020-08-04 12:35:51

标签: cookies jmeter

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

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

因此,我希望每个线程都会“清除” cookie 10次,因此,我希望在我的应用程序中生成1000个.net会话cookie。

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

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

  1. 每次重复清除Cookie
  2. 使用线程组配置来控制cookie的清除。

两者均未选中。

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

我应该检查其中一个还是两个?我需要在线程组上进行任何设置吗?

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

此外,Cookie管理器会去哪里吗?我一直把它放在线程组的顶部,但是也许应该放在线程组的下面?

想法?

3 个答案:

答案 0 :(得分:1)

您可以向代码添加到第一个请求JSR223 PreProcessor,该代码将在每次迭代开始时清除Cookie

sampler.getCookieManager().clear()

答案 1 :(得分:1)

  • 100 * 10等于1000,而不是10000

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

    1. 勾选此框:

      enter image description here

    2. 或在Thread Group级上勾选另一个并取消选中 { [ [1,"Apple"], [2,"Orange"], [3,"Banana"] ] }

      enter image description here

    我会选择后一种方法,因为它可以控制HTTP Cache ManagerHTTP Authorization Manager

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

  • 您可能会考虑放置HTTP Cookie管理器,以根据测试情况限制其scope

答案 2 :(得分:0)

我做了一些实验。完成此操作后,我得到了正确的结果:

  1. 将cookie管理器置于线程组下。在我掌握以上内容之前。
  2. 在cookie管理器中设置“使用线程组配置控制cookie清除”
  3. 在线程组中,确保未选中“在每次迭代中使用同一用户”。

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