接口自動化測試很難掌握嗎?

一. 什么是接口測試

接口測試是一種軟件測試方法,用于驗證不同軟件組件之間的通信接口是否按預期工作。在接口測試中,測試人員會發送請求并檢查接收到的響應,以確保接口在不同場景下都能正常工作。

就工具而言,常見的測試工具有Jmeter、Postman等。但這類工具往往更是做接口調試,對于做自動化以及測試集成卻不夠理想,因此便有了接口測試腳本,Java、Python、GO等語言都能支持。

然而語言總歸是要學習成本的,因此陸續開始有了各類測試平臺。為什么做測試平臺?即將接口測試工具與接口測試腳本結合起來,實現像測試工具做接口調試一樣簡單,同時也能更好的支撐場景化測試、持續集成測試。

二. 接口測試的要素有哪些

接口測試其實無外乎就是將請求發送出去并驗證響應結果。我們常做的接口測試主要是HTTP協議,針對這類接口,其請求數據,主要構成是:請求方法,請求地址,請求頭,請求參數。

請求方法即是常見的GET/POST/PUT/DELETE等,根據接口文檔來維護即可,只是定義了不同的請求方式而已。

至于請求地址,在做自動化測試時,又可以拆分為請求域名和請求路由,一般來說不同的環境域名會產生變化,但是路由一般是固定的,因為我們在做測試集成時為保證一個接口請求能在多個環境下執行,會選擇將域名提出來放在環境中管理,而每個接口對應的域名通常可以根據路由的值來匹配即可。當然在微服務架構中,我們也可以給每個接口打上微服務的標識,而同一個微服務的接口無論在任何環境下其域名應當是一致的。因此除了通過路由匹配,我們也可以通過微服務標識來匹配,我稱之為域名標識。

?此外,接口測試最重要的一點就是登錄驗證,通常會有四種方式。RestAPI最常見的是Session/Cookies和Token,OpenAPI一般是OAuth,最古老的鑒權則是HTTP Basic Authorization。對于Cookies和Token,一般我們都是通過放在請求頭中發送出去,Session一般都是作為狀態管理員來保存,通常編程語言的HTTP包會自帶該方法,我們需要做的無外乎就是在登錄后保存這個Session即可。至于OAuth,通常是需要加密成一個簽名來做校驗,我會在后面單獨開一篇文章來介紹具體的使用。

對于請求數據,一般有三種方式,分別是:查詢參數、路由參數以及請求體。查詢參數即將參數轉變為name=value的形式放在請求地址后面,以?號分隔多個參數中間加&符。路由參數往往是將參數值放在路由中,因此路由的值往往會是動態的,且路由數量也是不定的。至于請求體則比較好理解,一般常用的是表單和json串。當然古老的接口也有文本格式/XML格式等,另外就是文件上傳的接口會是二進制流。

最最重要的一點就是,無論什么業務,接口測試一定要有斷言,沒有斷言的接口測試用例就是在耍流氓。因此接口還有一個重大要素就是編寫斷言,斷言的方式有很多,可以斷言接口的響應數據,對于數據增刪改的接口同樣也可以去斷言數據庫的內容。

三. 如何用開源工具平臺來做接口自動化測試

前面了解了接口自動化測試基本原理之后,我們用一款開源測試平臺來快速的實現一個簡單的接口自動化測試用例編寫,接下來我們合并圖文來介紹用法:

第一步:創建環境,如上所述,環境是接口測試用例為了能在多環境復用下不可缺少的一部分。環境創建完成后,還需要在環境下創建域名,域名匹配規則在上文介紹過,可以通過路由匹配和域名標識匹配。

新增環境

第二步:創建接口,我們在做自動化測試時,接口需要單獨維護和管理,從而做到當接口發生變化時,只需要維護接口管理處的接口,所有引用該接口的用例都能隨之變化,提升維護效率。在創建接口前,我們可以先創建接口所屬的業務模塊,同樣的也方便后期快速找到接口。

而接口需要維護的數據也很簡單,即前面所述的四大請求數據即可完成最基礎的接口信息維護。當然為了后期記憶,我們最好還是給接口起個名字加個描述。同時,如果希望使用域名標識,則給接口綁定上一個微服務的標識即可。

新增接口

