JMeter配置元件(一)

工作手记發表於2024-04-27

一 前言

環境: window 10 JMeter 5.3
記錄一些常用的配置元件的用法

二 Configuration elements 配置元件

Configuration elements(配置元件)的作用就是給其後面的sampler(同作用域)準備好需要的資料,需要注意的是,配置原件總是比同作用域的sampler先執行

這有點像是定時器,他們存在的意義都是為同作用域的sampler服務,都會比同作用域的sampler先執行

1 CSV Data Set Config

適合將大量資料放在文字檔案中供sampler使用,或者從文字檔案中取出一個隨機值

先看一個例子
image
image
image
文字檔案內容
image

結果
image
image

利用 CSV Data Set Config,可以將文字檔案中的資料按行讀取出來賦予對應的變數
預設情況下,檔案只開啟一次,每個執行緒將使用檔案中的不同行,由於可能配置為不同的執行緒同時執行,所以對應資料在sampler中的執行順序是隨機的,可能與文字檔案中的順序不同

CSV Data Set Config各個引數的簡單說明
image
Delimiter: 文字檔案裡,每行資料各個資料間的分隔符
Ignore first line:文字檔案裡,首行是欄位名而非資料的話可以忽略。 如果變數名引數未設定,則這裡不能忽略,文字檔案的首行必須是欄位名
Allow quoted data: 是否允許文字檔案中的資料包含雙引號
Recycle on EOF: 讀取到檔案末尾的時候是否再次從頭開始迴圈讀取
Stop thread on EOF: 到檔案末尾的時候執行緒停止
Sharing mode: 預設選擇第一個
image

2 HTTP Request Defaults

這個很好理解,多個sampler有相同的引數的話,如server name 、ip、port number等,在這裡配置一遍後,後面的saampler中相對應的引數空著就行,不用重複配置
image

3 HTTP Header Manager

這個和 HTTP Request Defaults類似,配置預設的http header 資訊,這樣後面的同作用域http sampler傳送請求時都會有配置好的header資訊
image
Content-Type : application/x-www-form-urlencoded 或者 application/json

User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0 sec-ch-ua-platform: "Windows"

經常會發現一些header資訊未配置或者未配置對,http請求會失敗

cookie管理器有兩個功能

  • 根據請求的返回值自動儲存cookie資訊(也可手動新增cookie資訊)
  • 在後續請求中自動帶上之前儲存的cookie資訊
    總之,它能像瀏覽器一樣儲存併傳送cookie資訊,譬如購物網站,我們登入後是有身份資訊的,用以區分誰是誰,而身份資訊通常就在登入請求返回的cookie資訊裡,在後續其它頁面如購物記錄的請求,瀏覽器會自動帶上之前的cookie資訊,所以我們看到的是自己的購物資訊而不是別人的資訊

示例

某網站使用者登入後,會自動呼叫一個msg開頭的資訊的介面,顯示該使用者收到的通知資訊數量,退出時,會呼叫一個logout介面,後面兩個介面傳送時都需要登入介面返回的cookie資訊
image
image
image

image
image
image
由於這裡是自動獲取cookie,所以cookie管理器直接新增就行了,注意新增的位置,不是在登入或者其他請求的子節點,而是和所有請求並列的位置,因為這裡cookie管理器會對所有sampler起作用,而不是針對其中某一個
image

image
image

image
image
image
結果
image
image

image

HTTP cookie管理器會自動儲存cookie資訊,那它是如何判斷請求返回的資料中有cookie資訊呢?總有個判斷依據吧,查了一下,它是根據 HTTP 響應頭部中的 Set-Cookie 指令來判斷介面是否返回了 Cookie。 所以有些網站的介面返回資訊中沒有Set-Cookie欄位資訊,那就可能需要配置後置處理器來擷取返回資料中的登入憑證,以供後面介面使用

相關配置

配置1

可以手動將cookie新增到cookie管理器中。這樣的話,cookie將被所有JMeter執行緒共享。
image
Clear Cookies each Iteration: 如果選中,則每次執行主執行緒組迴圈時都會清除所有伺服器定義的cookie。任何在GUI中定義的cookie都不會被清除
standard表示用於管理Cookie的Cookie策略。"standard"是自3.0以來的預設值
User-Defined Cookies:這些要檢視具體要新增的cookie資訊

配置2

接收到的cookie可以儲存為JMeter執行緒變數。要將cookie儲存為變數,請定義屬性"CookieManager.save.cookies=true"。 這可在jmeter.property檔案更改

示例
新增一個debug dampler,Jmeter variables設定為True
image
更改前是沒有cookie變數的

image
更改後是有的

配置3

被存為變數cookie名稱以“COOKIE_”作為字首,要修改字首,請定義屬性“CookieManager.name.prefix=”(一個或多個空格)。如果啟用,名稱為TEST的cookie的值可以引用為${COOKIE_TEST}

配置4

JMeter檢查接收到的cookie是否對URL有效。這意味著不儲存跨域cookie。如果你已檢查過或希望跨域cookie被使用,定義JMeter屬性“CookieManager.check.cookies=false”

配置5

如果在一個取樣器的作用域中有多個Cookie Manager,那麼目前沒有辦法指定要使用哪一個。此外,儲存在一個cookie管理器中的cookie對任何其他管理器都不可用,因此要小心使用多個cookie管理器

配置6

預設情況下,null值的cookie將被忽略。這可以透過設定JMeter屬性來改變:CookieManager.delete_null_cookies=false。這也適用於手動定義的cookie -任何此類cookie將在更新時從顯示中刪除。還要注意,cookie名稱必須是唯一的——如果第二個cookie用相同的名稱定義,它將替換第一個cookie。

相關文章