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