接口測試的原則、用例與流程詳解

🍅?點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快??

一、接口的介紹

軟件測試中,常說的接口有兩種:圖形用戶接口(GUI,人與程序的接口)、應用程序編程接口(API)。

接口(API)是系統與系統之間,模塊與模塊之間或者服務與服務之間相互調用的入口。它的本質:其實就是一種約定,在開發前期,我們約定接口會接收什么數據;在處理完成后,它又會返回什么數據。

開發崗位分為前端和后端,他們相互配合完成工作,會協商接口的定義方法。一般后端定義接口,前端調用接口。前后端分離是web應用開發的發展趨勢,優勢有:

  • 后端不用精通前端技術,只專注與數據的處理,對外提供API即可。
  • 前端的專業性越來越強,通過API獲取數據,并專注與頁面設計。
  • 前后端分離可擴大接口的應用范圍,開發接口即可應用到web應用上,也可應用到app上。

接口的分類:HTTP接口、Web Service接口、RESTful接口。【文末有配套視頻學習】

二、接口測試的定義、必要性/優點、原理

1、接口測試的定義:接口測試是測試系統組件間接口的一種測試。接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。(--百度百科)

接口測試,其實就是驗證接口內部處理邏輯是否正確;我們既要保證單接口的正確性,也要保證接口的業務邏輯正確性,主要體現在兩方面:

  • 輸入正確的測試數據,驗證接口正常處理后返回的結果是否正確(數據結構&數據內容)
  • 輸入異常的測試數據,驗證接口能否正確處理異常數據并返回特定提示,是否合理,是否健壯

接口測試目的:測試接口的正確性和穩定性(持續集成是接口測試的核心)

2、接口測試的必要性/優點:

  • 開展接口測試可以及早發現問題,有效降低測試成本
  • 接口一般較UI相對穩定,更利于進行自動化和持續集成
  • 特別適用于高復雜性的平臺,可以帶來高效的缺陷監測和質量監督能力(平臺越復雜,系統越龐大,接口測試的效果越明顯:提高測試效率,提升用戶體驗,降低研發成本)

PS:以保證系統的正確和穩定為核心,以持續集成為手段,提高測試效率,提升用戶體驗,降低產品研發成本。(持續集成是接口測試的低成本、高收益的根源,是接口測試的靈魂。沒有持續集成接口測試帶來工作量會成指數增長!)

3、接口測試的原理:測試借助工具模擬客戶端向服務器發送請求報文,服務器接收請求報文后對相應的報文做處理并向客戶端返回應答,工具模擬客戶端接收應答,然后測試人員檢查應答是否準確。

三、接口測試的范圍、原則、重難點

1、接口測試的范圍:

1. 需要測試的接口:

隨著系統的復雜性越來越高,接口越來越多,覆蓋所有接口是很困難的事。通常主要測試最外層的兩類接口:數據進入系統接口(調用外部系統的參數為本系統使用)和數據流出系統的接口(驗證系統處理后的數據是否正常)。

2. 被測接口需要測試的方面:

關注被測接口的功能是否實現,性能是否達標,安全性是否滿足。重點關注數據的交換、傳遞、處理次數、以及控制管理過程。可參考下面用例設計中的接口測試點。

2、編寫和執行測試時的原則:

  • 不同的接口參數覆蓋不同的業務場景;
  • 在后臺構造合適的數據來滿足接口的測試用例;
  • 根據接口的返回值,斷言其是否返回期望結果,并查看數據庫驗證;
  • 測試用例涉及多個步驟的,應對涉及的步驟都驗證
  • 刪除測試過程中產生的結果,確保每個用例執行前都是一個清潔的環境

3、接口測試的重難點:

  • 動態變量參數化
  • 接口依賴及中間變量問題
  • 異步接口結果驗證問題
  • 相應參數及嵌套很多的驗證問題
  • 接口測試框架的穩定性問題
  • 資源清理問題
  • 多接口場景測試

四、接口測試的用例設計

接口測試對象主要為接口,但隨著系統復雜度越來越高,接口越來越多,完全覆蓋是一件很困難的事情,且實際過程中任意接口的變動都可能導致我們接口測試用例不可用。

1、接口測試點參考:

2、接口用例設計優先級

優先級-->針對所有接口:

  • 暴露在外面的接口,因為通常該接口會給第三方調用;
  • 供系統內部調用的核心功能接口;
  • 供系統內部調用非核心功能接口;

