『動善時』JMeter基礎 — 21、HTTP Cookie管理器的使用

繁華似錦Fighting發表於2021-05-25

上一篇文章詳細的介紹了HTTP Cookie管理器的作用和內容,本篇文章詳細的說明一下使用。

我們使用一個電商專案進行演示,在呼叫登入介面完成登入之後,通過檢視購物車介面獲取該使用者購物車中的資訊。也就是說如果需要檢視到購物車中的資訊,則我們先要是登陸狀態,這樣的情況下,就需要有Cookie資訊的存在了。

提示:要獲取購物車介面中的資訊,需要使用登入後的Cookie保持登入狀態。

1、在HTTP資訊頭管理器元件中新增Cookie資訊

實現步驟:

  1. 前提我們手動登陸電商網站,地址:http://www.testingedu.com.cn:8000/index.php/Home/user/login.html
  2. 然後通過工具獲取到登陸後的Cookie資料。
  3. 把Cookie資料儲存到HTTP資訊頭管理器元件中。
  4. 直接檢視該使用者的購物車資料。

提示:關於該網站登陸授權的Cookie資訊就是PHPSESSID,我們只儲存這一條Cookie即可。

(1)測試計劃內包含的元件

新增元件操作步驟

  1. 建立測試計劃。
  2. 建立執行緒組:選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
  3. 線上程組中新增配置元件"HTTP資訊頭管理器"元件:選中“執行緒組”右鍵 —> 新增 —> 配置元件 —> HTTP資訊頭管理器
  4. 線上程組裡面新增取樣器“HTTP請求”元件:選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
  5. 線上程組裡面新增監聽器“察看結果樹”元件:檢視結果,選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹

最終測試計劃中的元件如下:

image

點選執行按鈕,會提示你先儲存該指令碼,指令碼儲存完成後會直接自動執行該指令碼。

(2)請求取樣器內容

如下圖所示:

image

兩個HTTP請求取樣器的內容是一樣的,只不過有Cookie的請求前加了HTTP資訊頭管理器元件。

(3)HTTP資訊頭管理器內容

我們在請求頭中新增上Cookie資訊,如下圖所示:

image

當然我們可以用HTTP Cookie管理器元件來替換HTTP資訊頭管理器元件。

如下圖所示:

image

兩種方式下效果是一樣的,我更喜歡使用HTTP資訊頭管理器元件。

(4)檢視結果

我們現在檢視沒帶Cookie資訊的請求結果,發現返回資料提示看不到購物車的內容。

如下圖所示:

image

我們再來看一下帶Cookie資訊的請求結果,發現可以看到購物車中的資訊,如下圖所示:

image

2、使用HTTP Cookie管理器元件來管理Cookie資訊

實現步驟:

  1. 我們在JMeter中進行登陸操作。
  2. 通過HTTP Cookie管理器元件來記錄下登陸後的Cookie資訊。
  3. 再呼叫檢視購物車介面,自動使用HTTP Cookie管理器元件中記錄下來的Cookie資訊。
  4. 最終實現檢視該使用者的購物車資料。

提示:關於該網站登陸授權的Cookie資訊就是PHPSESSID,我們只儲存這一條Cookie即可。

(1)測試計劃內包含的元件

新增元件操作步驟

  1. 建立測試計劃。
  2. 建立執行緒組:選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
  3. 線上程組中新增配置元件"HTTP Cookie管理器"元件:選中“執行緒組”右鍵 —> 新增 —> 配置元件 —> HTTP Cookie管理器
  4. 線上程組裡面新增取樣器“HTTP請求”元件:選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求。(如有多個請求,新增多次)
  5. 線上程組裡面新增監聽器“察看結果樹”元件:檢視結果,選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹

最終測試計劃中的元件如下:

image

點選執行按鈕,會提示你先儲存該指令碼,指令碼儲存完成後會直接自動執行該指令碼。

(2)HTTP Cookie管理器內容

什麼都不用填寫,保持原樣即可。

image

簡單說明一下:

  • JMeter中自動收集的Cookie,是不會在HTTP Cookie管理器中進行展示的,但是執行後通過檢視結果樹可以檢視到Cookie資訊,接受到的Cookie會被自動儲存線上程變數中。(使用Debug Sampler元件)
  • HTTP Cookie管理器會自動記錄每一個請求所產生的Cookie,在後邊對同源站點進行的請求中,都可以使用對應的Cookie進行傳送。

(3)HTTP請求元件的內容

1)登陸請求介面內容

填寫好請求地址和請求引數,如下圖所示:

image

2)檢視購物車請求介面內容

檢視購物車介面,沒有請求引數,我們使用Get請求就可以。其中的Cookie資訊,會自動新增到請求頭資訊中。

如果沒有新增HTTP Cookie管理器元件,則該請求的請求頭資訊中不會帶有Cookie資訊,會顯示[no cookies]

image

(4)檢視結果

指令碼執行結果如下圖所示:

image

我們可以看到,兩個請求都請求成功了。登陸請求中是沒有Cookie資訊的,登陸之後服務端會返回Cookie資訊給客戶端。而HTTP Cookie管理器元件儲存了這些Cookie資訊,並應用於之後的介面請求中,所以在檢視購物車請求中,我們看到了Cookie資料。

3、檢視HTTP Cookie管理器元件中自動儲存的Cookie資訊

前面我們說過,JMeter中自動收集的Cookie資訊,是不會在HTTP Cookie管理器中進行展示,接受到的Cookie資訊會被自動儲存線上程變數中。

如果我們需要檢視或引用這些Cookie資訊怎麼辦?

(1)修改JMeter.property檔案

修改jmeter/bin/jmeter.properties檔案,把CookieManager.save.cookies屬性開啟,意思是儲存Cookie資料到執行緒變數中。

操作如下:

CookieManager.save.cookies=true   # 取消註釋,false修改成true

(2)新增Debug Sampler取樣器

新增Debug Sampler元件:選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> Debug Sampler

我們以上面練習為例,新增完Debug Sampler元件後,測試計劃中的元件如下:

image

(3)檢視Debug Sampler元件中的結果

執行測試計劃,然後在察看結果樹中,檢視Debug Sampler元件中的值。

如下圖所示:

image

紅框中的內容,就是登陸請求後,服務端返回給客戶端的Cookie資訊。

之後我們可以使用${COOKIE_名稱}的方式,在其他的地方引用該Cookie資訊。

JMeter.property檔案中的CookieManager.name.prefix= 屬性,能夠用來修改預設的變數名COOKIE_的開頭。

相關文章