1.接口測試定義
1.1什么是接口(API)
接口主要用於外部系統與系統之間以及內部各個子系統之間的交互點,定義特定的交互點,然后通過這些交互點來,通過一些特殊的規則也就是協議,來進行數據之間的交互。
API全稱Application Programming Interface,這里面我們其實不用去關注AP,只需要I上就可以。一個API就是一個Interface。我們無時不刻不在使用interfaces。我們乘坐電梯里面的按鈕是一個interface。我們開車一個踩油門它也是一個interface,我們計算機操作系統也是有很多的接口。
接口就是一個位於復雜系統之上並且能簡化你的任務,它就像一個中間人讓你不需要了解詳細的所有細節。那我們今天要講的Web API就是這么一類東西。像谷歌搜索系統,它提供了搜索接口,簡化了你的搜索任務;再像用戶登錄頁面,我們只需要調用我們的登錄接口,我們就可以達到登錄系統的目的。
首先從我們熟悉的普通基於圖形界面做的手工測試開始,手工測試是這樣子的:
接口測試則是這樣子的:
這里唯一的不同,就是把手工測試操作的圖形界面,改成了接口測試的工具或腳本。也就是說,我們做普通手工測試的大部分測試設計方法,在接口測試中仍然適用。
接口你可以簡單的理解他就是URL,工作原理就會說URL通過get或者post請求向服務器發送一些東西,然后得到一些相應的返回值,本質就是數據的傳輸與接收。
2.為什么要做接口測試
- 接口是各種系統功能的基礎,一旦接口出現問題可能會引起許多系統功能的問題並且不容易定位。
- 測試前移,開展接口測試可以及早發現問題,有效降低測試成本。
- 檢查系統的安全性、穩定性,前端傳參不可信,比如購物,前端價格不可能傳入-1元,但是通過接口可以傳入-1元。
- 接口一般較UI相對穩定,利於進行自動化和持續集成。
測試金字塔:
-
越底層,越高效。
程序的問題,最終還得落在具體的代碼上,所以底層的測試更容易發現問題。 -
越底層,越高效。越底層的Bug,修復成本越低。
越底層測試能越早發現問題,越早發現問題,修復的成本自然越低。但是越底層的測試,越難實施,像上圖的最底層的單元測試,對於技術專業性要求比較高,單元測試一般是由開發人員進行測試。通過對比,接口(API)測試可以獲得較高的投資回報。
3.接口有哪些類型?
接口一般分為兩種:
3.1.系統對外的接口
比如你要從別的網站或服務器上獲取資源或信息,別人肯定不會把數據庫共享給你,他只能給你提供一個他們寫好的方法來獲取數據,你引用他提供的接口就能使用他寫好的方法,從而達到數據共享的目的。比如支付的接口、查詢天氣預報的接口等。
3.2.程序內部的接口
方法與方法之間,模塊與模塊之間的交互,程序內部拋出的接口,比如購物系統,有登錄模塊、加入購物車模塊、提交訂單模塊等,那你要提交訂單就必須先登錄,那么這兩個模塊就得有交互,它就會拋出一個接口,供內部系統進行調用。
往細一點分,接口還分為:WebService接口和HTTP API接口。
3.3.WebService接口
WebService接口是走Soap協議通過HTTP傳輸,請求報文和返回報文都是XML格式的,我們在測試的時候都用通過工具才能進行調用,測試。
3.4.HTTP API接口
HTTP API接口是走HTTP協議,通過路徑來區分調用的方法,請求報文都是key-value形式的,返回報文一般都是JSON串。現在用得最廣泛的是HTTP API接口,我們下一章節來重點學習HTTP協議。
4.接口文檔
標准的接口文檔可以看看聚合API中的接口文檔。
接口文檔中比較重點的內容都要記住了,對於調接口很重要,也是面試很常問的。
聽說你做接口測試比較多,那接口文檔里面都有啥內容?
- 接口地址。
- 請求方式。
- 接口備注。
- 請求格式。
- 參數說明(參數說明中都有哪些說明,比較復雜一點的接口有多少個參數)。
- 錯誤碼參照。
- 請求示例等。
接口用例編寫以及常見Bug在另外一個文檔中再詳細描述