什麼是API?
API是(Application Programming Interface)首字母縮略詞,即應用程序編程接口。 API是一組用於構建軟件應用程序的規程,協議和工具。API充當軟件應用程序之間的接口,並允許兩個軟件應用程序相互通信。 API是一組軟件功能,可以由其他軟件執行。
什麼是API測試?
API測試是一種軟件測試,涉及直接測試API,也是集成測試的一部分,用於檢查API是否滿足應用程序的功能,可靠性,性能和安全性方面的期望。在API測試中,我們主要關注軟件架構的業務邏輯層。可以在包含多個API的任何軟件系統上執行API測試。
常見的API測試類型有哪些?
API測試通常涉及以下實踐:
- 單元測試
- 功能測試
- 負載測試
- 運行時/錯誤檢測
- 安全測試
- UI測試
- 互操作性和WS一致性測試
- 滲透測試
- 模糊測試
列舉API測試中使用的一些常用協議?3個即可。
- thrift
- HTTP
- REST
- SOAP
- JMS
- UDDI
- dubbo
API和Web服務之間的區別?
Web服務:
- 所有Web服務都是API
- 所有Web服務都需要通過Web(HTTP)公開
- Web服務只有三種使用方式:SOAP,REST和XML-RPC進行通信
接口:
- API有很多並不基於HTTP
- API使用多種方式進行通信,例如C / C ++中的DLL文件,java中的Jar文件/ RMI,Linux內核API中的中斷等。
什麼是Soap?
SOAP代表簡單對象訪問協議(Simple Object Access Protocol)。它是一種基於XML的消息傳遞協議。雖說名字帶了簡單,但是協議比較羅嗦,已經遠沒有後來居上的JSON使用廣泛。
什麼是Rest API?
REST即Representational State Transfer。它是一組幫助開發人員執行請求和接收響應的函數。通過REST API中的HTTP協議進行交互。
SOAP和REST的區別?
SOAP:
- 通過共享XML文檔進行通信
- 僅支持XML格式
- 不支持緩存
- SOAP比REST慢
- SOAP就像自定義桌面應用程序,緊密連接到服務器
- SOAP基於HTTP進行封裝
REST: - 基於網絡的軟件架構的服務架構和設計 - 支持不同的數據格式 - 支持緩存 - 比SOAP更快 - REST客戶端就像瀏覽器並使用應用程序必須適合的標準方法 - REST使用HTTP標頭來保存元信息
API常見測試有哪些?
我們在API上執行的一些常見測試如下。
- 驗證不同輸入條件的返回。
- 驗證不同數據結構
- 驗證API是否觸發其他事件或請求其他API
- 在沒有返回值時驗證API的行爲
API測試有哪些優勢?
- 更快及更高的測試覆蓋率。
- API測試有助於我們降低測試成本。通過API測試,我們可以在GUI測試之前找到小錯誤。在GUI測試期間,這些小錯誤將變得更大。因此,在API測試中發現這些錯誤將對公司具有成本效益。
- API測試與語言無關。
- API測試在測試核心功能方面非常有用。我們可以在沒有用戶界面的情況下測試API。在GUI測試中,我們需要等到應用程序可用於測試核心功能。
- API測試有助於我們降低風險。
API測試中究竟需要驗證哪些內容?
- 數據準確性
- HTTP或其他協議狀態代碼
- 響應時間
- API返回任何錯誤時的錯誤代碼
- 授權檢查
- 非功能測試,如性能測試,安全測試
列舉一些用於API測試的工具?
用於API測試的一些工具如下:
- Curl
- httpie
- Requests: HTTP for Humans
- https://pypi.org/project/thrift/
- Postman
- Katalon Studio
- SoapUI
- Assertible
- Tricentis Tosca
- Apigee
- JMeter
- Rest-Assured
- Karate DSL
- API Fortress
- Parasoft
- HP QTP(UFT)
- vREST
- Airborne
- API Science
- APIary Inspector
- Citrus Framework
- Hippie-Swagger
- HttpMaster Express
- Mockbin
- Ping API
- Pyresttest
- Rest Console
- RoboHydra Server
- SOAP Sonar
- Unirest
- WebInject
列出一些最常用的API文檔模板?
一些API文檔模板如下。
- Swagger
- FlatDoc
- RestDoc
- API blueprint
- Slate
- Miredot
- Web服務API規範。
列舉一些非常受歡迎的API。
- Google Maps API
- YouTube的
- 推特Twitter
- 亞馬遜廣告API
- 微博認證API
- 釘釘開放接口
API測試和單元測試之間的區別?
單元測試: - 多由開發團隊進行 - 白盒測試 - 構建中的過程之前 - 涉及源代碼 - 測試範圍有限,只考慮基本功能
API測試
- 多由QA團隊進行
- 多爲黑盒測試
- 在構建部署後進行
- 大多不涉及源代碼API測試
- 測試範圍很廣
API測試面臨的主要挑戰是什麼?
- 適當的參數及其組合
- 正確分類參數
- 順序
- 驗證輸出
- 由於缺少GUI,提供輸入值較困難
執行API測試時我們面臨的BUG類型是什麼?
- 壓力,性能和安全問題
- 功能重複或缺失
- 可靠性問題
- 消息不當
- 不兼容的錯誤處理機制
- 多線程問題
- 不合適的錯誤
UI測試與API測試有何不同?
UI(用戶界面)測試是測試應用程序的圖形界面部分。它的主要重點是測試應用程序的外觀和感覺。API測試支持兩個不同軟件系統之間的通信。它的主要重點是應用程序的業務層。
列舉一些最常用的HTTP方法?
- GET:從服務器檢索數據
- POST:將數據添加到服務器中的現有文件或資源
- PUT:它允許您替換服務器中的現有文件或資源
- DELETE:它允許您從服務器中刪除數據
- PATCH:用於對資源進行部分修改 選項:用於描述目標資源的通信選項
- HEAD:它要求響應與GET請求相同,但沒有響應正文
可以使用GET請求而不是PUT來創建資源嗎?
不,GET請求僅允許只讀權限。它使您可以從服務器檢索數據,但不能創建資源。應使用PUT或POST方法來創建資源。
PUT和POST方法有什麼區別?
POST用於在服務器上創建新對象,PUT請求用於在替換對象。
當客戶端將頁面發送到服務器,然後服務器讓客戶端知道它放在何處時,應該使用POST。當客戶端指定頁面的位置時,應使用PUT
什麼是API
在進行Api測試之前,讓我們先了解一下什麼是API?
API是應用程序編程接口(Application Programming Interface)的首字母縮寫。
它支持兩個獨立軟件系統之間的通信和數據交換。實現API的軟件系統包含可以由其他軟件系統執行的功能/子程序。
什麼是API測試?
API測試與GUI測試完全不同,主要集中在軟件架構的業務邏輯層。這種測試不太關注應用程序的外觀和感覺。
在API測試中,您不必使用標準用戶輸入(鍵盤)和輸出,而是使用軟件將調用發送到API,獲取輸出並記下系統的響應。
在API測試中測試需要應用程序與API進行交互。爲了測試API,你需要
- 使用測試工具來驅動API
- 編寫你自己的代碼來測試API
設置API測試環境
- API測試與其他測試類型不同,因爲GUI不可用,但您需要設置初始環境,以調用具有所需參數集的API,然後最終檢查測試結果。
- 因此,爲API測試設置測試環境似乎有點複雜。
- 數據庫和服務器應按照應用程序要求進行配置。
- 安裝完成後,應調用API函數來檢查該API是否正常工作。
API的輸出類型
API的輸出可能是
- 任何類型的數據
例如:有一個API函數應該爲兩個整數求和:
Long add(int a,int b)
數字必須作爲輸入參數給出。輸出應該是兩個整數的總和。這個輸出需要用預期的結果進行驗證。
調用比如
add (1234, 5656)
如果超過整數限制,則必須處理例外情況。
- 狀態(例如Pass或Fail)
考慮下面的API函數:
Lock() Unlock() Delete()
它們返回任何值,如True(成功的情況下)或False(如果有錯誤)作爲輸出。
更精確的測試用例可以調用任何腳本中的函數,並在數據庫或應用程序GUI中中檢查更改。
- 調用另一個API函數。
例如 - 第一個API函數可用於刪除表中的指定記錄,而此函數又調用另一個函數來刷新數據庫。
API測試的測試用例:
- 基於輸入條件的返回值:測試相對容易,因爲可以定義輸入並且可以驗證結果
- 不返回任何內容:當沒有返回值時,檢查系統上API的行爲
- 觸發其他API/事件/中斷:如果API的輸出觸發某個事件或中斷,則應跟蹤這些事件和中斷偵聽器
- 更新數據結構:更新數據結構會對系統產生一些結果或影響,並且應該進行認證
- 修改某些資源:如果API調用修改了一些資源,則應通過訪問各自的資源來驗證它
API測試方法:
- 瞭解API程序的功能並明確定義程序的範圍
- 用等效類,邊界值分析和錯誤猜測等測試技術,併爲API編寫測試用例
- API的輸入參數需要進行適當的規劃和定義
- 執行測試用例並比較預期結果和實際結果。
API測試和單元測試的區別
單元測試 API測試 多爲開發人員執行 多爲測試人員執行 獨的功能 端到端功能 以訪問源代碼 經常無法訪問源代碼 涉及到UI測試 只有API 通常只有基本功能 通常涉及所有功能 範圍有限 範圍更廣 通常在check-in前運行 builid完成後運行 在API測試中測試什麼
除了通常的SDLC(Software Development Life Cycle 軟件生命週期)過程外,API測試應覆蓋至少以下測試方法
- 發現測試:測試組應手動執行API中記錄的一組調用,例如驗證是否可以產看,創建和刪除由API公開的特定資源
- 可用性測試:驗證API是否可用和用戶友好。 API是否與另一個平臺完美集成
- 安全測試:此測試包括需要哪種類型的身份驗證以及敏感數據是通過HTTP進行加密還是兩者兼而有之
- 自動化測試:API測試應最終創建一組腳本或可用於定期執行API的工具
- 文檔:測試團隊必須確保文檔足夠,並提供足夠的信息與API進行交互。文檔應該是最終可交付成果的一部分
API測試的最佳實踐:
- 測試用例應按測試類別進行分組
- 在每個測試的最上面,你應該包括被調用的API的聲明。
- 參數選擇應該在測試用例本身中明確提及
- 優先考慮API函數調用,以便測試人員能夠輕鬆測試
- 每個測試用例應該儘可能獨立
- 避免在開發過程中使用“測試鏈”
- 處理一次調用函數時必須特別小心,如 - Delete,CloseWindow等等。
- 調用隊列
- 爲確保完整的測試覆蓋率,請爲API的所有可能輸入組合創建測試用例。
測試檢測到的錯誤類型
- 無法正常處理錯誤條件。比如分母爲0、文件不存在、忘記導入庫等。
- 未使用的標誌
- 缺少或重複的功能
- 可靠性問題。連接並獲取API響應時遇到困難。
- 安全問題
- 多線程問題
- 性能問題。 API響應時間非常高。
- 不正確的錯誤/警告給調用者
- 錯誤的有效參數值處理
- 響應數據結構不正確(JSON或XML)
API測試工具
由於API和單元測試都針對源代碼,因此可以使用類似的工具進行測試。
- SOAPUI - 這是一個易於使用的工具,具有廣泛的REST和SOAP API測試功能 - 無需腳本經驗。
- Runscope
- Postman
- Curl
- httpie
- cfix
- Check
- CTESK
- dotTEST
- Eclipse SDK工具 - 自動API測試
- 更多測試工具
- Top 20 API Testing Tools In 2018: REST & SOAP
技術支持qq羣:測試開發自動化測試 144081101 Python自動化測試初學者 567351477
API測試的挑戰
- API測試中的主要挑戰是參數組合,參數選擇和調用排序
- 沒有GUI可用於測試難以給出輸入值的應用程序
- 驗證和驗證不同系統中的輸出對於測試人員來說很難
- 測試人員需要了解參數選擇和分類
- 異常處理功能需要測試
- 編碼知識對於測試人員是必要的
結論:
API由代表業務邏輯層的一組類/功能/程序組成。如果沒有正確測試API,則不僅會導致API應用程序出現問題,而且還會導致在調用應用程序中出現問題。