1. 程式人生 > >JMeter 中 HTTP Cookie 管理器的使用

JMeter 中 HTTP Cookie 管理器的使用

cookies.jpg

根據 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 管理器應用實踐。

bz_bl_0006.28.12.f_1.jpg
對於 bug 跟蹤系統的測試,測試場景將會包含一個 "僅登入一次" 操作,這個明顯僅需新使用者登入。新建一個專案,我們把登入請求放到 "Only Once Controller"。這意味著登入請求將僅被執行一次。之後,cookie 將被 HTTP Cookie 管理器所儲存並用於以後的請求。
現在我們將執行一次僅一個使用者的場景。之後我們會切換到察看結果樹以核實 JMeter 是否已對 cookie 做了處理。
bz_bl_0006.28.12.f_2.jpg
你會看到在 POST 請求的時候 JMeter 捕捉到了 cookie。現在我們來驗證這個 cookie 是否會被應用於後續的請求。
bz_bl_0006.28.12.f_3.jpg
注意在後續的請求中,PHPSESSID 和從伺服器接收到的值一樣。
原文連結:Using the HTTP Cookie Manager in JMeter