JMeter (十四) Cookie & Session
Jmeter 工作原理:
JMeter可以作为Web服务器与浏览器之间的代理网关,以便捕获浏览器的请求和Web服务器的响应,这样就很容易地生成性能测试脚本,
有了性能测试脚本,JMeter就可以通过线程组来模拟真实用户对Web服务器的访问压力,这与LoadRunner的
工作原理基本一致。
原理如图:
一、Cookie
为了达到真正意义的并发,让每个线程模拟一个全新的用户,那Jmeter需要添加缓存与cookies管理器,清除缓存和cookies,设置如下:
每次反复清除Cookies?:选择后,则每次线程组运行时,都会清除 cookie。PS:若是手动添加的cookie,则不会被清除。
Implementation:履行的协议。
Cookie Policy:Cookie的管理策略。有如下几种可选项:
compatibility:推荐选择此种策略。这种兼容性设计要求是适应尽可能多的不同的服务器,尽管不是完全按照标准来实现的。如果你遇到了解析 Cookies 的问题,你就可能要用到这一个规范。有太多的web站点是用CGI脚本去实现
的,而导致只有将所有的 Cookies 都放入 Request header 才可以正常的工作。这种情况下最好设置 http.protocol.single-cookie-header 参数为 true。
rfc2109:是HttpClient使用的默认Cookies协议。
rfc2965:定义了版本2并且尝试去弥补在版本1中 Cookie 的 RFC2109 标准的缺点。规定 RFC2965 最终取代 RFC2109 发送 RFC2965 标准 Cookies 的服务端,将会使用 Set-Cookie2 header 添加到 Set-Cookie Header 信心中,
RFC2965 Cookies 是区分端口的。
ignorecookies:此规格忽略所有 Cookie。被用来防止 HttpClient 接受和发送的 Cookie。
netscape:是最原始的 Cookies 规范,同时也是 RFC2109 的基础。尽管如此,还是在很多重要的方面与 RFC2109 不同,可能需要特定服务器才可以兼容。
default:默认。
二、Session
添加方式:线程组-前置处理器 -HTTP URL 重写修饰符,如下图:
有些tomcat的session实现不是通过cookie的,而是通过session id的,就是说,用户登录有了session之后,tomcat就会维护一个sessonid,然后每次request的时候,要求每个http request的URL都要带上这个session id.
在tomcat中,使用URL Re-writing mode,URL是这样的:http://192.168.0.2:8080/easy/login.ec;jsessionid=410C3D3946535635683D662DF74A00AC,所以,这里我们需要设置会话参数名称为:jsessionid,Jmeter就会到URL里面按照这个参数去把上面那个sessionid抓下来,然后每次request都带上这个东西,需要注意,“路径扩展(使用;作分隔符)”这里还要将勾上,因为如上,tomcat的URL Re-writing中sessionid是以分号的方式加在URL上的,所以需要勾上这个选项,有些web server这个session和普通的URL parameter一样,是以?和&这种方式加上去的,这种情况这个checkbox就不用勾了。