簡介
接口:接口可以叫做 API(Application Programming Interface),其實本質上就是後端的開發預先定義好的函數,這些函數可以提供一些確定的功能和服務。接口是在軟件開發中連接不同系統、軟件或組件的關鍵點。它定義了通信方式和規範,協助組件之間有效地交互和協作。
接口測試:接口測試是驗證系統不同組件或模塊之間的通信和數據交換的軟件測試類型。它基於接口的輸入和輸出,測試每個接口在不同條件下的行爲和功能。接口測試的目標是確保系統各組件之間的通信和數據交換準確、可靠。
接口是前後端交互的橋樑。也就是前端和後端要進行數據交互時,都是需要通過接口的。
這是接口測試在實際當中的一些應用場景,通過接口對服務進行驗證。
應場場景
集成測試:確保軟件模塊能夠正確集成並正常通信。
版本迭代測試:驗證新版本接口兼容性,保證舊版本功能正常。
性能測試:評估接口在高負載情況下的性能表現。
安全測試:檢查接口安全性,確保數據傳輸安全。
錯誤場景測試:測試異常情況下接口行爲,如錯誤輸入數據、網絡中斷等。
自動化測試:使用自動化腳本快速執行接口測試,提高效率。
接口測試的價值
- 傳統的測試方法成本急劇上升
- 測試效率下降
服務端非常複雜。這是一個 2012 年的時候淘寶核心鏈路應用的拓撲圖。讓大家能對後端服務的複雜性有一個比較直觀的瞭解。
圖裏面的每一個點都代表了一個模塊,也就是後端的一個服務。
這張圖上的模塊的組合和情況。一列有 15 個模塊,然後有 10 列。現在的複雜度肯定要比圖上的還要複雜。所以這張圖就能看出來,公司裏面真實的後端服務是非常複雜的。
比如當一個用戶購物的時候,瀏覽,把一個東西放入購物車,登錄,接下來產生交易,每一步用戶的行爲,後面都連接了很多個模塊。通過各種依賴和組合,對用戶的數據進行了全面的處理。
比如一個用戶登錄進來,要調用登錄接口,接下來就可以看到商品的詳情頁,用戶的個人信息頁,包括你要給他展現的廣告等等。這就需要非常龐大的服務端組件的支持,通過各種配合,才能提取出來各種信息。
那這麼多模塊,不可能一個團隊去保證質量。基本上是每個模塊都有專門的團隊去負責。少則二三個人,多則十幾二十個人,大家會維護這些東西,所以說需要的團隊成員也是非常多的。
當這些模塊集成到一塊的時候,比如其中有的模塊是一個月變更一次,有的模塊兩週變更一次。
就單個模塊來說可能變更的頻率不是很大,兩週或者一個月是屬於正常水平。但是這麼多模塊集成到一起了,整個網狀的結構,它的調用關係,其實可能是每天都會有更新。
這樣龐大的變化,就會給測試人員帶來壓力。可能上一輪測試還沒有測完,調用的網絡結構就已經發生了變化。由於模塊發生了升級,可能調用鏈路就發生了變化。
在這種情況下,傳統的一些測試方法可能就不實用了。在產品功能越來越複雜,變化越來越快的情況下,普通的瀑布流的測試,就已經跟不上公司的發展變化。
基於這種情況,就需要研究出來的新的測試方法和測試策略,去想辦法應對這種變化。
其實目前最好的方法就是分層測試。把測試分爲前端和後端,後端變化的時候,後端測試工程師單獨去測。那前端的測試工程師專注於前端的測試就好了。
分層完成之後,對於每一個組件其實還可以繼續拆分,現在很多公司都採用微服務化。微服務化對應的每一個組件都需要有一個對應的測試。既有單元測試,又有單模塊的一個接口測試,又有整個集羣的整體的端到端的一個 API 的接口測試。最後再到 UI 端,完成 UI 端的測試。
除了分層,其實自動化也是必不可少的。沒有自動化的話,這麼大的一個集羣其實也是沒有辦法測的過來的。
所以說當前情況下傳統的 UI 測試成本越來越高,效率本身又比較低,已經不能完全滿足保證質量的需求了。
那麼分層之後,就可以通過接口測試來快速保證後端服務的質量。
分層測試體系
現在最常用的分層模式,測試的金字塔模型。這個分層測試的思想提出者是 pageobject 設計模式的奠基人,他就是馬丁福勒。
馬丁福勒關於分層測試,畫出了這樣一張非常經典的圖。這張圖展示的是一個公司的分層測試策略。
- 越往上,發現 Bug 的時間越晚,成本越高
- 接口測試(Service)相比 UI 測試,可以更早發現問題,更快的質量反饋
接口測試學習路線
學習接口測試可以從簡單到複雜分爲 3 個階段。
接口測試與 MOCK 學習路線
那一階段的目標是
- 掌握接口測試的知識體系與學習路線
- 掌握面試常見知識點之 HTTP 協議
- 掌握常用接口測試工具 Postman
- 掌握常用抓包工具 Charles 與 Fiddler
- 結合知名產品實現 mock 測試與接口測試實戰練習
要完成這些目標,安排了這些章節
形式 | 章節 | 描述 |
---|---|---|
知識點 | 接口測試價值與體系 | 瞭解接口測試的知識體系與學習路線 |
知識點 | 常見的接口協議 | 瞭解常見接口協議、重點掌握 HTTP 協議 |
知識點 | 接口測試用例設計 | 掌握接口測試用例設計思路 |
知識點 | Postman 基礎使用 | 掌握 Postman 的安裝和基礎使用 |
實戰 | Postman 實戰練習 | 使用 Postman 完成接口測試 |
知識點 | 抓包工具 charles | 掌握 charles 的安裝和基礎配置 |
知識點 | 抓包工具證書配置 | 抓包工具證書配置 https 協議數據抓包 |
實戰 | App 抓包實戰練習 | 對雪球實現抓包 |
實戰 | 接口測試實戰練習 | 結合 Postman 完成對寵物商店的接口測試 |
知識點 | 弱網測試 | 使用 charles 完成弱網測試 |
知識點 | mock 的價值與意義 | 瞭解 mock 測試的價值與意義 |
實戰 | mock 實戰練習 | 雪球 mock 實戰練習 |
總結
接口測試概念
接口測試的價值
分層測試體系
接口測試學習路線