4

我遇到了类似于这篇文章中的问题:JMeter;session cookie,但从不同的角度接近。

相似之处在帖子的底部,OP 写道:

如何... 我可以为从第一个响应标头中提取值的每个用户设置和提交唯一的 cookie?

我们正在使用 JMeter 进行负载测试,并且需要让多个用户同时登录到我们的电子邮件客户端。我们的网站(和测试计划)的工作方式是:

  • 输入用户名/密码,点击登录。
  • 单击电子邮件。
  • 在 cookie 中接收身份验证令牌(用于保持登录到电子邮件客户端)。
  • 在与电子邮件客户端交互时(打开文件夹、将电子邮件标记为已读等),在帖子正文中发送身份验证令牌。

问题是身份验证令牌没有以可以在 POST 请求中使用的方式存储为值(并且由于身份验证令牌不是作为 cookie 发送的,我们不能简单地存储它并发送它使用 HTTP Cookie 管理器)。cookie 最初设置如下:

AUTH_TOKEN=(long string of letters, numbers, and underscores); Domain=.ourdomain.net; Path=/

我们尝试了以下方法从 cookie 中提取身份验证令牌值:

  • 使用正则表达式提取器从“单击电子邮件”步骤的响应标头中提取值。我们尝试了两个正则表达式;两者都只是导致 JMeter 在运行测试时使用默认的身份验证令牌值:
    • AUTH_TOKEN\=(\w+)\;
    • AUTH_TOKEN=([^;]+);
  • 在 user.properties 中定义属性“CookieManager.save.cookies=true”(根据用户手册的建议)和“CookieManager.check.cookies=false”(根据该线程的建议),然后使用“${COOKIE_AUTH_TOKEN}”在帖子正文中。
    • 使用其中一个或两个,JMeter${COOKIE_AUTH_TOKEN}在帖子正文中设置为 auth 令牌值。
    • 我们知道 ${COOKIE_cookieName} 是正确的格式,因为这与 JMeter 存储的其他 cookie 一起使用。

我已经阅读了许多线程,但没有一个处理过这个特定问题。几周前我刚开始学习如何使用 JMeter,所以我不确定在这里做什么,任何帮助将不胜感激。谢谢!

4

1 回答 1

6

问题实际上是由于向服务器发送了不正确的请求,然后向服务器发送了空白响应。一旦我们拆除并重写了整个测试计划(我们使用的实际上是另一个测试计划的修改版本)并且在 user.properties 中有 CookieManager.save.cookies=true,我们就能够使用 ${COOKIE_AUTH_TOKEN} 并获得正确的值。

于 2013-01-03T23:51:49.147 回答