『動善時』JMeter基礎 — 47、JMeter的HTTP代理伺服器詳細介紹

繁華似錦Fighting發表於2021-06-19

HTTP代理伺服器允許JMeter在使用常規瀏覽器,瀏覽Web應用程式時攔截並記錄操作。JMeter將建立測試樣本物件,並將其直接儲存到的測試計劃中。這樣你就可以在操作錄製的同時,還可以檢視錄製的測試計劃。

要使用HTTP代理伺服器,需要設定瀏覽器對所有HTTP和HTTPS請求使用代理。錄製指令碼時,最好使用無痕瀏覽模式,這可以確保瀏覽器沒有儲存的Cookie資訊,並防止儲存某些更改。例如:Firefox不允許永久儲存證照替代。

1、HTTP代理伺服器的新增

新增HTTP代理伺服器元件操作:選中“測試計劃”右鍵 —> 新增 —> 非測試元件 —> HTTP代理伺服器

HTTP代理伺服器介面如下:

image

2、HTTP代理伺服器介面詳解

HTTP代理伺服器元件的詳細說明:

  • 名稱HTTP代理伺服器元件的自定義名稱,見名知意最好。
  • 註釋:即新增一些備註資訊,對該HTTP代理伺服器元件的簡短說明,以便後期回顧時檢視。

(1)State:狀態

image

說明

  • 啟動按鈕:啟動代理伺服器。一旦代理伺服器啟動並準備接受請求,JMeter就向控制檯寫入訊息:“代理啟動並執行!”
  • 停止按鈕:停止代理伺服器。
  • 重啟按鈕:停止並重新啟動代理伺服器。當你操作(改變、新增、刪除)包含、排除過濾器時,這個按鈕很有用。

(2)Global Settings:全域性設定

image

說明

  • 埠:設定JMeter代理伺服器所要用的埠,不能被佔用,否則JMeter無法使用。
    預設啟用8888埠。
    可以在CMD中使用netstat -ano|findstr "8888"檢視埠是否被佔用。
  • HTTPS Domains:編寫代理主機的域名或者主機IP地址,可以對指定地址進行請求錄製。
    例如:* .example.com*.subdomain.example.com

(3)Test Plan Creation:測試計劃建立

test plan content:測試計劃內容。

image

說明

  • 目標控制器:選擇錄製的指令碼所儲存的位置。
    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 RedirectsRetrieve All Embedded Resources…等選項將被設定上。這種情況雖然很多人說比較推薦,但是個人覺得會丟失許多重要的請求,建議大家還是視情況選擇。
    5)Put each group in a new transaction controller:每個Sampler請求開始時,都會生成一個事務控制器,分組的所有取樣器都儲存在控制器下。
  • 記錄HTTP資訊頭:要向測試計劃新增資訊頭嗎?如果勾選,則將向每個HTTP取樣器,新增HTTP資訊頭管理器。
  • 新增斷言:為每個空的取樣器新增一個斷言。
  • Regex matching:指定在替換變數時,是否使用正規表示式匹配。
    如果勾選,則將取樣器中的資訊,使用正規表示式來匹配使用者定義變數值,替換為變數名${變數名},進行替換。匹配時,它只接受整個詞匹配,不接受匹配單詞一部分。

(4)Requests Filtering:請求過濾

image

說明

  • 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取樣器設定

image

說明

  • prefix/Transaction name:在錄製時,在取樣器名稱前新增指定的字首,或者使用使用者指定的事務名稱,替換取樣器名稱。
    例如:指定prefixaa,如下圖所示:
    image
    例如:指定transaction namebb,如下圖所示:
    image
  • Create new transaction after request (ms):兩個請求之間的不活動時間超過此值,則將它們分為兩個單獨的組。
  • 從HTML檔案獲取所有資源:在生成的取樣器中,設定獲取所有嵌入式資源。
  • 自動重定向:錄製的取樣器是否要設定自動重定向。
  • 跟隨重定向:錄製的取樣器是否要設定跟隨重定向。
  • Use keep Alive :錄製的取樣器是否要設定為keep Alive狀態。
  • Type:要生成哪種型別的取樣器,HTTPclient4Java,預設HTTPclient4

參考:

相關文章