API測試的概念
我們常說的是比較狹義的API,指的是Web service或者Web API。
是以一般API測試指的是:直接測試應用程式程式設計接口(API),并作為內建測試的一部分來确定它們是否滿足功能、可靠性、性能和安全性的期望。
API測試的位置
- 應用程式通常有三層:表示(UI)層、業務邏輯層(API層)和資料層。
- API層包含應用程式的業務邏輯——使用者如何與應用程式的服務、資料或功能互動的規則。
- 由于業務邏輯層直接觸及資料層和表示層,是以它為QA和開發團隊提供了持續測試的最佳場所。雖然傳統的測試主要集中在UI上,但是API測試的優勢正變得衆所周知。
API測試的優勢
-
更早期的測試
一旦實作了邏輯,就可以建構測試來驗證響應和資料的正确性,而不必等待建構前端
-
更簡單的測試維護
UI是不斷變化的,但是API沒有這樣的挑戰,API測試現在被認為是自動化測試的關鍵,因為API現在是應用程式邏輯的主要接口。
-
更快的解決問題
當API測試失敗時,我們确切地知道系統哪裡壞了,哪裡可以找到缺陷。
-
更快的測試速度和更廣的覆寫範圍
300個UI測試可能需要30小時才能運作。300個API測試可能在3分鐘内運作。這意味着将在更短的時間内發現更多的bug,同時也将立即修複它們。
API測試的流程
-
開始時間
在接口文檔出來的時候就可以進行接口測試了。
-
測試用例
根據接口文檔去撰寫接口用例。
-
測試環境
準備測試環境。
-
測試工具
測試接口有兩種方式,一是用代碼腳本去驅動,二是使用工具測試。
-
測試執行
根據執行結果分析問題,定位問題,并對測試過程進行調優。
-
測試報告
測試完成後進行測試總結。
API測試工具
抓包工具:Charles,Fiddler,Wireshark
測試腳本:Python,Java,Go
排行版:十大最佳API測試工具(SOAP和REST API測試工具)
(截至2019年12月14日)
- ReadyAPI
- ACCELQ
- Katalon Studio
- Postman
- REST-Assured
- Swagger.io
- JMeter
- Karate DSL
- Airborne
- APIGee
以下是top6的介紹,其實感覺我們這邊用的最多的也是postman,swagger和Jmeter,其他的接觸的不多呀。
産品 | ReadyAPI | ACCELQ | Katalon Studio | Postman | REST-Assured | Swagger.io |
---|---|---|---|---|---|---|
測試内容 | web(UI&API) | web(UI&API) | web(UI&API),Mobile apps | API | REST API | API生命周期的工具。 |
适合用于 | API和web服務的功能、安全性和負載測試。 | 無代碼自動化邏輯,完整的測試管理,API回歸規劃和360跟蹤 | 自動化測試 | API測試 | 在Java域中測試REST服務 | 适合API設計 |
價格 | 昂貴 | 付費+免費 | 免費 | 付費+免費 | 免費 | 付費+免費 |
相容平台 | Windows,Linux ,MacOS | 基于雲計算的連續測試 | Windows,Linux ,MacOS | Windows,Linux ,MacOS | - | - |
API 測試内容
API評判标準
- 業務功能覆寫是否完整
- 業務規則覆寫是否完整
- 參數驗證是否達到要求(邊界、業務規則)
- 接口異常場景覆寫是否完整
- 接口覆寫率是否達到要求
- 代碼覆寫率是否達到要求
- 性能名額是否滿足要求
- 安全名額是否滿足要求(sql注入)
單個API測試三步驟
再往小了說,我們現在接觸的API請求,主要模拟用戶端向伺服器發送請求封包,伺服器接收請求封包後對相應的封包做處理并向用戶端傳回應答,用戶端接收應答的過程,總共隻有以下這三步。
- 發送帶有必要輸入資料的請求
- 擷取具有輸出資料的響應
- 驗證響應是否按要求傳回
是以我們在驗證時,需要驗證的也常常是以下這幾點:
-
HTTP響應碼
1xx(臨時響應)
2xx (成功)
3xx (重定向)
4xx(請求錯誤)
5xx(伺服器錯誤)
-
傳回資料格式
傳回的資料格式是json或者text或者是其他
-
傳回資料類型
如果是json格式的資料,那麼傳回的字段是string或者int或者其他的格式
-
傳回資料資訊
傳回的資訊是不是和資料庫裡的一緻,或者是否符合預期的情況。
總結
是以API測試說難不難,說簡單也絕不簡單,現在的API測試是自動化測試最好的切入點,因為相比于經常變化的UI,API一旦穩定就不容易發生變化。
參考文獻
【1】https://blog.csdn.net/ddhsea/article/details/79405996
【2】https://www.cnblogs.com/georgexu/p/11224011.html
【3】https://blog.csdn.net/wbj_code_life/article/details/8161275