第三步:做好了接口維護,那就可以開始寫接口用例了。接口用例其實不過是在接口上面再套一層殼罷了,之所以套上這層殼,主要目的還是為了做業務邏輯的驗證,可能一個業務邏輯的驗證需要執行多個接口,將多個接口加入到一個用例中,即可完成。如果多個接口之間數據有依賴關系,也可以通過一些關聯參數的引用實現,這在后面的文章我會單獨介紹。

新增用例

第四步:接口加進來后,直接調試。選擇之前維護的環境執行即可。調試成功后,維護一下用例的基本信息,如給用例起個名字,寫一段描述,點擊保存,即完成一條接口自動化用例的編寫。

調試用例

四. 總結

通過上述的幾個步驟,不難看出,在使用平臺后,完全可以拋棄代碼編寫接口測試腳本那一套方案,而且便捷程度不屬于postman等工具。最大的好處是,用例保存服務端,我們可以任意編排用例去執行,從而驗證不同的需求。只要用例數據設計得當,即便是換產品經理來驗證,選好用例直接執行也能完成自動化測試。

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

?

這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!有需要的小伙伴可以點擊下方小卡片領取??

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

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

相關文章

AI+招聘:ATS招聘系統讓HR簡歷篩選精準度達95%!

一提起招聘過程,許多HR就會想到那堆疊如山的簡歷、讓人眼花繚亂的招聘網站以及瑣碎繁復的手動數據錄入。據統計,平均每位HR每年要處理數百甚至上千份簡歷,耗費大量精力在初級篩選和跟進上。   市場調查機構近日發布的一份報告顯示&#xff…

【深度學習】YOLO源碼中的mAP計算代碼的理解筆記(大部分代碼逐行+基礎解釋)

提示:本篇博客是在閱讀了YOLO源碼中的mAP計算方法的代碼后加上官方解釋以及自己的debug調試理解每一步是怎么操作的。由于是大部分代碼進行了逐行解釋,所以篇幅過長。 文章目錄 前言一、輸入格式處理1.1 轉換公式二、init:初始化2.1 iouv2.2 …

AND Sorting題解

