談起軟件測試,就不得不說一下接口測試,凡是有功能的軟件都離不開接口,沒有接口的軟件只是一個模具或頁面,不具備任何功能。
什么是接口
業內常說的接口一般指兩種:
API:應用程序編程接口,程序間的接口
GUI:圖形用戶界面,人與程序的接口
軟件接口測試中的接口特指API接口
接口測試又稱API測試
接口實例:系統與系統間的接口調用,作用:實現了兩個或多個獨立系統或模塊間的通信和數據交換能力。
接口測試是什么
接口測試就是驗證這些信息能否正確傳遞,驗證這個方法是否正確,有沒有存在潛在的安全,性能問題。
所以總結一下接口測試的測試點就有三個:接口手動測試、接口安全測試、接口性能測試。
為什么要做接口測試
1)互聯網的快速發展,公司內部系統或與外部系統的關聯越來越多,一個業務流程關聯多個后端系統,它們的關聯都是基於接口來實現,接口測試可以將復雜的系統關聯進行簡化,只要做好每個接口的測試就能夠較好的保證系統質量。
2)單個系統的變更,是否會影響到關聯業務系統,比較難用常規的測試方面來覆蓋相關的應用系統(例如使用此接口的外部 系統有N個,不可能每個做功能兼容性測試),但可以通過對接口功能的覆蓋來驗證是否影響它人對接口的調用。
3)接口功能比較單一,能夠比較好的進行測試覆蓋,也相對容易實現自動化持續集成,可以減少人工回歸成本與時間,縮短測試周期。
4)接口相對於界面功能,會更底層一些,測試覆蓋會更容易(如業務在調用接口時做了判斷,當不滿足條件時鏈接就不顯示,此時從界面無法測試相關功能是否做好判斷,通過接口就比較容易)
接口測試范圍
1)業務功能(包括正常、異常場景是否實現)
2)業務規則(覆蓋度是否全面)
3)參數驗證(邊界、業務規則是否達到要求)
4)異常場景(重復提交、並發提交、事務中斷、多機環境、大數據量測試)
5)性能測試響應時間、吞吐量、並發數、資源要求)
6)安全測試(權限驗證、SQL注入等)
接口測試的重點
1、檢查接口返回的數據是否與預期結果一致。
2、檢查接口的容錯性,假如傳遞數據的類型錯誤時是否可以處理。
3、接口參數的邊界值。例如,傳遞的參數足夠大或為負數時,接口是否可以正常處理。
4、接口的性能,http請求接口大多與后端執行的SQL語句性能、算法等比較相關。
5、接口的安全性,外部調用的接口尤為重要。
做好接口測試的前提
1、系統化的接口文檔
傳統的接口文檔,一般采用word或wiki等系統來記錄,從單次使用上似乎比較簡單,因為大家會更習慣這樣的操作,但這種形式存在比較大的問題:
-
接口文檔非標准化,無法直接與接口測試工具接口使用
-
接口維護困難,接口有變化時比較難標識清楚,溝通成本很高
系統化接口文檔,例如rap(淘寶分源的一個系統),具備接口維護標准化、版本化管理、MOCK測試等功能;對標准化的接口內容做二次開發,可以直接導出Soapui等工具使用的格式,直接導入工具中使用,有以下好處:
-
接口測試時不再需要手工輸入相關字段,節省時間成本
-
版本化管理,能夠清晰的知道哪些接口有變化
2、標准化的接口規范
接口管理是做好接口測試很重要的前提,如果一個系統有哪些接口都不太清楚,測試就很難覆蓋到,接口管理建議采用以下方式:
A、按接口提供方為單位進行首次划分,按接口使用方進行二次划分,再按業務模塊進行細分,分類原則根據內容多少進行優化,不需要固定,如本身接口較少就沒有必要分得過細,較多時就需要多划分模塊
如:系統A,提供有 1、2、3、4、5、6、7、8、9 這9個接口,接口分別給B系統、C系統使用,其中1、2為公用接口,3、4、5為B專用,6、7、8、9為C系統專用,划分如下:
B、按接口鏈接URL做為唯一,不同的接口參數做為接口變量,接口有參數變更時在原來接口上進行維護,而不是新增加接口
C、為接口增加版本號,方便清楚哪些接口本次有變更,易於維護用例
接口測試常用工具

