如何做接口自動化測試?

一、前言

接口通俗來講就是前端和后段之間傳輸數據的橋梁,注意:不是每一個項目都有接口,一些大型項目是前后端分離的,那么他們怎么實現數據的傳遞和返回呢?在通俗來講就是前端和后段都有一個模擬參數數據

二、接口自動化測試的 "能 "

1、接口自動化的目標

  • 用于項目的 API 層的 HTTP 接口的功能邏輯驗證
  • 減少手工測試的工作(回歸驗證;跨模塊的驗證)
  • 實現手工驗證不能做的驗證(如接口涉及大量數據的排序比較)
  • 手工很難充分驗證的功能邏輯(如接口的功能驗證涉及大量的數據)

P.S. 實際項目中,接口自動化的根本目的是什么?

個人認為是定時跑時,能監控接口,當接口功能失常時,可以及時發現,即發現 Bug。因此,可以使用代碼覆蓋率來評估接口自動化的完整性,但更重要的是發現問題

2、接口自動化 Case 用例設計原則

切記:

  • 不要為了做自動化而做自動化,做的首要目標是問題出現時,能第一時間發現
  • 自動化中的代碼覆蓋率統計可以作為參考,但不能一開始就為了提高覆蓋率,陷入 Case 設計之中

注意:好的接口自動化 Case 設計,依賴于 Case 設計者的功能理解程度(手工測試的功力)+ 功能覆蓋點

原則:

1.將手工測試點轉換為自動化用例

Case 設計注意:驗證用例通過的標準—參考一個功能點容易出問題的地方。或者說,一個用例的通過說明此功能點一定沒問題;反之,一定有問題。

2.覆蓋手工測試不易檢查/太浪費時間的檢查

比如:

  • 一個 HTTP 接口設計大量的數據比較的時候
  • 接口的 json 返回不能直接檢查功能點是否正確(需要調用另一個接口的 json 來間接驗證時)
  • 一個接口的 json 返回需要和其他模塊的接口聯合” 互相驗證 “(需要調用其他模塊的接口的 json,兩個 json 相互來驗證彼此的正確性)

3.“邊緣性” 的功能檢查 這里主要指的是回歸驗證

如果系統涉及邊緣性的功能驗證,把此類功能設計層自動化用例

4.接口驗證的程度

接口的驗證:即判斷一個接口是否正常的標準。注意:接口參數”合理地“組合

5.DB 數據更新檢查

(如果有必要)注意從接口的角度檢查 DB 數據的更新:

  • 其他系統的數據更新到待測系統 DB 中的數據
  • 每天待測系統由于用戶操作更新到 DB 中的數據

6.接口自動化的數據準備

關于是否需要為接口自動化,特意在 DB 中準備需要的數據,適需要程度而定。原則:除非必須,否則不用準備。如果不準備數據,無法完成對接口的驗證,則自己準備數據即可

注意:一旦自己準備數據,評估對其他功能驗證的影響。確保 DB 中數據量和真實性(模擬的數據需要充足,并且不能和真實數據差異性過大)

3、接口自動化用例定時跑

自動化一般會選擇每天定時跑。這里需要注意的一點就是定時跑的時間選擇

時間選擇上注意幾點:

1)在線上跑時,注意對線上接口的影響(一般要求:線上的回歸驗證可以隨時跑)

2)如果要檢查 DB 數據更新的有關邏輯,注意數據的穩定性 (如用戶量少的時候)

3)在測試時(非生產環境),接口涉及讀,寫 DB,考慮是否需要定時跑

三、接口自動化測試的 "不能 "

首先,接口自動化不是萬能的,總有覆蓋不到的時候。知道自動化的”不能“之處,才能更好配合手工測試出問題

自動化的 ”不能“ 之處如下:

1)HTTP 接口突然出現壓力問題(前期的壓測)

2)Web 層面的手動測試 (新功能上線后,對原有功能回歸時,仍需要接口自動化驗證接口,手工測試 Web 頁面功能)

3)異常情況(如需要第三方 API 掛掉/超時的場景)

1、接口自動化之難點

1)實現變動 vs 維護的工作量 vs 檢查的詳細程度

檢查詳細程度:自己和自己比;自己和同類接口同一指標比較(因為口徑不一致,或者內部實現變化,需要后續維護)

經驗:自己和自己比,擴展和兼容性比較好(動態參數 + 完成功能檢查);而自己和別的接口比 看需求而定(接口提測前后 數據準確性檢查比較參考);

P.S. 小的點,執行時間和執行頻率

用途:發現功能失常,功能不可用;

