目錄
HTTP代理伺服器允許JMeter在使用常規瀏覽器,瀏覽Web應用程式時攔截並記錄操作。JMeter將建立測試樣本物件,並將其直接儲存到的測試計劃中。這樣你就可以在操作錄製的同時,還可以檢視錄製的測試計劃。
要使用HTTP代理伺服器,需要設定瀏覽器對所有HTTP和HTTPS請求使用代理。錄製指令碼時,最好使用無痕瀏覽模式,這可以確保瀏覽器沒有儲存的Cookie資訊,並防止儲存某些更改。例如:Firefox不允許永久儲存證照替代。
1、HTTP代理伺服器的新增
新增HTTP代理伺服器元件操作:選中“測試計劃”右鍵 —> 新增 —> 非測試元件 —> HTTP代理伺服器
。
HTTP代理伺服器介面如下:
2、HTTP代理伺服器介面詳解
HTTP代理伺服器元件的詳細說明:
- 名稱:HTTP代理伺服器元件的自定義名稱,見名知意最好。
- 註釋:即新增一些備註資訊,對該HTTP代理伺服器元件的簡短說明,以便後期回顧時檢視。
(1)State:狀態
說明:
- 啟動按鈕:啟動代理伺服器。一旦代理伺服器啟動並準備接受請求,JMeter就向控制檯寫入訊息:“代理啟動並執行!”
- 停止按鈕:停止代理伺服器。
- 重啟按鈕:停止並重新啟動代理伺服器。當你操作(改變、新增、刪除)包含、排除過濾器時,這個按鈕很有用。
(2)Global Settings:全域性設定
說明:
- 埠:設定JMeter代理伺服器所要用的埠,不能被佔用,否則JMeter無法使用。
預設啟用8888埠。
可以在CMD中使用netstat -ano|findstr "8888"
檢視埠是否被佔用。 HTTPS Domains
:編寫代理主機的域名或者主機IP地址,可以對指定地址進行請求錄製。
例如:* .example.com
,*.subdomain.example.com
。
(3)Test Plan Creation:測試計劃建立
test plan content
:測試計劃內容。
說明:
- 目標控制器:選擇錄製的指令碼所儲存的位置。
1)使用錄製控制器
:需要線上程組中新增錄製控制器元件(在邏輯控制器元件中新增)。
否則在開啟HTTP代理伺服器的時候會提示:
意思是:你選擇儲存指令碼的目標控制器為“使用錄製控制器”,但不存在這樣的控制器,請確保將錄製控制器元件新增為執行緒組節點的子節點,才可以正確開始錄製。Target Controller is configured to "Use Recording Controller" but no such controller exists, ensure you add a Recording Controller as child of Thread Group node to start recording correctly
2)測試計劃>執行緒組
:錄製的指令碼儲存到目標執行緒組。(只有在測試計劃中新增了執行緒組,才能看到該選項)
3)測試計劃>HTTP代理伺服器
:錄製的指令碼儲存到HTTP代理伺服器元件下。
4)Test Plan > 執行緒組 > 控制器
:錄製的指令碼儲存線上程組中的目標控制器下。(只有在測試計劃中新增了控制器,才能看到該選項) - 分組:是否將錄製的單個“點選”請求進行分組,以及如何在錄製中表示該分組。
1)不對樣本分組:很好理解,就是請求什麼就記錄什麼,對所有錄製的取樣器不分組。
2)在組間新增分隔:每一個Sampler
結束都會有分隔符間隔開。即:在取樣器分組之間新增以名為----------
的控制器。
3)每個組放入一個新的控制器:每一個Sampler
請求開始時,都會有一個簡單控制器生成。即:每個分組放到一個新的簡單控制器下。
4)只儲存每個組的第一個樣本:每個Sampler
請求時,如果有子請求,那子請求是不會被記錄的,只記錄第一個URL請求的樣本,而這些取樣器的Follow Redirects
和Retrieve All Embedded Resources…
等選項將被設定上。這種情況雖然很多人說比較推薦,但是個人覺得會丟失許多重要的請求,建議大家還是視情況選擇。
5)Put each group in a new transaction controller
:每個Sampler
請求開始時,都會生成一個事務控制器,分組的所有取樣器都儲存在控制器下。 - 記錄HTTP資訊頭:要向測試計劃新增資訊頭嗎?如果勾選,則將向每個HTTP取樣器,新增HTTP資訊頭管理器。
- 新增斷言:為每個空的取樣器新增一個斷言。
Regex matching
:指定在替換變數時,是否使用正規表示式匹配。
如果勾選,則將取樣器中的資訊,使用正規表示式來匹配使用者定義變數值,替換為變數名${變數名}
,進行替換。匹配時,它只接受整個詞匹配,不接受匹配單詞一部分。
(4)Requests Filtering:請求過濾
說明:
Content Type filter
:根據請求頭中的content-type
屬性過濾請求,例如"text/html [;charset=utf-8 ]”
。
該欄位為正規表示式,它會檢查content-type
屬性中,是否包含了指定字串[不必匹配整個欄位]。
順序是:先檢查content-type
的包含過濾器,再檢查排除過濾器,過濾掉的取樣器將不會被儲存。- 包含模式:使用它可以過濾URL路徑,只有取樣器的完整URL匹配通過,該正規表示式才會被記錄。
如果在包含模式中至少有一個條目,則只記錄匹配一個或多個包含模式的請求。
如果我們要錄製某個網站的請求,可以新增一個URL過濾,防止錄製不必要的請求。 - 排除模式:使用它可以過濾URL,滿足該條件的請求不會被錄製。
Notify Child Listeners of filtered samplers
:通知子監聽器被過濾的取樣器。
提示:
- 包含和排除模式使用正規表示式匹配。它們將與每個瀏覽器請求的主機名,埠,路徑和查詢(如果有)進行匹配。
- 如果有任何包含模式,則URL 必須至少與這些模式之一匹配,否則將不會被記錄。如果存在任何排除模式,則URL 不得與任何模式匹配,否則它將不會被記錄。通過使用包含和排除的組合,可以篩選記錄實際需要記錄的測試樣本。
- 注意:由正規表示式匹配的字串必須與整個 host + path字串相同。
- 如果要記錄錄製過程中樣本的響應資料,需要將檢視結果樹,新增為HTTP代理伺服器的子代元件。即可通過檢視結果樹,檢視錄製的請求響應資料。
(5)HTTP Sampler settings:HTTP取樣器設定
說明:
prefix/Transaction name
:在錄製時,在取樣器名稱前新增指定的字首,或者使用使用者指定的事務名稱,替換取樣器名稱。
例如:指定prefix
為aa
,如下圖所示:
例如:指定transaction name
為bb
,如下圖所示:
Create new transaction after request (ms)
:兩個請求之間的不活動時間超過此值,則將它們分為兩個單獨的組。- 從HTML檔案獲取所有資源:在生成的取樣器中,設定獲取所有嵌入式資源。
- 自動重定向:錄製的取樣器是否要設定自動重定向。
- 跟隨重定向:錄製的取樣器是否要設定跟隨重定向。
Use keep Alive
:錄製的取樣器是否要設定為keep Alive
狀態。Type
:要生成哪種型別的取樣器,HTTPclient4
或Java
,預設HTTPclient4
。
參考: