99热免费,女高潮大叫喷水流白浆,精品老肥婆88AV,美女后入视频,日韩h

首頁> 熱點 > > 正文

接口測試快速入門1簡介_今日熱訊

2023-04-25 10:48:39 來源:博客園

簡介

本章介紹應用程序編程接口(API application programming interface)和 API測試。API測試是軟件測試活動的一個重要方面(在典型的基于服務的軟件開發(fā)過程中)。它包括測試應用程序的業(yè)務組件,通常表示為API,然后再開發(fā)UI。一個微服務處理單一需求的API。

什么是API測試?

API對應用層進行抽象,并提供資源供客戶端使用。API是任何典型的Web應用、多層Web應用或移動應用的骨干,它隱藏了系統(tǒng)的內(nèi)部細節(jié),例如如何為消費者處理在線支付。


(資料圖)

API是應用程序的中間層,它與后端打交道,通常通過ORM(對象關(guān)系映射Object-Relational Mapping)或其他工具,或直接與數(shù)據(jù)庫和前端打交道。API在后端和前端之間充當代理。API根據(jù)用戶的要求/請求從后端讀取數(shù)據(jù),并將響應發(fā)送到前端。

沒有前端的API提供服務,例如支付網(wǎng)關(guān)、天氣預報等。

上圖顯示了典型的基于服務的軟件應用結(jié)構(gòu)。它在有數(shù)據(jù)庫,中間層的API,以及從瀏覽器或移動應用程序發(fā)出的請求。

微服務是處理單一需求的API,該服務可以獨立運作/部署。微服務是定義典型軟件應用程序的業(yè)務邏輯的API,實現(xiàn)快速開發(fā)和可擴展的軟件開發(fā)理念。

API測試涉及到業(yè)務工作流程。這可能被歸類為黑盒測試,但從技術(shù)上講,它更像是一種灰盒測試,測試人員簡單地了解一些內(nèi)部實施的細節(jié),但不深入。他們通過對API內(nèi)部使用的代碼路徑或邏輯的技術(shù)方面的了解,單獨測試API。

API有約定的格式,比如JSON/XM)。它接受給定格式和所需參數(shù)的請求,并提供規(guī)定格式的正確響應。這種測試直接與應用服務器打交道。它可能涉及測試應用程序的單個組件或組合幾個組件。標準測試技術(shù)適用于測試API時,如等價類、邊界值分析、大請求、無效請求、未授權(quán)請求等。

API測試需要特定的工具,如httpie、curl、火狐和Chrome插件restclient、Postman和RestAssured等,它們支持請求方法和用于檢索API的協(xié)議。常用的協(xié)議是HTTP(S)。測試人員用所需的請求方法鍵入URL,在API測試工具中以與API消費者相同的方式請求參數(shù),然后在應用程序的上下文中驗證響應/輸出。

測試計劃或用例是必要的,就像用戶工作流測試一樣。測試計劃有輸入,預期輸出,和前提條件等。

上述段落中的概念將在以后的章節(jié)中更詳細地介紹。

API測試的必要性

API測試使用之前發(fā)現(xiàn)功能/性能/安全/(更多類型)錯誤的最快方法。

在軟件開發(fā)過程中,早期測試的投資回報率較高。由于API測試具有更大的代碼/功能覆蓋面,與前端測試相比,測試的效率往往要高很多。在單個API層面上識別錯誤的速度更快,因為與在前端層面上發(fā)現(xiàn)錯誤相比,復雜性更低,發(fā)現(xiàn)錯誤的可能性更高。

不測試API和在前端層面測試只會使測試更加復雜和乏味,而且通常需要更多的測試時間和資源。只測試前端是容易出錯。由于前端的變化頻率往往比后端/中間層高得多,失敗率也往往更高。因此識別錯誤是后端/API的錯誤還是前端的錯誤是很耗時的。

有效地實施API測試可以幫助減少測試工作,節(jié)省時間和成本。

API測試的類型

API對消費者/前端的請求做出響應。響應應該是快速的。API不應允許未經(jīng)授權(quán)的用戶訪問。當并發(fā)用戶訪問API時,它應該在規(guī)定的時間內(nèi)響應。對API的無效請求應適當處理,并應返回錯誤信息。API應該遵守當?shù)氐姆?。如果API是作為一種服務提供的,那么它應該保持與消費者的合同,參數(shù)不應改變,等等。

API最容易出現(xiàn)的問題

  • 61%的可靠性

  • 22.2%的安全性

  • 16.7%的性能

以下是API測試的類型:

功能測試

解決API的功能問題,例如按照業(yè)務要求返回響應。涉及控制流和數(shù)據(jù)流等。

發(fā)送和返回都符合接口設計;正確地實現(xiàn)了功能,比如能創(chuàng)建或刪除用戶,數(shù)據(jù)庫和緩存數(shù)據(jù)處理正確等。

參數(shù):參數(shù)的邊界值和等價類劃分;組合可選參數(shù);參數(shù)為空字符串、null等特殊值;參數(shù)長度;參數(shù)類型;sql注入;包含特殊符號和編碼的參數(shù)。

重復與時序測試

