JMeter 四:建立高级web测试计划
发送带有Header的请求
参考:http://jmeter.apache.org/usermanual/build-adv-web-test-plan.html#header_manager
Jmeter里面管理发送的请求的header使用 HTTP Header Manager。使用它可以添加或重写各种header属性,比如"User-Agent", "Pragma", "Referer"等等。
添加HTTP Header Manager方法: Add –> Config Element –> HTTP Header Manager
可以直接放到Thread Group,这样就作用于线程组里面的所有请求。也可以放到某个请求下,这样就只作用于当前请求。
添加之后运行测试计划,可以看到发送的请求有两个Connection,一个是系统自动添加的,一个就是通过HTTP Header Manager添加的请求header。
发送带有cookie的请求
参考:http://jmeter.apache.org/usermanual/build-web-test-plan.html#adding_cookie_support
几乎所有的Web测试都需要使用Cookie 支持,除非被测试项目不使用cookie。
想要使用Cookie 支持,这里我们只需要给每个Thread Group 添加一个 HTTP Cookie Manager 。这样就确保了每个Thread 都会获取到属于它自己的cookie,同时可以在所有的 HTTP Request 之间共享。
在Thread Group上 右键,Add -> Config Element -> HTTP Cookie Manager 。
HTTP Cookie Manager会像浏览器一样自动存储和发送cookie。如果 HTTP 请求的Response中包含cookie,Cookie Manager 会自动储存cookie并且在未来对该网站的访问中使用这些cookie的值。每个用户有自己独立的cookie存储区,所以不会互相干扰。这种自动存储的 cookie 在 Cookie Manager 中看不到,但是可以在 View Result Tree中看到。
cookie值也可以被存储到jmeter线程变量中。如果想保存cookie为变量,需要在jmeter.properties中定义属性“CookieManager.save.cookies=true”。这样假设一个cookie的名字是TEST,我们就可以使用${COOKIE_TEST}来引用它,jmeter默认会在cookie变量前面加一个前缀COOKIE,也可以使用属性 "CookieManager.name.prefix= "来自定义前缀。
如果想手动添加一些cookie,可以直接在User-Defined-Cookies里面添加。这样这些cookie会被所有线程共享使用。
添加cookie之后,执行,然后就可以在 View Results Tree的request中看到发送的cookie。
需要注意的是,Jmeter不提倡使用多个Cookie Manager 。如果使用多个Cookie Manager 的话,jmeter无法确定哪一个会被使用。