接口定義
一般我們所說的接口即API,那什么又是API呢,百度給的定義如下:
API(Application Programming Interface,應用程序接口)是一些預先定義的接口(如函數、HTTP接口),或指軟件系統不同組成部分銜接的約定。用來提供應用程序與開發人員基於某軟件或硬件得以訪問的一組例程,而又無需訪問源碼,或理解內部工作機制的細節。
有點繞口,但我們看下定義里面這些關鍵字:預先定義的接口 (如函數、HTTP接口)、基於軟件或硬件得以訪問、無需訪問源碼、無需理解內部工作機制,大概就明白了。
舉例說明:
-
電腦或手機上提供了各種物理硬件接口,如:USB接口、充電接口、耳機接口、麥克風接口等。這些不同的接口有不同的功能,比如通過USB接口插入U盤就可以拷貝數據,插入耳機接口可以聽音樂,我們無需關心這些接口的工作原理,只需通過這些接口滿足我們的使用需求即可。
-
在中國天氣網網上查詢某個城市天氣,輸入城市名稱,即可獲取對應城市的天氣。查詢背后的本質也是調用了網站后台接口來獲取數據,這里的接口是Web服務軟件接口。用戶不需要關注數據在網站后台是怎么查詢的,只需要得到返回結果即可。
接口分類
軟件接口分類的維度有很多,類型比較難以界定,也可能經常會被搞混淆。
以接口所使用的協議不同可做如下分類:
-
HTTP 接口,使用 HTTP 協議
-
Web Service 接口,使用 soap
-
WebSocket 接口,使用 TCP、UDP 協議
-
Dubbo 接口,使用 Dubbo 協議
當然,以使用協議不同進行分類其實也是不嚴謹的,例如 soap 協議也是基於 HTTP 協議的封裝,Dubbo 協議基於 TCP 協議,所以這個分類也僅供參考。
以接口設計風格不同可做如下分類:
-
RPC 類型接口,RPC 面向過程調用(Remote Procedure Call Protocol),主要是基於 TCP/IP 協議
-
REST 類型接口,REST 面向資源調用(Representational State Transfer),主要是基於 HTTP 協議
至於這兩種風格的具體內容,這里不做過多說明,有興趣的同學可以自行查找資料。
常見接口
接口測試即對接口進行校驗性測試,測試工作過程中常遇到的接口有HTTP、Dubbo兩種,兩者對比如下 (理解有誤的話歡迎評論指正):

目前絕大部分公司的接口測試都是針對HTTP接口。
以登錄TesterHome網站為例,我們在網頁上輸入用戶名、密碼,點擊【登錄】按鈕后,網頁就會請求登錄接口 (該接口為HTTP接口) 向服務端發起登錄請求。
輸入錯誤的用戶名或錯誤,登錄接口(sign_in)就會返回錯誤,如下:

輸入正確的用戶名和密碼,登錄接口校驗通過,登錄成功且跳轉至首頁,如下:

通過示例,我們對客戶端跟服務端之間怎樣通過接口的形式進行數據的交互有個大致的印象。
測試分層
通常把軟件測試分為三層金字塔模型,由上至下依次為:UI測試、接口測試、單元測試。

就項目質量而言,金字塔的每一層都無法被替代,我們平常測試可能更多的是關注UI測試,但對於滿足滿足被測系統的質量而言這往往是不能夠的,除此之外還需要對接口進行測試 (單元測試一般由開發完成)。
接口測試的必要性及優勢如下:
-
比UI測試更接近底層,越早發現底層的問題,解決成本越低。
-
相對於UI測試而言,接口測試更容易發現后端隱藏的bug。
-
在前后端分離的設計模式下,容易繞過前端篡改或偽造數據進行接口請求,因此需要對接口的異常處理能力及安全性方面進行測試。
-
在並發的情況下,需要對接口的穩定性進行性能測試,否則容易造成系統問題。
-
相對於單元測試而言,接口測試更接近用戶使用場景,且投入成本更低。
-
相對於UI測試,接口測試可以進行維護成本更低、效率更高的自動化測試。
測試左移和右移
近些年測試行業越來越多地提及測試的左移與右移,它們的定義如下。
測試左移
測試左移 ,即讓測試介入開發提測之前的部分測試工作。比如,在架構設計階段或開發階段,測試人員就介入開始考慮產品的可測試性,並管理開發自測等。此外,測試可以更進一步擴展到需求評審階段,讓測試人員不僅僅是了解需求,還要評估需求的質量。
測試右移
測試右移,即讓測試介入應用上線后的部分工作。比如,產品上線過程中后上線后,測試人員可進行線上巡檢。此外,產品上線后,測試人員仍需要關注線上情況,發現問題需及時跟進,將影響降到最低。
測試的左移與右移是為了更好的把控項目的質量,而不管是左移還是右移,在實踐的過程中,對接口的質量關注仍然是重點。
總結
就當前軟件測試招聘的市場需求以及趨勢而言,接口測試是測試人員必須掌握的技能,而接口自動化測試則是加薪利器。
工作過程中更多的是對HTTP協議的接口做接口測試,后續博客針對的也是HTTP類型的接口。