多次重復測試返回結(jié)果正常且一樣。由于API是非常松散的耦合,亂序、丟失、重復調(diào)用如何應對?競爭和加鎖的情況如何處理?時序與生命周期特別重要。

重復添加或刪除用戶,不會對數(shù)據(jù)庫和緩存等造成不良影響,提示的錯誤碼與文檔一致。

性能測試

解決負載下的響應時間。當在同一時間點上對給定的API提出多個請求時,API應該按照服務提供商和消費者之間商定的SLA定義,在允許的時間范圍內(nèi)返回響應。 需要考慮多個API的組合,以及多個微服務共享服務器、DB等情況。

  • 預計API將如何被使用?
  • 如果它突然變得流行,會發(fā)生什么?
  • API是否有全球24/7使用的高可用性?
  • 是否有可能出現(xiàn)使用高峰的時候(例如比如全民做核算)?
  • 響應時間、并發(fā)、吞吐量等指標。

局域網(wǎng)內(nèi)單次調(diào)用在50ms內(nèi)完成、在1000并發(fā)的情況下最大相應時間不超過60ms、資源占用正常等。是否有峰值,過量是否會產(chǎn)生不良效果。資源消耗與容量等。重點關(guān)注響應時間、吞吐量、并發(fā)數(shù)、可靠性、 cpu、io、內(nèi)存、gpu、網(wǎng)絡等資源占用。

安全測試

解決了通過獲取會話、參數(shù)篡改等方式對API進行未授權(quán)訪問的問題。API不應允許任何匿名/未經(jīng)授權(quán)的用戶通過自身獲得數(shù)據(jù)的訪問。

  • 蠕蟲病毒和其他負載攻擊。

  • 無效的認證。

  • SQL注入。

  • 加密級別不夠。傳遞和存儲的敏感數(shù)據(jù)和日志需要加密,并且難以破解。

  • 未經(jīng)授權(quán)的訪問控制。 黑白名單:非授權(quán)的主機不能訪問接口

  • 云問題。如果API位于云端,安全問題可能更嚴重,因為通常對物理網(wǎng)絡安全的有效控制很少。

  • 意外的誤用。調(diào)用方非預期濫用、文檔不佳或編程錯誤等造成,也可能是惡意攻擊。

噪聲測試

解決請求中的無效或故障數(shù)據(jù)。API應該相應地、及時地做出響應。如果數(shù)據(jù)是無效的,API應該用適當?shù)腻e誤代碼/消息來回應。

弱網(wǎng)

雙向通信能否正常完成。尤其要考慮丟包,延遲、2G等差網(wǎng)絡場景??梢允褂胠inux的防火墻及tc命令或facebook的ATC框架模擬。

錯誤代碼和消息測試

解決不正確的輸入數(shù)據(jù),并以適當?shù)腻e誤代碼和消息進行響應。通常錯誤的產(chǎn)生是由于參數(shù)傳遞不正確(例如,不按順序)或超出范圍。

擴展測試

與基礎設施有關(guān),這是DevOps的常規(guī)工作,但API在這種情況下也會被測試。這主要是在微服務架構(gòu)中,特定的API被更頻繁地使用。API應該是可擴展的,因為并發(fā)訪問將更加頻繁,而且API應該一直可用。經(jīng)常在性能測試中驗證。

合規(guī)性測試

屬于API被消費的地方管轄。例如,如果API要求提供個人信息(手機號碼、出生城市等),那么這些信息應該由供應商保護,不允許任何試圖獲取這些信息的行為,并且應該保持審計日志。

許多行業(yè)要求軟件必須符合各種法規(guī)和標準。法規(guī)可能來自政府和準政府實體,如FDA或EPA。標準可能來自于國際組織或行業(yè)團體。例如,如果軟件處理信用卡或借記卡,它必須符合PCI標準。以任何方式處理健康信息的系統(tǒng)必須符合HIPAA標準。API可能受制于服務水平協(xié)議(SLA)或其他技術(shù)協(xié)議。如果不能滿足這些協(xié)議,可能會給組織帶來大量的懲罰或罰款。

CDCT(消費者驅(qū)動的合同測試)

意味著服務提供者總是保持相同的請求有效載荷。這對服務提供者的業(yè)務至關(guān)重要。如果有效載荷被改變,那么消費者請求將開始失敗,這將是業(yè)務的損失。即穩(wěn)定性。

變更管理

你的API是否依賴于其他API?當這些改變時,你將如何知道?API的數(shù)據(jù)模式是至關(guān)重要的。即使是對模式的一個小的改變--例如,將一個整數(shù)改為實數(shù)--也可能導致缺陷和失敗。

API通常是由不同的小組開發(fā)的。試圖確保所有參與者的時間表是一致的,一個小組做了一些改變,然后這些改變就像海嘯一樣波及所有的開發(fā)小組。

失敗管理

API在生產(chǎn)中出現(xiàn)故障,你將如何知道?當(以及如果)外部組織停止使用你的API時,你是否能夠找出原因和發(fā)生的時間?

數(shù)據(jù)

