初學者的Api測試技巧!
API測試是一種直接在API級別執行驗證的軟件測試。它是集成測試的一部分,它確認API是否知足測試人員對功能、可靠性、性能和安全性的指望。與UI測試不一樣,API測試是在沒有GUI層執行操做的。
API測試技巧
Web API有兩大類Web服務:SOAP和REST。
SOAP(簡單對象訪問協議)是W3C標準定義的一種標準協議,用於發送和接收Web服務請求和響應。
REST(表示狀態傳輸)是使用HTTP的基於Web標準的體系結構。與基於SOAP的Web服務不一樣,沒有針對RESTful Web API的正式標準。
如下是API測試的10條基本技巧:
指定API輸出狀態
您須要在API測試中驗證的最多見的API輸出是響應狀態代碼。
新API測試人員熟悉驗證響應代碼是否等於200以肯定API測試是經過仍是失敗。這不是錯誤的驗證。可是,它並不反映API的全部測試方案。
在通用標準中,全部API響應狀態代碼均分爲五類。狀態碼的第一位數字定義響應的類別。後兩位沒有任何類別或分類做用。
第一位數有五個值:
1xx(信息性):收到請求並繼續進行處理
2xx(成功):成功接收,理解並接受了請求
3xx(重定向):須要採起進一步的措施來完成請求
4xx(客戶端錯誤):請求包含錯誤的語法或沒法實現
5xx(服務器錯誤):服務器沒法知足看似有效的請求
API的實際響應狀態代碼由構建API的開發團隊指定。
專一於小型功能性API
在測試項目中,老是有一些簡單的API,只有一個或兩個輸入,例如登陸API,獲取身份令牌API,運行情況檢查API等。可是,這些API是必需的,被視爲進入其餘業務的「門API」。首先關注這些API,將確保API服務器,環境和身份驗證正常工做。
還應該避免在一個測試案例中測試多個API。若是發生錯誤,這是很痛苦的,由於您將不得不按順序調試API生成的測試數據。保持測試儘量簡單。在某些狀況下,若是須要調用一系列API來實現端到端測試流程,這些任務應該在全部API都通過單獨測試以後完成。
分類API
一個測試項目可能有幾個甚至數百個用於測試的API。強烈建議將它們分類,以更好地進行測試管理。它須要採起額外的步驟,可是將大大幫助您建立具備高覆蓋率和集成度的測試方案。
同一類別的API共享一些公共信息,例如資源類型,路徑等。以相同的結構組織測試將使您的測試在集成流程中可重複使用和擴展。
利用自動化功能進行API測試
儘量早地利用自動化進行API測試。如下是自動化API測試的一些重要好處:
測試數據和執行歷史記錄能夠與API信息一塊兒保存。這使得之後從新運行測試變得更加容易。
API測試穩定且較少更改。API反映了系統的業務規則。API的任何更改都須要明確的要求;所以,測試人員始終能夠及時瞭解更改並進行調整。
與Web UI測試相比,測試執行速度要快得多
API測試被視爲灰盒測試,用戶能夠在其中發送輸入數據並獲取輸出數據以進行驗證。數據驅動方法的自動化(即在同一測試場景中應用不一樣的數據集)能夠幫助增長API測試覆蓋率
選擇合適的自動化工具
利用API測試的自動化功能的另外一步驟是從市場上的數百種選擇中選擇最合適的工具或一組合適的工具。選擇API自動測試工具時,應考慮如下一些標準:
一、該工具是否支持測試您的AUT(被測應用程序)正在使用的API / Web服務類型?若是您在AUT使用SOAP服務時所選的工具支持測試RESTful服務,則沒有任何意義。
二、該工具是否支持您的AUT服務所需的受權方法?如下是您的API可使用的一些受權方法:No Auth、Bearer Token、Basic auth、Digest Auth、NTLM Authentication、OAuth 1.0、OAuth 2.0、Hawk Authentication、AWS Signature。這是一項必不可少的任務,由於你沒法在未經受權的狀況下開始測試API。
三、該工具是否支持從WSDL,Swagger,WADL和其餘服務規範中導入API / Web服務端點?這是一項可選功能。可是,若是您要測試數百個API,這一點很是重要。
選擇合適的驗證方法
當響應狀態代碼告訴請求狀態時,響應主體內容就是API經過給定輸入返回的內容。API響應內容因數據類型和大小而異。響應能夠是純文本,JSON數據結構,XML文檔等。一般,有一些驗證API響應正文內容的基本方法:
一、將整個響應正文內容與預期信息進行比較,此方法適用於具備靜態內容的簡單響應。日期時間,增長的ID等動態信息會在斷言中引發麻煩。
二、比較響應的每一個屬性值,對於JSON或XML格式的響應,很容易得到給定鍵或屬性的值。所以,此方法在驗證動態內容或單個值而不是整個內容時頗有用。
三、比較匹配與正則表達式,與驗證單個屬性值一塊兒,此方法用於驗證具備特定模式的數據響應以處理複雜的動態數據。
建立正面和負面的測試
API測試須要正向測試和反向測試,以確保API正常運行。因爲API測試被視爲一種灰盒測試,所以兩種類型的測試均由輸入和輸出數據驅動。
正向測試:
驗證API是否已接收輸入並按要求中指定的那樣返回預期的輸出。驗證是否按要求指定返回了響應狀態代碼,不管它返回的是2xx仍是錯誤代碼。用最小的必填字段和最大的字段指定輸入。
反向測試:
當預期的輸出不存在時,請驗證API是否返回了適當的響應。執行異常輸入驗證測試。使用不一樣的受權級別驗證API的行爲。
現場測試流程
建議在測試過程當中安排天天的API測試執行。因爲API測試執行快速,穩定且足夠小,所以很容易以最小的風險將更多測試添加到當前測試過程當中。
測試過程完成後,天天均可以獲得這些測試的結果。若是發生失敗的測試,則能夠當即檢查輸出並驗證問題以找到適當的解決方案。
API自動化測試
API測試流程很是簡單,只需三個主要步驟:發送帶有必要輸入數據的請求;獲取具備輸出數據的響應;驗證響應是否按要求返回
API測試最重要的部分既不是發送請求也不是接收響應。它們是測試數據管理和驗證。一般,測試一些第一個API很是簡單。所以,API測試任務很容易被低估。在常規手段方法沒法達到你的目的時,使用編程技能能夠極大拓展API測試的邊界。
喜歡這樣文章的能夠關注我,我會持續更新,大家的關注是我更新的動力!須要更多java學習資料的也能夠私信我java