一、什么是接口(API)?
1、百度詞條解釋:
API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節。
2、白話解釋:
咱們去餐廳吃飯,首先:和前台點餐員點餐“1、魚香肉絲,2、宮保雞丁”;然后:點餐員通過點餐系統把我們點的菜傳遞給后廚工作人員,后廚工作人員制作菜品;最終:餐廳服務人員給我們上菜。
在整個過程中,只需要關注輸入(也就是我們要點什么菜,餐廳是否有我們要點的菜)、輸出(最終上的菜確實是我們點的東西),不需要關注處理過程和內部邏輯(后廚是如何做菜的)。
二、接口分類——內部接口與外部接口:
1、內部接口:
供程序內部調用的接口,一般指一個方法、函數、模塊等。
例如:百度貼吧發帖需要調取登錄接口,登錄成功后才能發帖。登錄模塊就是內部接口。
2、外部接口:
提供給程序外部調用的接口(第三方)。
例如:用滴滴打車在支付時需要調用微信/支付寶等方式進行支付。微信/支付寶支付此時對於滴滴來說就是外部接口。
三、什么是接口測試?
1、官方解釋:
測試系統組件間接口:主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點:要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。
2、白話解釋:
(1)接口是否滿足業務需求 (去飯店吃飯:能否成功點菜,並成功上菜)
(2)各字段是否正常(字段:菜名、單號、桌號是否正確)
(3)實際結果與預期是否一致(服務員上的菜和我們點單的菜是否一致,至於大廚如何做菜,我們不關注)
3、接口測試重點關注內容:
(1)接口要實現的業務功能
(2)不同的輸入對應不同的輸出
(3)錯誤處理情況
(4)不用關注接口的具體代碼實現
四、為什么要進行接口測試?
1、可以更早的介入測試。
例如:開發完一個接口就測試一個接口,不用等整個模塊完成才開始測試,減少延期風險。
2、節約成本,越早發現bug,修復成本越低。
例如:在功能測試時發現底層bug,可能會導致項目重構或延期。
3、接口測試好了,前端變化只需測試前端即可,節省時間。
4、可以發現很多前端發現不了的問題。
例如:抽獎活動,每天只允許抽三次,三次后前端界面的抽獎按鈕灰顯,可通過調用接口跳過頁面的限制,進行第四次抽獎。如后端接口沒做限制,可直接對服務器進行請求,再次抽獎;寫個腳本不間斷的調用接口進行抽獎,一定能抽到最大獎。
5、可以檢查系統的安全性、穩定性。
例如:在搜索時,前端會過濾掉特殊的SQL語句,如后端接口未過濾,會導致SQL注入。
6、可以檢查系統的異常處理能力。
例如:購買京東商品,通過前端下單時商品價格不可能為-1元,但調用接口可以傳參數-1元,接口要做此特殊處理。
7、接口測試更容易進行自動化以及持續集成,減少回歸測試的人力成本和時間。
例如:每次項目上線前,跑一遍接口自動化腳本,可以確保舊有接口以及新增接口各項正常。