從0到1學習接口自動化測試必備知識!

導讀:在所有的開發測試中,接口測試是必不可少的一項。有效且覆蓋完整的接口測試,不僅能保障新功能的開發質量,還能讓開發在修改功能邏輯的時候有回歸的能力,同時也是能優雅地進行重構的前提。編寫接口測試要遵守哪些原則?測試代碼的結構應該是什么樣的?接口測試有哪些實踐技巧?本文分享作者在接口測試上的實踐總結。
測試工程師是一個高技術含量的崗位,但現在不少人誤以為測試工程師就是“點工”,拿到軟件“點點點”,就可以完成測試了,沒啥技術含量,而一些測試工程師錯誤的工作方法也滋長了這種誤解。
1、什么是接口測試
接口測試是測試系統組件間接口的一種測試。接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。
2、為什么要做接口測試
- 互聯網的快速發展,公司內部系統或與外部系統的關聯越來越多,一個業務流程關聯多個后端系統,它們的關聯都是基于接口來實現,接口測試可以將復雜的系統關聯進行簡化,只要做好每個接口的測試就能夠較好的保證系統質量。
- 單個系統的變更,是否會影響到關聯業務系統,比較難用常規的測試方面來覆蓋相關的應用系統(例如使用此接口的外部 系統有N個,不可能每個做功能兼容性測試),但可以通過對接口功能的覆蓋來驗證是否影響它人對接口的調用。
- 接口功能比較單一,能夠比較好的進行測試覆蓋,也相對容易實現自動化持續集成,,可以減少人工回歸成本與時間,縮短測試周期。
- 接口相對于界面功能,會更底層一些,測試覆蓋會更容易(如業務在調用接口時做了判斷,當不滿足條件時鏈接就不顯示,此時從界面無法測試相關功能是否做好判斷,通過接口就比較容易)

3、接口測試的范圍
- a)業務功能(包括正常、異常場景是否實現)
- b)業務規則(覆蓋度是否全面)
- c)參數驗證(邊界、業務規則是否達到要求)
- d)異常場景(重復提交、并發提交、事務中斷、多機環境、大數據量測試)
- e)性能測試(響應時間、吞吐量、并發數、資源要求)
- f)安全測試(權限驗證、SQL注入等)
4、接口測試的重點
- a)檢查接口返回的數據是否與預期結果一致。
- b)檢查接口的容錯性,假如傳遞數據的類型錯誤時是否可以處理。
- c)接口參數的邊界值。例如,傳遞的參數足夠大或為負數時,接口是否可以正常處理。
- d)接口的性能,http請求接口大多與后端執行的SQL語句性能、算法等比較相關。
- e)接口的安全性,外部調用的接口尤為重要。
5. 測試原則
基礎原則:
- 自動化:接口測試是非交互式的自動化執行,不需要人參與。
- 獨立性:接口測試之間不應該相互依賴。
- 可重復:接口測試可重復執行,不受環境影響。
- 接口測試遵守BCDE原則,保障接口交付質量。
- Border:邊界測試。
- Correct:正確的輸入,正確的預期輸出。
- Design:按照需求和設計文檔編寫測試邏輯。
- Error:錯誤輸入,預期輸出。
- 數據準備:數據準備通過系統服務進行,不能通過直接插入db方式。
- 可測性:對于不可測的代碼需要進行重構成合理的結構。
- 覆蓋性:接口測試需要覆蓋所有UC,同時代碼覆蓋率和分支覆蓋率應達到一定標準,新增代碼必須被覆蓋。
- 持續性:如果代碼修改導致已有接口測試執行失敗,必須修復代碼問題或者測試代碼邏輯。
- 時間要求:接口測試應該在項目發布之前完成,不應放到項目發布之后補充。
以上的基本原則應適用于所有層的自動化測試用例,在編寫接口測試時,除了上面這些原則,還有其他原則需要遵守,先看一張圖:

從系統角度來分析入口調用,以HSF服務為例:
- 外圍系統調用由我們系統提供的服務。
- 系統執行了一堆代碼邏輯,其中包含有分支邏輯。
- 系統執行過程中依賴外部HSF服務,進行了調用,并得到了返回值。
- 系統執行過程中依賴DB查詢或者落地了數據,依賴緩存查詢或者落地了數據。
- 系統執行過程中對外發送了消息。
- 給上游系統返回HSF執行結果。
有效接口測試的關鍵原則是要覆蓋所有入口,mock所有依賴,校驗執行過程中所留下的痕跡,總結如下:
- 入口覆蓋:接口測試用例必須覆蓋HSF服務入口、消息入口、定時任務入口。
- 依賴mock:在基本原則中,有可重復這個原則,即接口測試不能受環境依賴,需要mock掉對外依賴。但對于db依賴,不建議完全mock掉,一方面mock成本高,另外可能覆蓋不到sql和表約束邏輯。
- 校驗完整:有效的接口測試,應該具備完整的校驗,沒有校驗的接口測試是沒有意義的。只要執行過程中,留下的痕跡對業務有影響,都要進行完整校驗,方能保障接口測試的有效性。
HSF接口返回值校驗:按照場景和接口約定進行HSF返回參數校驗。
- DB校驗:校驗落地數據的正確性。
- 緩存校驗:校驗存入緩存中數據的正確性。
- HSF依賴入參校驗:通過mock工具獲得依賴HSF調用的入參,進行入參校驗。
- 消息校驗:通過mock工具獲得發送的消息對象,進行消息體校驗。
6、接口測試常用工具
1、JMeter
JMeter是Apache組織開發的基于Java的壓力測試工具,能夠將請求轉換為腳本來實現,并允許使用正則表達式創建斷言來對請求返回結果進行判斷,具備接口測試功能和性能的能力。
2、Robot Framework
Robot Framework是一款Python編寫的功能自動化測試框架。具備良好的可擴展性,支持關鍵字驅動,可以同時測試多種類型的客戶端或者接口,可以進行分布式測試執行。常用于輪次很多的驗收測試和驗收測試驅動開發(ATDD)。
3、SOAPUI
SoapUI是一個完整的自動化測試解決方案。支持SOAP和REST的Web服務,JMS企業消息層,數據庫,豐富的互聯網應用,等等。而在SoapUI,你從它的直觀和強大的用戶界面這一切。對于自動化程度較高,SoapUI還提供了命令行工具,讓您運行的功能/負載測試和幾乎所有的任務調度程序,或作為您的構建過程中的一個組成部分MockServices集。
4、PostMan
Postman是一款功能強大的網頁調試與發送網頁HTTP請求的Chrome插件,具備Fiddler、httpwatch之類的工具調試請求的功能,同時具備接口管理功能,官網提升腳本保存同步功能,支持接口導入導出。
如果你覺得文章對你有用,歡迎 點贊、轉發、關注、留言。

浙公網安備 33010602011771號