API測(cè)試的終極指南你需要知道的一切,API測(cè)試介紹
隨著技術(shù)的進(jìn)步,我們對(duì)API的依賴也將變得越來(lái)越重要?,F(xiàn)在你在互聯(lián)網(wǎng)上交流的一切都是通過(guò)API(應(yīng)用程序接口)傳輸?shù)摹?
在將它們集成到我們的技術(shù)中時(shí),我們還必須考慮API測(cè)試。因?yàn)?如果我們考慮到它,我們的API和其他任何東西一樣,都需要根據(jù)各種質(zhì)量屬性進(jìn)行嚴(yán)格的評(píng)價(jià)。
我們不僅要嚴(yán)格注意功能需求,還要密切注意非功能需求。
API代表應(yīng)用程序編程接口。它是一個(gè)計(jì)算機(jī)接口,允許兩個(gè)獨(dú)立的軟件系統(tǒng)連接和共享數(shù)據(jù)。
例如,具有API的軟件系統(tǒng)具有其他軟件系統(tǒng)可以執(zhí)行的許多功能。
一個(gè)API解釋了可以提出的請(qǐng)求的類型、如何提出這些請(qǐng)求、我們需要使用的數(shù)據(jù)格式,以及兩個(gè)軟件系統(tǒng)之間的關(guān)系。
簡(jiǎn)而言之,安全。
為了代替使用標(biāo)準(zhǔn)的用戶輸入和輸出,API測(cè)試使用軟件向API發(fā)送呼叫,接收生產(chǎn),并記錄系統(tǒng)的響應(yīng)。
由于API測(cè)試不關(guān)注應(yīng)用程序的外觀和感覺,API測(cè)試不同于圖形界面測(cè)試。相反,它主要側(cè)重于軟件架構(gòu)的業(yè)務(wù)邏輯層。
API測(cè)試的重要性還是優(yōu)勢(shì)?
1.語(yǔ)言證明
由于數(shù)據(jù)是使用XML和JSON交換的,所以任何語(yǔ)言都可以用于自動(dòng)化,而不管開發(fā)應(yīng)用程序時(shí)使用何種語(yǔ)言。
因?yàn)閄ML和JSON通常是結(jié)構(gòu)化數(shù)據(jù),所以驗(yàn)證是快速和穩(wěn)定的。還有內(nèi)置庫(kù)來(lái)幫助使用這些數(shù)據(jù)格式進(jìn)行數(shù)據(jù)比較。
2.界面獨(dú)立
在沒有用戶界面或與系統(tǒng)交互的情況下訪問應(yīng)用程序是API測(cè)試的一個(gè)顯著優(yōu)勢(shì)。換句話說(shuō),質(zhì)量保證測(cè)試人員可以執(zhí)行API測(cè)試,而無(wú)需事先了解軟件應(yīng)用程序。
這是一個(gè)很大的好處,因?yàn)樗o質(zhì)量保證工程師提供了早期可見性的缺陷和錯(cuò)誤,允許開發(fā)人員在損害圖形界面之前解決問題。
3.改進(jìn)測(cè)試覆蓋率
由于大多數(shù)API和服務(wù)都有規(guī)范,我們可以創(chuàng)建覆蓋率高的自動(dòng)化測(cè)試,包括功能測(cè)試(快樂案例)和非功能測(cè)試。
4.能夠更快地釋放
用戶界面回歸測(cè)試套件通常需要8-10小時(shí)才能執(zhí)行。相反,與API測(cè)試相同的場(chǎng)景只需要1到2個(gè)小時(shí)。API測(cè)試也比UI測(cè)試更少。所有這些都使您能夠更快地發(fā)布API測(cè)試。
5.降低測(cè)試成本
API測(cè)試使我們能夠及早發(fā)現(xiàn)錯(cuò)誤和缺陷,每當(dāng)你在早期發(fā)現(xiàn)錯(cuò)誤時(shí),你就可以省錢和節(jié)省時(shí)間。
6.方便與圖形界面集成
API測(cè)試支持高度可積測(cè)試。如果您打算在API測(cè)試之后運(yùn)行功能性圖形界面測(cè)試,這將更加有用。例如,易于集成將允許在啟動(dòng)圖形界面測(cè)試之前在程序中引入新用戶。
7.測(cè)試核心功能
在執(zhí)行圖形界面測(cè)試之前,測(cè)試應(yīng)用程序的代碼級(jí)功能提供了對(duì)其總體構(gòu)建強(qiáng)度的早期評(píng)估。這有助于暴露在圖形界面測(cè)試中的一些小缺陷,這些缺陷可能會(huì)增長(zhǎng)并變得更大。
核心訪問允許測(cè)試與開發(fā)同時(shí)運(yùn)行,促進(jìn)兩個(gè)團(tuán)隊(duì)之間的通信和協(xié)作。如果一個(gè)離岸質(zhì)量保證團(tuán)隊(duì)進(jìn)行API測(cè)試,這將特別有用。
8.API測(cè)試可自動(dòng)化
我們可以使用許多工具包和框架來(lái)自動(dòng)化API請(qǐng)求,使您可以構(gòu)建一個(gè)API測(cè)試自動(dòng)化套件。
例如,在CI/CD時(shí)代,當(dāng)執(zhí)行部署或集成時(shí),該套件可能會(huì)被連接,從而節(jié)省了測(cè)試應(yīng)用程序背后的整個(gè)API集的人力。
API測(cè)試類型
讓我們看看不同類型的API測(cè)試,以便更好地了解:
1.驗(yàn)證測(cè)試
驗(yàn)證測(cè)試是開發(fā)過(guò)程的最后階段之一,但它是我們需要執(zhí)行的最關(guān)鍵的測(cè)試之一。
我們通常在主開發(fā)過(guò)程的末尾執(zhí)行驗(yàn)證測(cè)試,特別是在API的組成元素和功能被驗(yàn)證之后。雖然許多其他測(cè)試側(cè)重于特定的代碼庫(kù)或功能,但驗(yàn)證測(cè)試更被考慮。
驗(yàn)證測(cè)試只是我們應(yīng)用于整個(gè)產(chǎn)品的一系列簡(jiǎn)單的查詢。其中包括:
產(chǎn)品: 我們創(chuàng)造了正確的產(chǎn)品嗎?API本身是否是解決當(dāng)前問題的正確產(chǎn)品,是否存在任何實(shí)質(zhì)性代碼膨脹或特性蠕變,從而將原本精益和重點(diǎn)突出的實(shí)現(xiàn)推向了不可接受的方向?
行為: API訪問正確數(shù)據(jù)的方式是否正確?考慮到數(shù)據(jù)集的保密性和完整性要求,API是否獲得了過(guò)多的信息并正確地存儲(chǔ)了它?
效率: API是完成手頭任務(wù)的最精確、最優(yōu)、最有效的方式嗎?是否可以刪除或修改任何代碼庫(kù)以改進(jìn)整體服務(wù)?
這些問題可以驗(yàn)證API是一個(gè)全面的解決方案.
它們是在根據(jù)一套既定標(biāo)準(zhǔn)開發(fā)出API之后進(jìn)行的,以確保正確的環(huán)境集成、遵守標(biāo)準(zhǔn)以及實(shí)現(xiàn)具體的最終目標(biāo)和結(jié)果。
最后,這個(gè)測(cè)試可以簡(jiǎn)單地描述為對(duì)指定的用戶需求和標(biāo)準(zhǔn)的精確發(fā)展的保證。
2.用戶界面測(cè)試
雖然驗(yàn)證和功能測(cè)試方法是相對(duì)普遍的,但UI測(cè)試更特別。用戶界面測(cè)試正是聽起來(lái)像是對(duì)API及其組件的用戶界面的測(cè)試。
這個(gè)測(cè)試涉及UI的功能,不管它是圖形化的還是依賴于命令行端點(diǎn)調(diào)用。
在許多方面,這與其說(shuō)是對(duì)API的測(cè)試,不如說(shuō)是對(duì)連接到API的接口和開發(fā)人員使用該接口的經(jīng)驗(yàn)的檢查。
然而,雖然不是API的直接代碼欄測(cè)試,但這提供了一個(gè)非常通用的觀點(diǎn),即前端和后端的可用性和效率。
這就是為什么我們經(jīng)常使用UI測(cè)試來(lái)代替功能測(cè)試--在許多方面,它執(zhí)行相同的工作,盡管不那么全面,也不那么通用。
然而,在現(xiàn)代測(cè)試中,這是一種糟糕的技術(shù),而UI測(cè)試應(yīng)該完全局限于驗(yàn)證UI本身的操作。
WebUI測(cè)試是這種類型測(cè)試的一部分,它側(cè)重于Web實(shí)例和它們所代表的API之間的端到端集成。雖然在線用戶界面測(cè)試是用戶界面測(cè)試的一個(gè)獨(dú)特的子集,但值得一提的是,它也包括在這一類中。
3.功能測(cè)試
功能測(cè)試是一種廣泛的測(cè)試方法,但它比驗(yàn)證測(cè)試狹窄。功能測(cè)試只是對(duì)某些代碼庫(kù)函數(shù)的測(cè)試。
這些函數(shù)反過(guò)來(lái)描述特定的情況,以保證API在預(yù)期參數(shù)內(nèi)的功能,并檢查結(jié)果超出預(yù)期參數(shù)時(shí)是否正確處理了錯(cuò)誤。
一個(gè)場(chǎng)景使得功能測(cè)試更容易傳達(dá).例如,假設(shè)我們的API通過(guò)互聯(lián)網(wǎng)網(wǎng)關(guān)處理音樂訂購(gòu)。
當(dāng)一個(gè)人在尋找一首歌時(shí),他們會(huì)用歌曲名和藝術(shù)家名來(lái)尋找它。功能測(cè)試采用分層的方法,在這種情況下處理一些具體的情況。
首先,我們用適當(dāng)?shù)妮斎腧?yàn)證API的功能。API驗(yàn)證請(qǐng)求并返回預(yù)期結(jié)果。
由于測(cè)試結(jié)構(gòu)的原因,我們應(yīng)該期待一些明確的響應(yīng)。然而,我們應(yīng)該預(yù)料到錯(cuò)誤或修復(fù)的反應(yīng)包含所要求的材料。
功能測(cè)試應(yīng)該解決所有這些問題--不僅標(biāo)準(zhǔn)測(cè)試用例應(yīng)該包括在內(nèi),而且真實(shí)和邊緣情況也應(yīng)該包括在測(cè)試程序中。
4.負(fù)荷測(cè)試
負(fù)載測(cè)試是一種對(duì)現(xiàn)實(shí)主義著迷的測(cè)試--它有意避免理論上的錯(cuò)誤和實(shí)踐上的錯(cuò)誤。
我們通常在完成一個(gè)特定單元或整個(gè)代碼欄之后進(jìn)行這個(gè)測(cè)試,以確定理論解是否在某一負(fù)載下作為一個(gè)實(shí)際解。
負(fù)載測(cè)試模擬各種場(chǎng)景,以確保峰值性能。第一種情況稱為"基線",它將API與API在日常正常使用中預(yù)期的典型理論流量進(jìn)行比較。
這包括常規(guī)大小的測(cè)試,其中有一些相當(dāng)可觀的請(qǐng)求,可以在實(shí)踐中看到這兩種請(qǐng)求類型之間的任何區(qū)別。
通常,我們使用最大流量執(zhí)行第二次負(fù)載測(cè)試。這樣做是為了確保,即使是在峰值負(fù)載時(shí),適當(dāng)節(jié)流請(qǐng)求的程序也已到位。雖然API可能永遠(yuǎn)不會(huì)達(dá)到這一理論上的最大值,但這是很好的保證。
最后,我們執(zhí)行了一個(gè)過(guò)載測(cè)試,包括測(cè)試到理論上的最大值,并在頂部增加10%-20%的流量。
雖然這種類型的測(cè)試幾乎可以保證失敗,因?yàn)樗菍?duì)API函數(shù)的測(cè)試以及錯(cuò)誤代碼的生成、處理和集成到API中,因此它幾乎成為一個(gè)混合測(cè)試。
5.安全測(cè)試
這個(gè)實(shí)踐確保了API實(shí)現(xiàn)不受外部攻擊。安全測(cè)試的其他步驟包括驗(yàn)證加密技術(shù)和API訪問控制的架構(gòu)。它還管理用戶權(quán)限和驗(yàn)證授權(quán)。
6.滲透測(cè)試
審計(jì)過(guò)程中的第二個(gè)測(cè)試是滲透測(cè)試。了解最少API的用戶將嘗試從外部分析威脅向量,這涉及到函數(shù)、資源、流程或整個(gè)API及其組件。
7.模糊測(cè)試
安全審計(jì)過(guò)程的另一個(gè)階段是模糊測(cè)試。大量隨機(jī)數(shù)據(jù)(稱為"噪音"或"模糊")在模糊測(cè)試期間進(jìn)入系統(tǒng),以檢測(cè)任何碰撞或不良行為。這項(xiàng)技術(shù)將API置于測(cè)試中,以便為"最壞的情況"做準(zhǔn)備。"
8.性能測(cè)試
我們?cè)噲D在每個(gè)提交時(shí)將負(fù)載測(cè)試范式向左轉(zhuǎn)移。以前,負(fù)載測(cè)試只限于少數(shù)人,在CI/CD設(shè)置中很難實(shí)現(xiàn)。準(zhǔn)備好的API是一個(gè)性能測(cè)試解決方案,用于RESTVUY、SOAP和其他Web服務(wù),允許幾乎任何團(tuán)隊(duì)成員將性能測(cè)試集成到其CI/CD工作流中。
9.端到端測(cè)試
我們?cè)谲浖_發(fā)生命周期(SDLC)中使用端到端測(cè)試來(lái)評(píng)估應(yīng)用程序在類似產(chǎn)品的條件下的功能和性能,并在數(shù)據(jù)中模擬現(xiàn)場(chǎng)設(shè)置。
目的是從一開始到結(jié)束重新創(chuàng)建一個(gè)真實(shí)的用戶場(chǎng)景。該測(cè)試旨在驗(yàn)證測(cè)試中的系統(tǒng),并確保其子系統(tǒng)的功能和行為如預(yù)期。
10.組件測(cè)試
組件測(cè)試是一種軟件測(cè)試,我們可以在不與其他元素集成的情況下分別檢查每個(gè)組件。
當(dāng)我們從架構(gòu)的角度考慮它時(shí),它也被稱為模塊測(cè)試。單元測(cè)試、程序測(cè)試和模塊測(cè)試描述組件測(cè)試.
11.情景測(cè)試
場(chǎng)景測(cè)試是一種軟件測(cè)試技術(shù),它使用場(chǎng)景或推測(cè)故事來(lái)幫助測(cè)試人員處理復(fù)雜的問題或測(cè)試系統(tǒng)。理想場(chǎng)景測(cè)試是一個(gè)可靠的,有挑戰(zhàn)性的,有說(shuō)服力的,或有激勵(lì)性的故事,結(jié)果明確。
通常,這些測(cè)試不同于測(cè)試用例,因?yàn)闇y(cè)試用例是單個(gè)階段,而場(chǎng)景則跨越多個(gè)過(guò)程。
場(chǎng)景測(cè)試保證了軟件的端到端功能和流程流正在有效工作。在場(chǎng)景測(cè)試中,測(cè)試人員假裝是最終用戶,尋找最終用戶可以在產(chǎn)品上執(zhí)行的真實(shí)場(chǎng)景或用例。
場(chǎng)景測(cè)試涉及測(cè)試人員與客戶端、利益相關(guān)者和開發(fā)人員一起設(shè)計(jì)測(cè)試場(chǎng)景。
12.全通道測(cè)試
全通道測(cè)試在多個(gè)設(shè)備和平臺(tái)上測(cè)試一個(gè)應(yīng)用程序或產(chǎn)品。目標(biāo)是保證用戶體驗(yàn)在所有平臺(tái)上是一致和無(wú)縫的。
這種無(wú)縫用戶體驗(yàn)的保證是更廣泛的數(shù)字保證主題的一個(gè)重要組成部分。