1. 程式人生 > >Jmeter系列(21)- 詳解 HTTP Request

Jmeter系列(21)- 詳解 HTTP Request

如果你想從頭學習Jmeter,可以看看這個系列的文章哦

https://www.cnblogs.com/poloyy/category/1746599.html

 

HTTP Request 介紹

用來發送 HTTP、HTTPS 協議請求

 

HTTP Request 介面

欄位名 作用
名稱 不多介紹啦,建議自定義一個識別度高的名稱
註釋 對於測試沒有任何影響,僅記錄作用
協議

http或https,大小寫不敏感

預設:http

伺服器名稱或IP
  • 伺服器 host 或者 ip,不包括協議
  • 比如:www.baidu.com、192.168.196.128
埠號 目標伺服器的埠號,預設:80
方法 傳送 http 請求的方法
路徑
  • 目標請求的 URL 路徑
  • 不包括協議、host、ip、埠
內容編碼 請求的編碼方式,預設:iso8859
自動重定向
  • 發出的請求的響應碼是3**,會自動跳轉到新目標頁面
  • 只記錄最終頁面的返回結果
跟隨重定向
  • 和自動重定向唯一不同的是:
  • 會記錄重定向過程中的的所有請求的響應結果
使用 KeepAlive
  • jmeter 和目標伺服器之間使用 Keep-Alive 方式進行 HTTP 通訊
  • 真正做效能測試強烈建議不勾選
對POST使用multipart/form-data post 請求需要上傳檔案時勾選
與瀏覽器相容的頭
  • 當勾選 multipart/form-data 時,勾選此項
  • http請求頭中的 Content-Type 和Content-Transfer-Encoding 被忽略
  • 而只發送 Content-Disposition 部分

 

Parameters 講解

欄位 描述
Name 引數名
Value 引數值
URL Encode?
  • 是否要 URL 編碼?
  • 重點:如果引數值包含了中文、特殊字元(非數字字母以外),最好勾上,當然全都勾上最穩妥
Content-Type
  • 引數值的資源型別
  • 預設:text/plain
Include Equals?
  • 當你的引數值為空的時候,可以選擇不包含=,預設勾選
  • 如果引數值不為空,則不可以取消勾選

 

什麼是 URL 編碼

  • URL 編碼解碼,又叫百分號編碼,是統一資源定位(URL)的編碼方式
  • URL 地址(常說網址)規定了數字,字母可以直接使用,另外一批作為特殊使用者字元也可以直接用( / , : @  等),剩下的其它所有字元必須通過 %xx 編碼處理
  • 編碼方法很簡單,在該字元ascii碼的的16進位制字元前面加%,如空格字元,ascii碼是32,對應16進位制是20,那麼 urlencode 編碼結果是 %20 

 

URL 編碼的栗子

直接在網上搜線上 URL 編解碼

 

include equals 的栗子

引數值為空,且勾選 Include equals

 

引數值為空,但不勾選  Include equals

 

其實說的就是等於號而已,一般也不會傳空值,即使傳了也會帶上=

 

Body Data 講解

  • 沒啥好說的,傳 json 字串就行了,注意下格式,後面再講具體栗子
  • 不過倒有個重點:如果 Parameters 有引數列表的話,是無法切換到 Body Data 的哦

 

Files Upload 講解

 

欄位 描述
File Path 檔案的本地路徑
Parameter Name 引數名
MIME Type 資源媒體型別

常見資源媒體型別

型別 檔案字尾 格式
超文字標記語言文字 .html text/html
普通文字 .txt text/plain
XML 檔案 .xml text/xml
PNG 圖片 .png image/png
GIF .gif image/gif
JPEG 圖片 .jpeg、jpg  image/jpeg

 

型別 檔案字尾 格式
表單中進行檔案上傳   multipart/form-data
表單預設提交資料的格式   application/x-www-form-urlencoded
XML 資料格式   application/xml
JSON 資料格式   application/json
 RTF 檔案 .pdf  application/pdf
RTF 文字 .rtf application/rtf
GZIP 檔案  .gz application/x-gzip
TAR 檔案 .tar application/x-tar
AVI 檔案 .avi  video/x-msvideo
MPEG 檔案 .mpg、.mpeg video/mpeg

 

不同的content-type在jmeter中如何輸入引數

前提

因為是需要真實介面進行測試的,這裡提供兩種方案

  • 自己用 Flask 框架開發了本地的介面進行測試, 如果有需要的同學進群領取哦:870155189
  • 或者進入 http://open.yesapi.cn/?r=user/registration&from=wx_837493986,直接註冊個賬號,弄個免費會員,有線上免費的介面提供測試哦

 

application/x-www-form-urlencoded 的栗子

備註:也是表單提交最常見的栗子

 

Parameters 方式傳參

 

總結

  • 最終表單的引數列表會拼接到 URL 中,所以如果包含了中文、特殊字元就要勾選編碼?哦
  • 這裡不可以通過 Body Data 傳遞引數哦,會無法識別到引數,已實踐過(即使加了 HTTP請求頭也不行),乖乖用 Parameters 的方式傳參

 

content-type:application/json 的栗子

Body Data 方式傳參

 

新增 HTTP請求頭

 

請求體

 

請求頭

 

結論

重點就是新增 HTTP請求頭,指明 Content-type 是 json 格式

 

content-type:multipart/form-data

重點:用於 post 請求,需要檔案上傳的場景;記住不是 get 請求

 

請求引數列表

如果選了 get 方法的話,檔案引數是不會生效哦

 

檔案引數

 

請求體

 

重點

  • 如果添加了 HTTP請求頭,請務必不要新增 content-type : multipart/form-data 
  • 如果加了的話:那麼所有的請求引數都會被當成檔案以二進位制形式傳輸,我們 parameters 裡的文字格式引數就不會被識別,介面會提示引數為空

 

HTTP Request Advance

說實話我還沒用過這部分的內容,不過還是得了解下每個配置項是什麼意思哦

 

Client implemention 和 Timeouts

欄位 描述
implementation 傳送http請求的方式,可選項為 java、HttpClient4(預設)
Connect 連線超時時間,單位毫秒
Respones 響應等待超時時間,單位毫秒

 

Embedded Resources from HTML Files

  • 從HTML檔案獲取所有內含的資源
  • jmeter 在發出的  HTTP請求獲得響應的 HTML檔案內容後,對 HTML進行解析並獲取HTML中包含的所有資源(圖片、flash等)
欄位 描述
Retrieve All Embedded Resources 傳送http請求的方式,可選項為 java、HttpClient4(預設)
Parallel downloadds. Number

是否使用自設資源處。啟用後可以設定資源池大小,預設為6

URLs must match URL 匹配過濾,填寫此項則只會下載與此內容項匹配的 url 的資源

 

Source address

只用於 HTTP協議且 implemention = HttpClient4 時

欄位 描述
IP/Hostname IP /主機名以使用特定的IP地址或(本地)主機名
Device 選擇裝置以選擇該介面的第一個可用地址,該裝置可以是IPv4或IPv6
Device IPv4 選擇IPv4裝置來選擇名稱裝置的IPv4地址(如eth0, lo, em0)
Device IPv6 選擇IPv6裝置來選擇名稱裝置的IPv6地址(如eth0, lo, em0)

 

Proxy Server

代理伺服器

欄位 描述
Server Name or IP 代理伺服器的名稱或者IP地址
Port Number 代理伺服器的埠號
Username 代理伺服器的使用者名稱
Password 代理伺服器的密碼