2)接口監控 —— 執行時間和執行頻率

  • 檢查詳細程度 vs 執行時間和執行頻率 (只能和自己)
  • 檢查詳細程度 vs 經常頻繁報警(一個接口怎樣算是正常的,返回非200+功能正常)

3)數據報表

數據的正確性:統計口徑(業務方的口徑+多個接口/模塊口徑的差異后導致業務方不一致)

2、接口自動化之痛點

痛點當然源自難點:

  • 當接口本身實現頻繁變動、對接口的檢查太過詳細、開發修復緩慢時,那么不停的報警將會來了
  • 不合理的自動化設計及維護方案,造成自動化成本大于自動化收益時,接口自動化就變得無足輕重了

實際項目中的體會是:為了自動化而自動化。特別測試場景過于復雜時,當自動化實現成本遠大于手工測試成本時,就沒有必要非去自動化測試了

相對于UI自動化而言,接口自動化具有更大的價值

為了優化轉化路徑或者提升用戶體驗,APP/web界面的按鈕控件和布局幾乎每個版本都會發生一次變化,導致自動化的代碼頻繁變更,沒有起到減少工作量的效果

而接口一旦研發完成,后期重構/大幅度修改的頻率則比較低.因而做接口自動化性價比還是很高的,對于迭代版本舊有功能的回歸,beta測試,線上回歸都能起到事半功倍的作用。

同時,在這我為大家準備了一份軟件測試視頻教程(含面試、接口、自動化、性能測試等),就在下方,需要的可以直接去觀看。

【2025最新版】字節大牛講的最全最細的自動化測試全套教程!永久白嫖,拿走不謝,全程干貨無廢話!逼自己15天內學完,從軟件測試基礎到項目實戰一套全通關!

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

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

相關文章

數據分析和數據挖掘的工作內容

基本的數據分析工作通常包含以下幾個方面的內容: 確定目標(輸入):理解業務,確定指標口徑。獲取數據:數據倉庫(SQL提數)、電子表格、三方接口、網絡爬蟲、開放數據集等。清洗數據&am…

基于Python+Vue開發的反詐視頻宣傳管理系統源代碼

項目簡介 該項目是基于PythonVue開發的反詐視頻宣傳管理系統(前后端分離),這是一項為大學生課程設計作業而開發的項目。該系統旨在幫助大學生學習并掌握Python編程技能,同時鍛煉他們的項目設計與開發能力。通過學習基于Python的反…

StarRocks FE leader節點CPU使用率周期性的忽高忽低問題分析

背景 本文基于 StarRocks 3.3.5 最近在做一些 StarRocks 相關的指標監控的時候,看到了FE master的CPU使用率相對其他FE節點是比較高的,且 呈現周期性的變化(周期為8分鐘), 于此同時FE master節點的GC頻率相對于其他節…

第37章 合作之路與占坑成功

在春寒料峭的時節,那絲絲寒意宛如一縷縷若有若無的輕煙,在空氣中悄然彌漫。銳創所的會議室,宛如一個被歲月塵封的神秘空間,暖黃色的燈光暈染開來,像是為整個房間披上了一層朦朧的薄紗,陳舊卻又帶著幾分溫馨…

Webpack打包優化

在使用 Webpack 打包項目時,隨著項目規模的擴大,構建時間和打包產物的體積可能會逐漸增加。為了提高構建性能和減小打包產物的體積,可以采取以下幾種 Webpack 打包優化 的方法。 1. 使用 mode 配置 Webpack 通過 mode 配置來指定構建模式。…

計算機專業知識【深入理解IP網段:192.168.1.1/24 與 192.168.1.0/24】

在網絡世界里,IP地址和網段是非常基礎卻又至關重要的概念。很多朋友在看到類似 192.168.1.1/24 和 192.168.1.0/24 這樣的表述時,可能會感到困惑。今天,我們就來詳細剖析一下它們的含義以及兩者之間的關系。 一、IP地址與子網掩碼基礎 在深…

python的if判斷和循環語句(while循環和for循環)

1.if判斷 1.1if判斷的基本格式 if 判斷條件: 滿足條件做的事 score input("請輸入成績:") if score 100:print("你真棒") if score 60:print("還要加油") 使用input輸入默認類型為字符串類型 1.2運算符 1.2…

洛谷P9240 [藍橋杯 2023 省 B] 冶煉金屬

題目描述 小藍有一個神奇的爐子用于將普通金屬 O 冶煉成為一種特殊金屬 X。這個爐子有一個稱作轉換率的屬性 V,V 是一個正整數,這意味著消耗 V 個普通金屬 O 恰好可以冶煉出一個特殊金屬 X,當普通金屬 O 的數目不足 V 時,無法繼續…

Rpc導讀