優先級-->針對單個接口:

  • 正向用例優先測試,逆向(異常)用例次之 (通常情況,非絕對);
  • 是否滿足前提條件 > 是否攜帶默認參值參數 > 參數是否必填 > 參數之間是否存在關聯 > 參數數據類型限制 > 參數數據類型自身的數據范圍值限制
  • 是否滿足前提條件:有些接口需要滿足前置條件,才可成功獲取數據。常見的,需要登陸 Token。逆向用例:針對是否滿足前置條件 (假設為 n 個條件),設計 0~n 條用例;
  • 是否攜帶默認值參數:設計 1 條正向用例,帶默認值的參數都不填寫、不傳參,必填參數都填寫正確且存在的 “常規” 值,非必填參數不填寫、不傳參;
  • 業務規則、功能需求:根據實際情況結合接口參數說明,可能需要設計 n 條正向用例和逆向用例
  • 參數是否必填:針對每個必填參數,都設計 1 條參數值為空的逆向用例
  • 參數之間是否存在關聯:有些參數彼此之間存在相互制約的關系。逆向用例:根據實際情況,可能需要設計 0~n 條用例
  • 參數數據類型限制:針對每個參數都設計 1 條參數值類型不符的逆向用例
  • 參數數據類型自身的數據范圍值限制:針對所有參數,設計 1 條每個參數的參數值在數據范圍內為最大值的正向用例;針對每個參數 (假設 n 個),設計 n 條每個參數的參數值都超出數據范圍最大值的逆向用例;針對每個參數 (假設 n 個),設計 n 條每個參數的參數值都小于數據范圍最小值的逆向用例

以上幾個方面考慮全的話,基本可以做到如下幾個方面的覆蓋:主流程測試用例:正常的主流程功能校驗;分支流測試用例:正常的分支流功能校驗。異常流測試用例:異常容錯校驗

五、接口測試的流程

接口測試的流程和功能測試流程類似,依據的對象是需求說明書和接口需求,接口測試流程如下:

1、接口測試需求分析(從 UI 交互和接口參數分析接口的設計邏輯)

首先根據接口設計的技術架構方案,了解清楚被測接口對應的公共入參、入參、出參及返回數據的 Json 結構規范,根據測試場景進行測試。

理解接口參數,熟悉接口參數的輸入要求、輸入值范圍、必填項等;

理解接口輸出,熟悉返回 json 的結構構成、返回值類別、返回值范圍、返回 data 的不同類型等。

理解接口的邏輯、接口的業務關聯,熟悉技術方案中的接口相互關聯、依賴的關系,接口與接口之間的數據傳遞等。

尋找測試點,根據輸入 (參數名、取值范圍)、輸出 (參數名、返回值范圍)、關聯關系,進行測試點分析;

2、編寫接口測試計劃

接口測試計劃與功能測試計劃的目標一致,都是為了確認需求、確定測試環境及測試方法,為設計測試用例做準備,初步指定接口測試進度方案。接口測試計劃包括概述、測試資源、測試功能及重點、測試策略、測試風險、測試標準。

3、編寫、評審、執行接口測試用例

編寫的接口用例評審通過后,借助測試工具執行測試,上報發現的問題

接口數據準備:

4、接口自動化測試持續集成要點

項目測試時,接口會有變更,用例也會更新,需要借助工具(如github)來維護測試用例進行持續集成,通過自動化測試實時監控項目接口運行情況。接口自動化測試持續集成主要包括以下內容:

  • 流程方面。在回歸階段加強接口異常場景的覆蓋,并逐步向系統測試、冒煙測試階段延伸,最終達到全流程自動化。
  • 結果展示。更加豐富的結果展示、趨勢分析、質量統計和分析等。
  • 問題定位。報錯信息、日志更精準,方便問題復現與定位。
  • 結果校驗。加強自動化校驗能力,如數據庫信息校驗。
  • 代碼覆蓋率。不斷嘗試有目前的黑盒向白盒下探,提高代碼覆蓋率。
  • 性能需求。完善性能測試體系,通過自動化的手段監控接口性能指標是否正常。

5、接口測試流程例子

  • 測試A借助Postman工具測試接口
  • 每天或定期將最新的接口集合文件導出到本地
  • 將最新的集合文件推送到git服務器
  • Jenkins每次運行接口測試時,先做一次文件拉取動作,再通過命令行執行接口測試
  • 將測試結果通過郵件或釘釘發送給項目負責人

六、各種場景下的接口測試

1、單接口的測試

單接口測試的重點,其實就是保證該接口的正確性和健壯性。也就是說,你既要保證這個接口可以按照需求,正確處理傳入的參數,給出正確的返回;也可以按照需求,正確的拒絕傳入非正確的參數,給出正確的拒絕性返回。

總結:需要有足夠的用例保證接口能正確處理各種正常情況和異常情況

2、業務流程的接口測試(多接口測試)

主要是保障通過多個接口的串聯操作可以完成原來需求中提出的業務邏輯

總結:重點在于業務流程是否能跑通

