介面定義
一般我們所說的介面即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型別的介面。