軟體測試必須掌握的 http 網路協議知識

测试人生路發表於2020-12-29

## 一、http1、http2、http3 的區別

1、http1

1)持久連線:一個 TCP 連線可以傳輸多個(6 個)http 請求,預設持久連線

2)不成熟的管線化:等一個請求回來再去發另外一個請求

3)安全機制差

2、http2

1)基於 SPDY 協議,專注於效能,目標是一個使用者和網站只需要進行一次連線

2)二進位制傳輸:將請求和響應分為小的幀,採用二進位制編碼,以前的 headbopdy 變成幀資料

3)頭部 head 壓縮:只傳送有差異的資料

4)多路複用:只要建立一個 TCP/IP[連線,多路並行,傳送響應都在同一個連線進行

5)服務端推送 server push

6)提供安全性 https

3、http3

1)基於 QUIL 的 UDP,取了 TCP 和 TLS 加密的精華

2)提供安全性 https:非對稱加密,公鑰和私鑰。客戶端 服務端

4、總結

HTTP/1.1 有兩個主要的缺點:安全不足和效能不高。HTTP/2 完全相容 HTTP/1,是 “更安全的 HTTP、更快的 HTTPS",頭部壓縮、多路複用等技術可以充分利用頻寬,降低延遲,從而大幅度提高上網體驗;QUIC 基於 UDP 實現,是 HTTP/3 中的底層支撐協議,該協議基於 UDP,又取了 TCP 中的精華,實現了即快又可靠的協議。

## 二、HTTP 協議的主要特點

1、支援客戶/伺服器模式。

2.簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有 GET、HEAD、POST。每種方法規定了客戶與伺服器聯絡的型別不同。由於 HTTP 協議簡單,使得 HTTP 伺服器的程式規模小,因而通訊速度很快。

3.靈活:HTTP 允許傳輸任意型別的資料物件。正在傳輸的型別由 Content-Type 加以標記。

4.無連線:無連線的含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。

5.無狀態:HTTP 協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。

## 三、URL 詳解

HTTP 使用統一資源識別符號(Uniform Resource Identifiers, URI)來傳輸資料和建立連線。URL 是一種特殊型別的 URI,包含了用於查詢某個資源的足夠的資訊

URL,全稱是 UniformResourceLocator, 中文叫統一資源定位符,是網際網路上用來標識某一處資源的地址。以下面這個 URL 為例,介紹下普通 URL 的各部分組成:

http://www.baidu.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

從上面的 URL 可以看出,一個完整的 URL 包括以下幾部分: 1.協議部分:該 URL 的協議部分為 “http:”,這代表網頁使用的是 HTTP 協議。在 Internet 中可以使用多種協議,如 HTTP,FTP 等等本例中使用的是 HTTP 協議。在” HTTP” 後面的 “//” 為分隔符

2.域名部分:該 URL 的域名部分為 “www.baidu.com”。一個 URL 中,也可以使用 IP 地址作為域名使用

3.埠部分:跟在域名後面的是埠,域名和埠之間使用 “:” 作為分隔符。埠不是一個 URL 必須的部分,如果省略埠部分,將採用預設埠

4.虛擬目錄部分:從域名後的第一個 “/” 開始到最後一個 “/” 為止,是虛擬目錄部分。虛擬目錄也不是一個 URL 必須的部分。本例中的虛擬目錄是 “/news/”

5.檔名部分:從域名後的最後一個 “/” 開始到 “?” 為止,是檔名部分,如果沒有 “?”,則是從域名後的最後一個 “/” 開始到 “#” 為止,是檔案部分,如果沒有 “?” 和 “#”,那麼從域名後的最後一個 “/” 開始到結束,都是檔名部分。本例中的檔名是 “index.asp”。檔名部分也不是一個 URL 必須的部分,如果省略該部分,則使用預設的檔名

6.錨部分:從 “#” 開始到最後,都是錨部分。本例中的錨部分是 “name”。錨部分也不是一個 URL 必須的部分

7.引數部分:從 “?” 開始到 “#” 為止之間的部分為引數部分,又稱搜尋部分、查詢部分。本例中的引數部分為 “boardID=5&ID=24618&page=1”。引數可以允許有多個引數,引數與引數之間用 “&” 作為分隔符。

## 四、如何測試 http 介面請求

介面測試一般是使用介面測試工具進行測試的,主要使用的介面測試工具有:apipost、jmeter 等


開啟介面測試工具 apipost,選擇請求方法,輸入 url 地址和引數,點選發生就可以對介面進行測試了。

相關文章