AND Sorting題解 AND Sorting 詳細 題解()題目原意解題思路這是代碼??ZZZB. AND Sorting(我也是有底線的)AND Sorting 詳細 題解() 洛谷 原題,CF 原題 洛谷 AC記錄,CF AC記錄 題目原意 給你一個由從 0 0 0 到 n ? 1 n-1 n?1 的整數組成的排列 p p p (每個整數都…

如何在沒有頭文件的情況下調用動態庫的類的私有成員函數

如何在沒有頭文件的情況下調用動態庫的類成員函數 編寫一個不存在虛函數的類測試代碼 _ZN6CClass4showEv如何獲取調用 源代碼 https://github.com/TonyBeen/study/tree/master/dlopen 編寫一個不存在虛函數的類 // class.h #pragma onceclass CClass { public:CClass();~CCla…

【Leetcode每日一題】 綜合練習 - 電話號碼的字母組合(難度??)(75)

1. 題目解析 題目鏈接:電話號碼的字母組合 這個問題的理解其實相當簡單,只需看一下示例,基本就能明白其含義了。 2.算法原理 算法設計思路 在解決這類問題時,我們需要認識到每個位置上的數字對應的字符集合是相互獨立的&#…

什么是翹尾因素

在有關CPI 的分析文章和新聞稿件中,經常會出現“翹尾因素”或“翹尾影響” 等詞匯,這是分析同比價格指數變動幅度時所特有的概念。那么什么是“翹尾因素” 或“翹尾影響”呢? 一、什么是翹尾因素 “翹尾因素”是指上年價格上漲(…

使用scrollIntoView滾動元素到可視區域

1. 實現效果 點擊頂部標簽欄,讓對應的內容出現在可視區域: 2. scrollIntoView () scrollIntoView 是一個內置的 JavaScript 方法,用于將元素滾動到視口可見的位置。它通常用于用戶界面中,以便用戶能輕松看到特定的元素。此方…

perf 中的 cpu-cycles event 介紹

perf 中的 cpu-cycles event 介紹 cycles簡介 cycles事件記錄處理器核心執行的時鐘周期數。每個時鐘周期代表處理器內部時鐘振蕩器的一個周期。這個事件通常用于衡量處理器的執行速度,因為它直接反映了指令執行所需的時間。一個較高的cycles計數可能意味著代碼執行…

JavaScript中指定大小分割數組的一種實現

今天分享一個使用JavaScript分割數組為多個自數組的方法實現。我使用它的場景如下: 給定一個數組 arr 和指定大小 fixed: const arr [{id: 1,name: name1},{id: 2,name: name2},{id: 3,name: name3},{id: 4,name: name4},{id: 5,name: name5},{id: 6,…

2024版本idea集成SpringBoot + Ai 手寫一個chatgpt 【推薦】

題目:SpringBoot OpenAi 在這里獲取key和url:獲取免費key base-url為這兩個: 話不多說直接來! 一、簡介 Spring AI 是 AI 工程的應用框架。其目標是將 Spring 生態系統設計原則(如可移植性和模塊化設計&#xff…

暗區突圍pc資格 暗區突圍pc端測試資格獲取

《暗區突圍》的誕生,仿佛在游戲界投下了一枚深水炸彈,它不僅僅是射擊游戲的新標桿,更是對玩家策略思維、生存直覺與團隊協作能力的一次全面考驗。在這個精心構建的虛擬戰場中,每一次踏入暗區,都是對未知的探索&#xf…

【練習4】

1.兩數之和 暴力&#xff1a; class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {int n nums.size();vector<int> res(2, -1); // 初始化結果為-1for (int i 0; i < n; i) {int temp nums[i];for (int j i 1; j <…

Python 技巧:滿意的逗號放置

當你在 Python 中添加或刪除列表、字典或集合中的項目時&#xff0c;記住總是將所有行結尾加一個逗號。這是一個非常有用的技巧&#xff0c;可以幫助你避免一些常見的問題。 不確定我所說的什么&#xff1f;讓我給你一個快速示例。假設你在代碼中有一個名單列表&#xff1a; …

銀行家算法簡易實現

這里寫目錄標題 實驗要求內容代碼main.cppmyfunc.hmyfunc.cpp 運行結果與分析 實驗要求 程序可以針對不同進程的請求進行判斷&#xff0c;并決定是否滿足其需求。算法程序需要設計合理的數據結構&#xff0c;對資源情況、進程相關數據進行存儲。 內容 隨機生成數據, 并校驗數據…

做視頻號小店,怎么找達人合作?這里有詳細講解

大家好&#xff0c;我是電商笨笨熊 做視頻號小店是沒有自然流量的&#xff0c;這點剛入駐的新玩家還不清楚&#xff1b; 因此很多老電商玩家們還想著繼續拿其他平臺動銷自然流的玩法去做視頻號&#xff1b; 只能說這種方式在視頻號是完全行不通的&#xff0c;當下想要推廣售…

設計模式2——原則篇:依賴倒轉原則、單一職責原則、合成|聚合復用原則、開放-封閉原則、迪米特法則、里氏代換原則

設計模式2——設計原則篇 目錄 一、依賴倒轉原則 二、單一職責原則&#xff08;SRP&#xff09; 三、合成|聚合復用原則&#xff08;CARP&#xff09; 四、開放-封閉原則 五、迪米特法則&#xff08;LoD&#xff09; 六、里氏代換原則 七、接口隔離原則 八、總結 一、依賴…

Python-VBA函數之旅-setattr函數

目錄 一、setattr函數的常見應用場景 二、setattr函數使用注意事項 三、如何用好setattr函數&#xff1f; 1、setattr函數&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推薦閱讀&#xff1a; 個人主頁&#xff1a; https://blog.csdn.net/ygb_1024?…

宏集Panorama SCADA軟件獲BACnet BTL認證

Panorama 獲得BACnet BTL認證 建筑物的組件&#xff08;空調系統、照明傳感器等&#xff09;能否使用共同通訊協議&#xff1f;這正是標準化 BACnet協議&#xff08;Building Automation and Control Networks&#xff09;所提供的功能。該協議旨在實現建筑物中各種設備和系統…

【TS】入門

創建項目 vscode自動編譯ts 生成配置文件 tsc --init 然后發現終端也改變了&#xff1a;

SOCKET編程(3):相關結構體與函數

相關結構體與函數 sockaddr、sockaddr_in結構體 sockaddr和sockaddr_in詳解 struct sockaddr共16字節&#xff0c;協議族(family)占2字節&#xff0c;IP地址和端口號在sa_data字符數組中 /* Structure describing a generic socket address. */ struct sockaddr {__SOCKADDR…