JMeter中HTTP Cookie管理器的使用
阿新 • • 發佈:2019-02-08
根據 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 和從伺服器接收到的值一樣
建立一個面向點選數的測試計劃你需要有中值統計。這些統計要包含你的應用每秒應該處理多少個獨立請求的相關資訊。這種統計很簡單而且適用於大多數網站。但是不一定適用於其它一些比較複雜的應用。比如,你不能使用一個直連從網上銀行獲取一份概要報告;你首先得登入該應用然後再導航到特定的頁面。
出於這個目的,瀏覽器將儲存這些資訊並甜蜜地稱之為"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 和從伺服器接收到的值一樣