移動互聯網公司的一般架構簡化模擬
接口測試背景和必要性
接口測試是測試系統組件間接口(API)的一種測試,主要用於檢測內部與外部系統、內部子系統之間的交互質量,其測試重點是檢查數據交換、傳遞的準確性,控制和交互管理過程,以及系統間相互邏輯依賴關係等。
現在的互聯網應用(App)已經普遍基於前後端分離架構思路構建,即後端提供數據接口,前端調用接口返回 JSon 數據渲染到 UI。而隨著微服務的流行,後端服務模塊越來越多,技術團隊迫切需要一個效率更高更穩定的獲取系統質量信息的方法,以便進行缺陷檢測和質量監督。
真實的企業後端服務和分層自動化的關鍵質量保證手段
之前基於 UI 自動化測試技術的思路和手段由於低效繁雜且容易出錯已經無法滿足實際需要,而面向服務的接口自動化測試體系則應運而生,成為業界最主流的質量管理手段。尤其是對高複雜性的互聯網企業平臺,系統越複雜龐大,接口測試自動化和持續集成的效果就越明顯。業界已經有成熟的低成本、高效率的解決方案、開源工具和案例經驗。當下,熟悉和掌握接口自動化測試技術也成為了一線互聯網企業對中高級測試開發工程師的基本要求。
接口測試的質量目標
建設完備的接口自動化測試體系主要從以下幾個角度考慮:
質量維度
功能正常:保持新老版本的兼容
性能正常:單次請求的響應時間跟總體的 qps 相關
變更檢測:字段的缺失,字段的類型變更
異常和健壯性測試
質量體系
構建接口層的快速穩定的質量保證體系
構建接口監控體系
接口測試流程
在企業內部實施接口測試的實際流程如下:
接口的範圍:需要覆蓋多少業務和接口
接口分析:接口的協議、上下游依賴
接口測試用例設計:業務用例如何模擬和覆蓋
接口測試框架選擇:選擇合適的框架
測試用例編寫與維護:用例編寫與維護更新
持續集成:不斷集成測試
待測接口範圍
常見的待測接口範圍如下:
業務需求調研:研發和產品反饋常出問題的業務
接口文檔:人工文檔、Swagger 自動生成的文檔
代碼分析:分析 Spring 等框架的代碼
線上 Log 和數據:線上的生產監控和接口 Log
客戶端抓包:基於用戶角度的接口行為分析
常見抓包分析
監聽分析:TCPDUMP + WireShark + HAR 提取工具
代理分析:Charles + BurpSuite
轉發分析:修改 Host 域名 + 反向代理轉發
測試用例設計
接口調用的流程分析
代理抓包
線上 Log 提取
人工用例補充:用流程圖和思維導圖進行業務建模
正常場景用例 Right Path
異常場景用例
安全和穩定性用例
接口測試框架選擇
關於如何選擇接口測試框架,列舉幾個常見的框架特性供參考:
早期階段:基於各種語言的 HTTPClient 封裝
JMeter:性能測試工具,不具備完備的接口測試框架功能
RobotFramework:強大的ATDD工具,不過約束性太大
RestAssured + Swagger
SoapUI [商業化]
這裡推薦開源的 Rest-Assured,它有如下優點:
簡約的接口測試 DSL
支持 XML JSon 的結構化解析
支持 XPath JSonPath GPath等多種解析方式
對 Spring 的支持比較全面
落地接口自動化測試體系有哪些技能挑戰?
要真正落地接口自動化測試體系,測試開發工程師必須根據公司業務實際情況,選擇合適的框架,並熟練掌握接口測試工具和平臺使用,設計出通用、易於校驗、健壯易用的接口測試用例,還需要掌握數據驅動機制,能用斷言來完善接口測試用例。
其次,還需要了解接口測試體系架構與常見後端發佈機制,能基於 RPC 協議的微服務框架如 Dubbo 做測試,熟悉測試用例和套件管理機制,能掌握 Jenkins 執行用例的方法,讓接口測試實現真正的自動化。
另外,還要對接口測試方案做持續優化,可進一步通過抓包、Hook 等方法實現接口測試用例的自動生成,並掌握基於接口的快速回歸測試手段提升效率。
熟練掌握接口自動化測試體系背後的這些技能和處理問題的思路,實現時間、人力、收益的平衡,對於一個經驗尚淺的初、中級測試開發人員來說絕對是一個艱鉅的挑戰。
(文章來源於霍格沃茲測試學院)