根据 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 管理器应用实践。
对于 bug 跟踪系统的测试,测试场景将会包含一个 "仅登录一次" 操作,这个明显仅需新用户登录。新建一个项目,我们把登录请求放到 "Only Once Controller"。这意味着登录请求将仅被执行一次。之后,cookie 将被 HTTP Cookie 管理器所保存并用于以后的请求。
现在我们将执行一次仅一个用户的场景。之后我们会切换到察看结果树以核实 JMeter 是否已对 cookie 做了处理。
你会看到在 POST 请求的时候 JMeter 捕捉到了 cookie。现在我们来验证这个 cookie 是否会被应用于后续的请求。
注意在后续的请求中,PHPSESSID 和从服务器接收到的值一样。
原文:Using the HTTP Cookie Manager in JMeter。