拓展:我們更需要關心業務流和數據流的關系,要完成整體業務邏輯的接口測試,需要理清每個流程的數據流程,而數據流程驅動了業務流處理,。并不需要再過度關心如何用業務流的方法覆蓋更多的代碼邏輯異常

3、復雜場景的接口測試

測試場景一:被測業務操作是由多個API調用協作完成

背景:一個單一的前端操作可能會觸發后端一系列的API調用,此時API的測試用例就不再是簡單的單個API調用,而是一系列API的調用

存在的情況:存在后一個API需要使用前一個API返回結果的情況;需要根據前一個API的返回結果決定后面應該調用哪個API

存在問題:如何高效地獲取單個前端操作所觸發的API調用順序

解決上述問題思路:通過網絡監控手段,捕獲單個前端操作時所觸發的API調用順序,譬如Fiddler、Charles等抓包工具。也可以通過用戶行為日志,通過大數據手段來獲取調用順序

測試場景二:API 測試過程中的第三方依賴

背景:API 之間是存在依賴關系的,比如你的被測對象是 API A,但是 API A 的內部調用了 API B,此時如果由于某種原因,API B 在被測環境中處于不可用狀態,那么 API A 的測試就會受到影響。

在單體架構下,通常只會在涉及到第三方 API 集成的場景中才會遇到這個問題,所以還不算嚴重。但是,在微服務架構下,API 間相互耦合的依賴問題就會非常嚴重。

解決問題的核心思路:啟用 Mock Server 來代替真實的 API

測試場景三:異步 API 的測試

什么是異步API:調用后會立即返回,但是實際任務并沒有真正完成,而是需要稍后去查詢或者回調(Callback)的 API

對異步 API 的測試主要分為兩個部分:

  • 測試異步調用是否成功:檢查返回值和后臺工作線程是否被創建兩個方面就可以了
  • 測試異步調用的業務邏輯處理是否正確

測試異步調用的業務邏輯復雜性:因為異步 API 通常發生在一些比較慢的操作上,比如數據庫 I/O、消息隊列 I/O 等,此時測試往往需要去驗證數據庫中的值、消息隊列中的值等,這就需要測試代碼具有訪問和操作數據庫或者消息隊列的能力。在實際工程項目中,這些能力一般會在測試框架級別提供,也就是說要求 API 測試框架中包含對應的工具類去訪問和操作數據庫或者消息隊列等。

最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

這些資料,對于做【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術行業,一定要提升技術功底。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91664.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91664.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu 22.02 帶外進單用戶拯救系統

不停地按 F7 ,然后進到 menu ,選擇 ubuntu ,然后按下 ESC ,然后瞬間會刷一個 ubuntu 的選項(默認是在第一的位置,直接快速按下 e)即可進入單用戶模式。 找到類似 linux /boot/vmlinuz-xxx rootU…

Java-75 深入淺出 RPC Dubbo Java SPI機制詳解:從JDK到Dubbo的插件式擴展

點一下關注吧!!!非常感謝!!持續更新!!! 🚀 AI篇持續更新中!(長期更新) AI煉丹日志-30-新發布【1T 萬億】參數量大模型!Kim…

【橘子分布式】gRPC(編程篇-上)

一、簡介 我們之前學習了grpc的一些理論知識,現在我們開始正式進入編程環節。 我們的項目結構和之前的thrift結構還是一樣的,一個common,一個client,一個server。只不過在grpc這里common它一般叫做api模塊。還是放置一些公共的實體類&#x…

IOS 18下openURL 失效問題

突然有一天有玩家反饋說應用打開外部連接打不開了,于是查了一下,報錯:BUG IN CLIENT OF UIKIT: The caller of UIApplication.openURL(_:) needs to migrate to the non-deprecated UIApplication.open(_:options:completionHandler:). Force…

前端面試題(React 與 Vue)

目錄 一、React 函數組件 Fiber架構 組件重新渲染 組件通信 為什么不能在if中使用hook useEffect與useLayoutEffect區別 性能優化hooks 受控組件與非受控組件 redux與zustand區別 二、Vue vue2與vue3區別 生命周期 computed與watch區別 v-if與v-show區別 v-mod…

大模型格式

目錄 大模型格式: ollma 可以加載gguf ChatGPT 說: 🔍 什么是 GGUF? 大模型格式: Ollama 模型格式只能運行已打包成 .gguf 格式的模型,或通過其 Modelfile 方式構建 ModelScope 模型格式大多使用 Hug…

數據結構 棧(1)

1. 棧的概念和結構之前幾篇我們分別講解了順序表和單鏈表的內容,今天我們又來學習一個新的關于數據結構的內容--- 棧 。棧:棧也屬于線性表 , 但它是一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一…

