前言
掌握了http協議,就掌握了介面測試
筆者在網路上看過不少介面測試教程,一上來就開始講怎麼操作工具,而不告訴讀者為什麼要這麼操作。讀者可能照貓畫虎成功了,也可能操作失敗了但不知為何出錯。
因此,本文作為介面測試的入門第一課首先會給大家瞭解到執行介面測試每一步操作的目的和原理,由此大家才能從理論到實踐上掌握介面測試,並且熟練之後有自己的創造性發揮。
本文所用的介面測試工具為Apifox,請大家在往下讀之前先安裝註冊好工具。
Apifox官方下載地址:http://www.apifox.cn
目錄
介面測試測什麼
介面測試的物件:伺服器介面
伺服器介面與前端通訊的方式:http協議
Apifox介面測試原理
用Apifox構建第一個介面請求
正文
一.介面測試測什麼
介面測試主要是測試系統 元件間介面的一種測試,主要用於測試伺服器與前端(web瀏覽器,APP)之間的資料互動介面。 測試的重點是要檢查介面引數傳遞的正確性,介面功能實現的正確性,輸出結果的正確性,以及對各種異常情況的容錯處理的完整性和合理性。
由引文對介面測試的定義可得,介面測試的物件是伺服器介面,介面測試的內容包括:介面引數檢驗,介面功能實現是否正確,介面異常情況容錯處理。
介面測試的內容是《Apifox介面測試》系列教程後面的內容,本文主要講解伺服器介面,前端如何通過http協議與伺服器通訊,Apifox等介面測試工具如何實現介面測試。
二.介面測試的物件:伺服器介面
API指的是一組預先定義好的函式,來讓系統或外部的其他元件可以執行它內部實現的功能,但又無須訪問原始碼或者理解其內部邏輯。
在需求開發過程中,前後端分離開發,兩端的研發人員會共同定義好介面,編寫介面文件,此後的開發過程中需要遵循這份協議文件。
因此介面測試也是一種黑盒測試,測試人員需要根據介面文件來對伺服器Api進行測試,來檢測約定的功能是否正確實現,是否有對異常情況做容錯處理。
而介面文件的編寫是依據前後端資料傳輸的協議——Http協議進行的。
要會用介面文件,首先先理解http協議。
三.伺服器介面與前端通訊的方式:http協議
伺服器和前端通過互相傳送http報文完成資料互動。本小節將介紹如何建立http報文,以及如何理解報文的每一個部分,瞭解完就可以掌握介面測試的基礎內容。
http報文的三個組成部分 http報文是一個格式化資料塊。報文型別包括客戶端請求,伺服器響應。它們由3個部分組成:
起始行(start line) 對報文進行描述
首部塊(header) 包含屬性 Content-Type: Content-Length:
主體(body) 包含文字或二進位制資料,可以為空
請求報文的格式
<method><request-URL><version>
<headers>
<entity-body>
響應報文的格式
<version><status><reason-phrase>
<headers>
<entity-body>
各個欄位的含義如下:
方法(method):前端希望對伺服器執行的操作,包含get,post,put,delete等方法;
方法 功能
GET 從伺服器獲取資料
POST 向伺服器傳送要處理的資料
HEAD 只從伺服器獲取文件的首部
DELETE 從伺服器上刪除資料
PUT 向伺服器提交資料
請求url(request-URL):所請求資源路徑,通過它可找到資源放置的位置。 格式類似於:https://www.apifox.cn/help/ap...
版本(version):報文所使用的http版本,格式類似於:HTTP/1.0
首部(headers):可以有0個或多個首部,常見的首部如下: 常見的首部
實體主體(entity-body):包含一個資料塊,支援多種資料格式,如html頁面,圖片,視訊,原始碼等等。
狀態碼(status-code):描述請求結果,成功或者失敗。
原因短語(reason-phrase):原因短語是狀態碼的可讀版本,只對人類有意義。
這些欄位初學者會覺得非常抽象難以理解和記憶,但當後面接觸到api文件和用apifox做介面測試的時候,就會頓悟——api文件裡的引數和方法,url的含義和介面測試介面每個空格要填什麼,返回值代表什麼含義。
請耐心繼續往下讀。
四.讀懂API文件
對於測試人員,準備介面測試所需要的文件有產品需求文件+API文件。
需求文件用於梳理介面為何這麼設計、是否合理;
針對單個介面,介面文件用於獲取:介面描述,請求說明,返回說明。
以百度開放API,文字識別介面為例:我們想要使用它的文字識別功能,需要去呼叫它的介面,那麼需要了解發起這個文字識別介面請求,每個欄位需要填什麼內容。
*注:Apifox的ApiHub中,收集了大量開放的API,初學者可選取某個api深入瞭解介面文件,或作為介面測試的練習物料,注意有些介面需要先獲取使用許可權。
Api Hub收集的開放API
五.Apifox介面測試原理
對於伺服器來說,Apifox也是一個前端,只不過其他前端的介面請求由研發人員在程式碼裡封裝好,在特定條件下被觸發發起請求,而Apifox中,介面請求由使用者手動封裝,手動發起。
Apifox介面
Apifox介面
看完Apifox介面測試的介面,讀者想必能發現,整個介面就是讓讀者手動構建出一個http請求出來,上兩節我們講的抽象的http協議終於落了地。
因此一個最基礎的http介面測試所需要做的步驟就是手動填寫完成併發出一個http請求,校驗引數。
step1.選擇請求方法->填寫請求url->填寫url引數->填寫body引數和header引數(如果有)
step2.手動傳送請求
step3.檢視返回引數是否正常,是否符合介面文件的約定
用Apifox構建你第一個測試請求
在鋪墊完上述那麼多理論基礎之後,大家終於可以開始上手使用apifox來做介面測試了。
練習1:用get請求獲取html頁面
step1:在apifox的新建介面tab輸入“http://www.baidu.com”,請求方法選擇GET,header引數,url引數,body引數均為空,接著點選send按鈕。 step2:檢視返回值,可以看到請求回來的資料是一個html頁面,即百度首頁,我們點選‘preview’按鈕,可以看到一個完整的頁面顯示出來
練習2:獲取百度開放API的acess_token,即獲得使用api的授權
step1:檢視百度開放api獲取acess_token的介面文件,獲取請求方法和請求引數
介面文件描述
step2:根據介面文件描述的,在apifox介面測試介面選擇post方法,在params裡填寫3個請求引數, (client_id和client_secret需要建立應用後才能獲得,沒有可以先去建立)
填寫請求引數
填寫請求引數
step3:點選下方實際請求tab,可以看到apifox實際發出的介面請求形式 如下: apifox發出實際請求
step4:檢視返回引數可看到返回了我們需要的acess_token 欄位:
練習完成。大家可以利用自己公司內部的介面文件/外部開放api繼續進行練習鞏固。
複習題
1.寫出http協議請求報文和相應報文的格式,並說明每個欄位的含義。
2.api文件有哪幾部分組成,在介面測試中分別發揮什麼作用
3.複述用Apifox做簡單介面測試的步驟。
*《Apifox介面測試教程》系列教程連載中,敬請期待!