API的創(chuàng)建、查詢、更新和刪除等正確。數(shù)據(jù)庫事務、大量數(shù)據(jù)、數(shù)據(jù)遷移等。

組合

邊界值和API組合場景等。

業(yè)務組合:比如扣費需要綜合考慮閑時、忙時、節(jié)假日、集團用戶優(yōu)惠等各種因素。注意接口的水平和垂直組合。

協(xié)議

比如SNMP協(xié)議與其他廠商的互通,私有部分的實現(xiàn)。又如私有協(xié)議。

可移植性問題

你的API有可能需要在不同的層面上工作。它們可能被直接調(diào)用,也可能被其他API調(diào)用,而這些API又被其他API調(diào)用,再由ESB控制。

文檔

文檔必須進行正確性測試。由于大量的開發(fā)者需要與你的API進行交互,文檔必須為所有的開發(fā)者提供足夠的信息。而文檔的質(zhì)量是至關(guān)重要的。文檔中的數(shù)據(jù)順序、數(shù)據(jù)類型、格式、甚至大寫字母都是至關(guān)重要的,必須正確。

易用性

軟件開發(fā)者是否能真正學習和理解如何成功地使用API?是否容易調(diào)用、簡潔、語法一致等?

可測試性

使API的人很可能想用他們自己的API層來測試它。這可能需要特殊的環(huán)境(沙箱)供他們發(fā)揮,。這些測試是否正確,而不干擾生產(chǎn)環(huán)境?

甚至可以考慮使用mock偽造返回。

  • 其他:更多需要關(guān)注的點請參考ISO/IEC 25010:2011

優(yōu)勢

在軟件開發(fā)的早期階段發(fā)現(xiàn)bug是有好處的。在實施API之前,在后端找到一個bug,可以節(jié)省開發(fā)API的時間。在中間層/API中發(fā)現(xiàn)錯誤,可以節(jié)省前端開發(fā)的時間。在產(chǎn)品交付的軟件開發(fā)模式中,越晚測試,測試工程師在緊迫的期限內(nèi)找到bug就越復雜,越有挑戰(zhàn)性。

在業(yè)務層找到bug有利于交付高質(zhì)量的產(chǎn)品。如果API測試得足夠好,對產(chǎn)品開發(fā)團隊有明顯的好處。

以下是做API測試的幾個優(yōu)勢。

  • 容易實現(xiàn)自動化
  • 能更快地找到bug
  • 獨立于GUI
  • 較大的代碼路徑覆蓋率

API測試的挑戰(zhàn)

  • API測試中的主要挑戰(zhàn)是參數(shù)組合,參數(shù)選擇和調(diào)用排序
  • 沒有GUI可用于測試
  • 驗證和驗證不同系統(tǒng)中的輸出對于測試人員來說很難
  • 測試人員需要了解參數(shù)選擇和分類
  • 異常處理功能需要測試
  • 開發(fā)技能

參考資料

  • 本文涉及的python測試開發(fā)庫 謝謝點贊!
  • 本文相關(guān)海量書籍下載

補充

應用程序編程接口(API Application Programming Interface)是不同的進程、程序和/或系統(tǒng)之間進行通信的代碼。API經(jīng)常被用于C/S架構(gòu),一個進程向其他進程提供某種功能。它支持兩個獨立軟件系統(tǒng)之間的通信和數(shù)據(jù)交換。API起源于遠程過程調(diào)用(RPC remote procedure call)。

API實際上有兩種不同的類型。本地API通常用于與操作系統(tǒng)、數(shù)據(jù)庫和I/O或其他在本地處理器上執(zhí)行工作的進程進行交互。例如打開文件,分配堆內(nèi)存,在數(shù)據(jù)庫上啟動事務,在屏幕上顯示數(shù)據(jù),或者捕獲鼠標動作,他們在編程語言中進行API調(diào)用來執(zhí)行任務。通常程序員甚至不知道他們正在調(diào)用各種API,因為編程語言往往隱藏了直接調(diào)用。

但一般所說的API是對遠程處理的請求的實現(xiàn)。API實現(xiàn)了指定了本地進程請求從遠程位置完成任務的方式,并定義了該任務的結(jié)果返回給本地進程的方式,是一種協(xié)議。協(xié)議中包括指定要完成的任務的技術(shù),數(shù)據(jù)傳遞給遠程進程的方式,信息實際傳達給遠程位置的方式,結(jié)果傳遞回來的方式,以及解釋這些結(jié)果的方式。

待匯總

API和SDK的區(qū)別

python高效web API開發(fā)庫FastAPI快速入門教程1簡介

python高效web API開發(fā)庫FastAPI快速入門教程2路徑參數(shù)和類型及接收json數(shù)據(jù)

python筆試面試項目實戰(zhàn)2020百練12-使用requests做HTTP接口測試

python3測試工具開發(fā)快速入門教程10接口測試簡介

使用jython進行dubbo接口及ngrinder性能測試

接口測試面試題

python工具庫介紹-dubbo:通過telnet接口訪問dubbo服務

接口協(xié)議工具thrift1快速入門

使用python3和flask構(gòu)建RESTful API(接口測試服務與mockserver工具)

標簽: