在測試工作中,我們經常要對web應用或者app進行接口測試,接口測試過程中最重要的就是掌握一個接口中的請求和響應。本文主要是為大家介紹一下接口中的請求和響應到底是什么,在前后端交互中主要起什么作用。
一:介紹一下HTTP
我們一般在瀏覽器中測試web項目,通常網絡交互中使用的都是http和https,所以首先我們要搞清楚的是http協議,https是對http的升級,主要是在http協議基礎上增加了安全協議ssl,是一種比http更安全的協議,只要我們了解了http,就可以搞清楚一般的交互過程。
HTTP協議基礎
HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫;
是用于從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議;
HTTP是一個基于TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)
HTTP協議工作原理
HTTP協議工作于瀏覽器端-服務端(BS)架構上。
瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送請求。
Web服務器有:Apache服務器,tomcat,IIS服務器(Internet Information Services)等。
Web服務器根據接收到的請求后,向客戶端發送響應信息。
HTTP默認端口號為80,但是你也可以改為8088或者其他端口。
HTTP協議特點
HTTP是無連接的:無連接的含義是限制每次連接只處理一個請求。
HTTP是媒體獨立(超文本)的:這意味著,只要客戶端和服務器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送。
HTTP是無狀態:HTTP協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
HTTP協議結構
HTTP是基于客戶端/服務端(B/S)的架構模型,通過一個可靠的鏈接來交換信息,是一個無狀態的請求/響應協議。
一個HTTP"客戶端"是一個應用程序,通過連接到服務器達到向服務器發送一個或多個HTTP的請求的目的。
一個HTTP"服務器"同樣也是一個應用程序通過接收客戶端的請求并向客戶端發送HTTP響應數據。
HTTP使用統一資源標識符(Uniform Resource Identifiers, URI)來傳輸數據和建立連接。
一旦建立連接后,數據消息就通過類似Internet郵件所使用的格式[RFC5322]和多用途Internet郵件擴展(MIME)[RFC2045]來傳送。
二:接口測試中的請求
HTTP的請求結構
客戶端發送一個HTTP請求到服務器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成,下圖給出了請求報文的一般格式。
HTTP的請求方法:
從以上圖中可以看出,一個接口請求的核心就是請求地址,請求方法,請求參數,還有請求頭中的信息,比如cookie,token等,這些就是核心,只要你在接口測試中符合這些要求,就可以使用工具做出正確的請求。
三:接口測試中的響應
HTTP的響應結構
HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文。具體格式如下圖所示:
HTTP的響應頭
HTTP響應狀態碼
當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在服務器發出請求。當瀏覽器接收并顯示網頁前,此網頁所在的服務器會返回一個包含HTTP狀態碼的信息頭(server header)用以響應瀏覽器的請求。
HTTP狀態碼的英文為HTTP Status Code。
HTTP響應狀態碼
常見狀態碼
200 - 請求成功
301 - 資源被永久轉移到其它URL
404 - 請求的資源(網頁等)不存在
500 - 內部服務器錯誤
四:如何使用請求和響應
在接口測試中,不管我們使用哪種工具進行接口測試,比如postman或者jmeter,主要是理解接口接口請求和接口響應,工具的作用都是為了驗證預期的響應結果是否符合接口文檔中的說明,所以只要我們在接口測試中認真的對接口的結構進行分析,分析出上面請求的特點和響應的特點,就可以使用工具根據接口文檔的說明對請求進行模擬,然后看工具請求后得到的響應,再通過響應的結果跟接口文檔比對,看響應是否符合要求,就可以驗證項目中的接口的后臺實現是否符合要求,也就可以順利的完成接口測試了。