1、JMeter JMeter是Apache組織開發的基於Java的壓力測試工具,能夠將請求轉換為腳本來實現,並允許使用正則表達式創建斷言來對請求返回結果進行判斷,具備接口測試功能和性能的能力。
2、PostMan Postman是一款功能強大的網頁調試與發送網頁HTTP請求的Chrome插件,具備Fiddler\httpwatch之類的工具調試請求的功能,同時具備接口管理功能,官網提升腳本保存同步功能,支持接口導入導出
3、Loadrunner HP公司的性能測試工具,使用Python語言或JAVA語言編寫腳本,易學易用
接口測試用例怎么寫
三個步驟:
初始化測試數據
調用接口,傳入輸入數據
對輸出斷言
持續集成接口測試
對接口測試而言,持續集成自動化是核心內容,通過自動化的手段才能有效降低成本,提高接口測試的價值。如果使用LR、JMeter、SoapUI工具做自動化測試,工具本身支持命令行模式運行,可以接合Jenkins 等自動化平台,實現項目版本更新后的自動化回歸測試 關於持續自動化回歸測試的
建議:
1、接口腳本開發時要注意參數的取值的可用性,不因為時間或數據狀態的變化引起腳本不能正常運行,降低腳本維護成本.
2、接口回歸功能的覆蓋度控制,需要根據腳本的實際功能和重要性判斷自動化回歸覆蓋度,回歸內容越多腳本維護成本越高,一般應用接口不建議全功能覆蓋(畢竟接口有變化會做詳細測試,如果沒修改其它變更可能對其產生的影響一般不會影響其邏輯判斷)
3、接口腳本需要一定的自動化校驗能力,除請求http狀態的判斷外,還需要對核心內容的正常性做判斷(判斷內容可與數據庫內容匹配等方式,不建議用寫死的內容)。
4、持續性能測試,還需要做好相關的監控、性能指標的分析自動化,減少人工操作。
接口測試都要掌握哪些知識?
①了解系統及內部各個組件之間的業務邏輯交互;
②了解接口的I/O(input/output:輸入輸出);
③了解協議的基本內容,包括:通信原理、三次握手、常用的協議類型、報文構成、數據傳輸方式、常見的狀態碼、URL構成等;
④常用的接口測試工具,比如:jmeter、loadrunner、postman、soapUI等;
⑤數據庫基礎操作命令(檢查數據入庫、提取測試數據等);
⑥常見的字符類型,比如:char、varchar、text、int、float、datatime、string等;
如何學這些技能?
①系統間業務交互邏輯:通過需求文檔、流程圖、思維導圖、溝通等很多渠道和方式;
②協議:推薦《圖解http》這本書,內容生動,相對算是入門級的書籍,其他的還有《圖解tcp、IP》等;
③接口測試工具:百度這些工具,然后你會發現,好多的教學博客、相關問題解決方案、以及一些基於工具的書籍,當然,選擇合適的書很重要;
④數據庫操作命令:學習網站(W3C、菜鳥教程)、教學博客,以及一些數據庫相關書籍,入門級推薦:《mysql必知必會》、《oracle PL/SQL必知必會》等
⑤跟着身邊大佬走,多問多學,如果身邊沒有大佬也可以加入我們,全國的小伙伴天南地北,可以一起聊天學習,更加了解這個行業情況,趨勢與走向。
參考資料
接口測試的內容就講到這里啦!如有需要了解軟件測試相關的其他內容,可到【主頁】進行查看學習~
🌻推薦閱讀:
💜軟件測試人員必讀的經典書籍(附電子書),前阿里大佬給我推薦...