【Android代碼】繪本翻頁時通過AI識別,自動通過手機/pad朗讀繪本

核心功能: 打開攝像頭(可支持外接攝像頭)檢測翻頁(后續考慮添加圖像差異算法)拍照后用 識圖自動用 TextToSpeech 朗讀文字內容 📌 說明:使用了 CameraX(Android Jetpack)…

園區IPv6規劃與部署

?今天我將圍繞“園區IPv6規劃與部署”這一主題,結合行業趨勢、技術難點和實際案例,與大家分享一套可落地的規劃方法論。?在開始前,我想先問大家一個問題:?如果現在讓你給一個新建園區設計網絡,你會優先考慮IPv4還是…

mingw11.2+opencv4.12 cmake contrib編譯

第一次Configure之后,會出現不少錯誤,主要是因為文件沒辦法正常下載引起的,因為之前編譯過vs2022 ,緩存里面有應該下載的文件了,所以這次沒有錯誤,如果你第一次Configure有下載錯誤,可以下載以下的文件飛書 Docs Link:…

免費MCP服務:Excel CSV 轉 JSON MCP by WTSolutions 文檔

簡介 Excel 轉 JSON MCP(模型上下文協議)提供了一個標準化接口,用于通過模型上下文協議將 Excel 和 CSV 數據轉換為 JSON 格式。此 MCP 實現提供了兩個專門用于數據轉換的工具: excel_to_json_mcp_from_data:轉換制表…

應用集成體系深度解析:從數據互通到流程協同

一、應用集成核心概念框架 #mermaid-svg-0V3XAJsofKi2qCa7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0V3XAJsofKi2qCa7 .error-icon{fill:#552222;}#mermaid-svg-0V3XAJsofKi2qCa7 .error-text{fill:#552222;s…

深入解析 AWS RDS Proxy

在當今微服務架構與無服務器計算快速發展的背景下,數據庫連接成為許多應用系統的性能瓶頸。傳統RDS實例在處理大量短連接請求時,往往面臨連接資源耗盡、連接建立耗時過高等問題。為了解決這一挑戰,AWS 推出了 RDS Proxy 服務,通過…

深度剖析 TDMQ RabbitMQ 版經典隊列底層存儲機制

導語 RabbitMQ 作為開源消息隊列的標桿產品,憑借靈活的路由機制與高可用設計,支撐著海量業務場景的消息流轉。而經典隊列(Classic Queue) 作為 RabbitMQ 最基礎、應用最廣泛的隊列類型,其底層存儲機制直接決定了消息處…

Spring AI開發智能客服(Tool calling)

文章目錄前言1 思路分析2 工程結構搭建1_數據庫表2_引入依賴3_基礎代碼3 定義 Tool1_分析查詢條件2_定義Function4 系統提示詞5 配置ChatClient6 編寫Controller7 測試8 Tool calling 底層組件1_ToolCallback2_ToolDefinition3_ToolCallingManager4_ResultConverter5_ToolConte…

設計模式筆記_結構型_適配器模式

1.適配器模式介紹適配器模式是一種結構型設計模式,它允許不兼容的接口協同工作。適配器模式的核心思想是將一個類的接口轉換成客戶期望的另一個接口,使得原本由于接口不兼容而不能一起工作的類可以一起工作。你可以將其想象成一個“轉換插頭”——假設你…

事務隔離:從鎖實現到MVCC實現

文章目錄事務隔離:從鎖實現到MVCC實現事務四大特性事務隔離級別鎖實現概念實現事務隔離MVCC實現當前讀與快照讀實現事務隔離Read View總結事務隔離:從鎖實現到MVCC實現 面試的時候被面試官問到:你這個項目為什么使用了可重復讀而不選擇讀已提…

小架構step系列18:工具

1 概述 在寫代碼的時候,有很多通用的、與業務無關邏輯,這些一般寫成工具類方法。這些工具類方法慢慢地被積累起來,變成了開源包,可以直接使用開源包,而不是自己再花時間來重復造這些輪子。 這些工具類的開源包比較多…

網絡、CentOS 系統、數據庫面試知識點總結

文章目錄Linux CentOS 面試知識點整理速查復習? 一、Linux 高頻面試題? 二、MySQL 高頻面試題? 三、計算機網絡(OSI四層模型)高頻面試題🔗 鏈路層(Link Layer)🌐 網絡層(Internet Layer&…

Vue (Official) v3.0.2 新特性 為非類npm環境引入 globalTypesPath 選項

目錄 前言 報錯信息 原因 解決方案 總結 前言 在早上更新了vscode后,發現自己 uni-app 項目的 .vue文件 的 template 標簽都出現了報錯。定位到了問題是因為 Vue (Official) 插件更新導致的,重裝了插件的上一個小版本,報錯消失&#xff…