API測試| 了解API接口測試| API接口測試指南

什么是API?
API是一個縮寫,它代表了一個?pplication?P?AGC軟件覆蓋整個房間。API是用于構(gòu)建軟件應(yīng)用程序的一組例程,協(xié)議和工具。API指定一個軟件程序應(yīng)如何與其他軟件程序進(jìn)行交互。
例行程序:執(zhí)行特定任務(wù)的程序。例程也稱為過程,函數(shù)或子例程。
協(xié)議:在兩個系統(tǒng)之間傳輸數(shù)據(jù)的格式。
簡單地說,API代表一個?pplication?P?AGC軟件覆蓋整個房間。API充當(dāng)兩個軟件應(yīng)用程序之間的接口,并允許兩個軟件應(yīng)用程序相互通信。API是可以由另一個軟件程序執(zhí)行的軟件功能的集合。

讓我們以更平易近人的方式查看一些API示例。
假定API是餐廳的服務(wù)員。
在餐廳,您可以根據(jù)菜單上的可用商品下訂單。餐廳的服務(wù)員寫下您的訂單,然后將其交付給準(zhǔn)備餐點的廚房。飯食準(zhǔn)備好后,服務(wù)員從廚房拿起您的食物,并在您的餐桌旁將其提供給您。
在這種情況下,服務(wù)員的角色類似于API。作為服務(wù)員,API從源接收請求,將該請求接收到數(shù)據(jù)庫,從數(shù)據(jù)庫中獲取請求的數(shù)據(jù),然后將響應(yīng)返回給源。
現(xiàn)在讓我們來看另一個例子。
如果您使用的是航班服務(wù)引擎,請說出Expedia,在其中搜索特定日期的航班。出發(fā)地,目的地,到達(dá)日期和返回日期等數(shù)據(jù)后,單擊搜索。Expedia根據(jù)您的搜索詳細(xì)信息通過API向航空公司發(fā)送請求。然后,API將航空公司對您的請求的響應(yīng)發(fā)送回Expedia。
API從用戶那里獲取請求并給出響應(yīng),而不會暴露內(nèi)部邏輯。API就像一個抽象的OOPS概念。
什么是API測試?

API測試是一種軟件測試,涉及直接測試API,并且是集成測試的一部分,以檢查API是否在應(yīng)用程序的功能,可靠性,性能和安全性方面達(dá)到期望。在API測試中,我們的主要重點是軟件體系結(jié)構(gòu)的業(yè)務(wù)邏輯層。API測試可以在包含多個API的任何軟件系統(tǒng)上執(zhí)行。API測試不會專注于應(yīng)用程序的外觀。API測試與GUI測試完全不同。
讓我們看看UI測試與API測試有何不同?
UI(用戶界面)測試是測試應(yīng)用程序的圖形界面部分。它的主要重點是測試應(yīng)用程序的外觀。另一方面,API測試支持兩個不同軟件系統(tǒng)之間的通信。它的主要重點是應(yīng)用程序的業(yè)務(wù)層。
API測試類型?
API測試通常涉及以下實踐:
單元測試:?測試單個操作的功能
功能測試:?通過使用一起測試的一組單元測試結(jié)果來測試更廣泛場景的功能
負(fù)載測試:?測試負(fù)載下的功能和性能
運行時/錯誤檢測:?監(jiān)視應(yīng)用程序以識別問題,例如異常和資源泄漏
安全測試:??確保API的實施不受外部威脅的影響
UI測試:此測試??是端到端集成測試的一部分,以確保用戶界面的各個方面都能按預(yù)期運行
互操作性和WS一致性測試:??互操作性和WS一致性測試是一種適用于SOAP API的測試類型。通過確保符合Web服務(wù)互操作性概要文件來檢查SOAP API之間的互操作性。?對WS- *遵從性進(jìn)行了測試,以確保諸如WS-Addressing,WS-Discovery,WS-Federation,WS-Policy,WS-Security和WS-Trust等標(biāo)準(zhǔn)得到正確實施和利用
滲透測試:??查找來自攻擊者的應(yīng)用程序漏洞
模糊測試:??通過強制輸入系統(tǒng)來測試API,以嘗試強制崩潰
API的常見測試:
我們在API上執(zhí)行的一些常見測試如下。
驗證返回值是否基于輸入條件。應(yīng)根據(jù)請求驗證API的響應(yīng)。
在API更新任何數(shù)據(jù)結(jié)構(gòu)時驗證系統(tǒng)是否正在驗證結(jié)果
驗證API是觸發(fā)其他事件還是請求其他API
在沒有返回值的情況下驗證API的行為
API測試的優(yōu)勢:
與GUI測試相比,API測試是省時的。API測試自動化需要更少的代碼,因此可以提供更快,更好的測試范圍。
API測試可幫助我們降低測試成本。通過API測試,我們可以在GUI測試之前發(fā)現(xiàn)一些小錯誤。這些小錯誤將在GUI測試期間變得更大。因此,在API測試中發(fā)現(xiàn)這些錯誤對公司而言是具有成本效益的。
API測試是獨立于語言的。
API測試對測試核心功能很有幫助。我們可以在沒有用戶界面的情況下測試API。在GUI測試中,我們需要等到應(yīng)用程序可用以測試核心功能。
API測試可幫助我們降低風(fēng)險。
API測試中到底需要驗證什么?
基本上,在API測試中,我們使用已知數(shù)據(jù)向API發(fā)送請求,然后分析響應(yīng)。
資料準(zhǔn)確性
HTTP狀態(tài)碼
響應(yīng)時間
API返回任何錯誤時的錯誤代碼
授權(quán)檢查
非功能測試,例如性能測試,安全性測試
用于API測試的工具:
用于API測試的一些工具如下:
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測試和單元測試之間的區(qū)別?
單元測試:
單元測試由開發(fā)團隊進(jìn)行
單元測試是白盒測試的一種形式
在將代碼包含在構(gòu)建中之前,先進(jìn)行單元測試
源代碼涉及單元測試
在單元測試中,測試范圍是有限的,因此僅考慮基本功能進(jìn)行測試
API測試:
API測試由質(zhì)量檢查小組進(jìn)行
API測試是黑盒測試的一種形式
API測試在構(gòu)建可用于測試之后進(jìn)行
API測試中不涉及源代碼
在API測試中,測試的范圍很廣,因此要考慮所有正常運行的問題以進(jìn)行測試
API測試中的挑戰(zhàn):
在進(jìn)行API測試時,我們面臨的一些挑戰(zhàn)如下
選擇合適的參數(shù)及其組合
正確分類參數(shù)
需要正確的呼叫排序,因為這可能導(dǎo)致測試覆蓋范圍不足
驗證和驗證輸出
由于沒有GUI,因此很難提供輸入值
我們在執(zhí)行API測試時會遇到的錯誤類型:
????執(zhí)行API測試時觀察到的問題是
壓力,性能和安全性問題
功能重復(fù)或缺失
可靠性問題
消息傳遞不當(dāng)
不兼容的錯誤處理機制
多線程問題
錯誤的錯誤
API測試最佳做法:
測試預(yù)期結(jié)果
發(fā)送一系列API負(fù)載測試,給系統(tǒng)增加壓力
按測試類別對API測試用例進(jìn)行分組
使用所有可能的輸入組合創(chuàng)建測試案例,以完整地覆蓋測試
優(yōu)先處理API函數(shù)調(diào)用,使其易于測試
創(chuàng)建測試以處理無法預(yù)料的問題
盡可能自動執(zhí)行API測試
