JMeter 脚本覆盖多个登录 API 的会话 cookie

问题描述 投票:0回答:1

我计划使用 JMeter 对应用程序进行负载测试。在此测试中,我打算使用 2 个 Active Directory 用户帐户模拟 100 个用户的并发登录。这意味着每个 Active Directory 帐户有 50 个并发用户。

登录API在标头中返回一个会话cookie,只有当标头中存在有效的会话cookie时,后续的API请求才有效。 API 流程的结构如下:

登录API 获取列表API 获取详情API 为了实现这个场景,我在负载测试中创建了两个线程。每个线程代表一个 Active Directory 帐户。 但是,我遇到了一个问题,第二个线程(线程 #2)成功进行 API 调用,而第一个线程(线程 #1)失败并返回“无效会话 cookie”响应。看来最后一个线程(线程 #2)正在覆盖标头中的会话 cookie。

这是我如何设置线程的结构:

Thread Group
->HTTP Cookie Manager
->User Defined Variables
->Login API
->GetList API 
->GetDetail API
Thread Group
->HTTP Cookie Manager
->User Defined Variables
->Login API
->GetList API 
->GetDetail API

如果您能提供有关如何解决此问题并确保每个线程维护自己的会话 cookie 的任何见解或建议,我将不胜感激。预先感谢您的帮助。

我希望这些线程调用 API 在标头中具有单独的会话 cookie 并响应成功

jmeter session-cookies
1个回答
0
投票

主要问题是您的脚本有 2 个用户定义变量实例,根据 文档

请注意,测试计划中的所有 UDV 元素(无论它们位于何处)都会在开始时进行处理。

因此,如果您在那里定义像用户名这样的变量 - 后面的变量将覆盖前面的变量设置的值,因此您基本上使用一个用户名而不是 2 个。

  1. 您可以删除第二个线程组,只在第一个线程组中设置 2 个线程:

  2. 每当您需要在其他地方重复使用采样器或一段脚本时,请考虑将其移至测试片段并使用模块控制器引用它,这是 JMeter 遵循DRY原则的方式

© www.soinside.com 2019 - 2024. All rights reserved.