手寫Rpc框架 - 導讀 git倉庫-all-rpc GTIEE:https://gitee.com/quercus-sp204/all-rpc 【參考源碼 yrpc】 1. Rpc概念 RPC 即遠程過程調用(Remote Procedure Call) ,就是通過網絡從遠程計算機程序上請求服務。 本地調用抽象&…

網絡安全:防范NetBIOS漏洞的攻擊

稍微懂點電腦知識的朋友都知道,NetBIOS 是計算機局域網領域流行的一種傳輸方式,但你是否還知道,對于連接互聯網的機器來講,NetBIOS是一大隱患。 漏洞描述 NetBIOS(Network Basic Input Output System,網絡基本輸入輸…

VIE(可變利益實體)架構通俗解析 —— 以阿里巴巴為例(中英雙語)

VIE(可變利益實體)架構通俗解析 —— 以阿里巴巴為例 什么是 VIE 架構? VIE(Variable Interest Entity,可變利益實體)是一種特殊的法律結構,主要用于中國企業在海外上市,特別是受中…

使用代碼與 AnythingLLM 交互的基本方法和示例

AnythingLLM 是一個基于大語言模型(LLM)的工具,主要用于構建和管理個人或企業知識庫。雖然它主要提供圖形化界面(GUI)進行操作,但也可以通過代碼進行一些高級配置和集成。以下是使用代碼與 AnythingLLM 交互…

用DeepSeek零基礎預測《哪吒之魔童鬧海》票房——從數據爬取到模型實戰

系列文章目錄 1.元件基礎 2.電路設計 3.PCB設計 4.元件焊接 5.板子調試 6.程序設計 7.算法學習 8.編寫exe 9.檢測標準 10.項目舉例 11.職業規劃 文章目錄 **一、為什么要預測票房?****二、準備工作****三、實戰步驟詳解****Step 1:數據爬取與清洗&am…

如何將MySQL數據庫遷移至阿里云

將 MySQL 數據庫遷移至阿里云可以通過幾種不同的方法,具體選擇哪種方式取決于你的數據庫大小、數據復雜性以及對遷移速度的需求。阿里云提供了多種遷移工具和服務,本文將為你介紹幾種常見的方法。 方法一:使用 阿里云數據庫遷移服務 (DTS) 阿…

Ubuntu22.04 - gflags的安裝和使用

目錄 gflags 介紹gflags 安裝gflags 使用 gflags 介紹 gflags 是Google 開發的一個開源庫,用于 C應用程序中命令行參數的聲明、定義和解析。gflags 庫提供了一種簡單的方式來添加、解析和文檔化命令行標志(flags),使得程序可以根據不同的運行時配置進行調整。 它具…

Git LFS介紹(Large File Storage)大文件擴展,將大文件存儲在外部存儲,倉庫中只記錄文件的元數據(大文件的指針,類似一個小的占位符文件)

文章目錄 LFS的功能?如何使用LFS?將大文件存儲在外部系統是什么意思?具體是如何運作的?為什么要這樣做? 對開發者的影響?1. **性能和效率**2. **協作體驗**3. **版本管理差異**4. **額外的工具和配置** LFS…

Fastgpt學習(5)- FastGPT 私有化部署問題解決

1.? 問題描述: Windows系統,本地私有化部署,postgresql數據庫鏡像日志持續報錯" data directory “/var/lib/postgresql/data” has invalid permissions ",“ DETAIL: Permissions should be urwx (0700) or urwx,gr…

2026考研趨勢深度解析:政策變化+高效工具指南

2026考研深度解析:趨勢洞察高效工具指南,助你科學備戰上岸 從政策變化到工具實戰,這份千字攻略解決99%考生的核心焦慮 【熱點引入:考研賽道進入“高難度模式”】 2025年全國碩士研究生報名人數突破520萬,報錄比預計擴…

娛樂使用,可以生成轉賬、圖片、聊天等對話內容

軟件介紹 今天要給大家介紹一款由吾愛大佬 lifeixue 開發的趣味軟件。它的玩法超豐富,能夠生成各式各樣的角色,支持文字聊天、發紅包、轉賬、發語音以及分享圖片等多種互動形式,不過在分享前得著重提醒,此軟件僅供娛樂&#xff0…

DeepSeek動畫視頻全攻略:從架構到本地部署

DeepSeek 本身并不直接生成動畫視頻,而是通過與一系列先進的 AI 工具和傳統軟件協作,完成動畫視頻的制作任務。這一獨特的架構模式,使得 DeepSeek 在動畫視頻創作領域發揮著不可或缺的輔助作用。其核心流程主要包括腳本生成、畫面設計、視頻合成與后期處理這幾個關鍵環節。 …