JMeter 中 HTTP Cookie 管理器的使用

时间:2023-12-14 10:33:08

JMeter 中 HTTP Cookie 管理器的使用

根据 web 应用的复杂度你可以选择创建两种类型的 JMeter 测试计划:面向点击数的或面向场景的。

创建一个面向点击数的测试计划你需要有中值统计。这些统计要包含你的应用每秒应该处理多少个独立请求的相关信息。这种统计很简单而且适用于大多数网站。但是不一定适用于其它一些比较复杂的应用。比如,你不能使用一个直连从网上银行获取一份概要报告;你首先得登录该应用然后再导航到特定的页面。
出于这个目的,浏览器将存储这些信息并甜蜜地称之为"cookie(曲奇)",这里的 cookie(很不幸)并非一个美味的烘烤食品,而是包含有登录会话信息的一些文本。JMeter 提供了一个用于处理压测时产生的很多 cookie 的工具,名为 HTTP Cookie 管理器。
HTTP Cookie 管理器具备三个功能:
1. Cookie 管理器就像一个 web 浏览器那样存储并发送 cookie。

如果你有一个 HTTP 请求,其返回结果里包含一个 cookie,那么 Cookie 管理器会自动将该 cookie 保存起来,而且以后所有的对该网站的请求都使用同一个 cookie。每个 JMeter 线程都有自己独立的"cookie 保存区域"。因此,如果你在测试网站的时候使用了 Cookie 管理器来存储 session 信息的话,那么每个 JMeter 线程将会拥有自己独立的 session。**注意这些 cookie 不会显示在 Cookie 管理器里,你可以通过察看结果树来对其进行察看。
2. 接收到的 cookie 数据可以作为 JMeter 线程的参数进行存储(JMeter 2.3.2 之后的版本默认不再打开这个功能)。
要将 cookie 存储为参数,定义属性"CookieManager.save.cookies=true"。cookie 在被保存之前会在名字上加上 "COOKIE_" 前缀(避免和本地参数重复)。设置好一会名字为 TEST 的 cookie 可以用 ${COOKIE_TEST} 进行引用。如果不希望这个前缀可以对属性 "CookieManager.name.prefix=" 进行定义。
3. 手工添加一个 cookie 到 Cookie 管理器。
注意如果你这么干了,这个 cookie 将被所有 JMeter 线程所共享。这种方式用于创建有很长过期日期的 cookie。
HTTP Cookie 管理器应用实践。
JMeter 中 HTTP Cookie 管理器的使用
对于 bug 跟踪系统的测试,测试场景将会包含一个 "仅登录一次" 操作,这个明显仅需新用户登录。新建一个项目,我们把登录请求放到 "Only Once Controller"。这意味着登录请求将仅被执行一次。之后,cookie 将被 HTTP Cookie 管理器所保存并用于以后的请求。
现在我们将执行一次仅一个用户的场景。之后我们会切换到察看结果树以核实 JMeter 是否已对 cookie 做了处理。
JMeter 中 HTTP Cookie 管理器的使用
你会看到在 POST 请求的时候 JMeter 捕捉到了 cookie。现在我们来验证这个 cookie 是否会被应用于后续的请求。
JMeter 中 HTTP Cookie 管理器的使用
注意在后续的请求中,PHPSESSID 和从服务器接收到的值一样。
原文链接:Using the HTTP Cookie Manager in JMeter