構建高效的接口自動化測試框架思路

在選擇接口測試自動化框架時,需要根據團隊的技術棧和項目需求來綜合考慮。對于測試團隊來說,使用Python相關的測試框架更為便捷。無論選擇哪種框架,重要的是確保?框架功能完備,易于維護和擴展,提高測試效率和準確性。今天小編介紹一個基于Python的接口自動化測試框架,結合了Python的Unittest框架、Requests庫以及數據驅動思想,幫助您更好地實現接口測試。

1. 接口自動化測試項目框架簡介

搭建接口自動化測試框架的技術棧如下:

語言:Python,簡潔高效,上手容易,無壓力;人生苦短,我用 python;

測試框架:Unittest,封裝自定義斷言方法進行驗證,如:eq\lt\lte\gt\gte\neq\str_eq等等;

接口調用:Requests庫,提供不同的HTTP請求方法,支持session和cookies,支持失敗請求重發等;

數據驅動:數據驅動測試(DDT),以用例數據來生成測試用例;

數據管理:Openpyxl,用于進行Excel數據的讀寫,同時支持CSV、JSON、YAML、TXT等數據格式;

依賴管理:封裝各類強大的工具庫,如正則、jsonpath、字典取值的方式獲取請求數據、響應數據;

變量管理:封裝全局變量,臨時變量,環境變量,動態管理各類變量,動條調用函數,前后置腳本等;

動態腳本:封裝PM對象,讓動條變量除了可以使用{{args}} 或{{func(*args,**kwargs)}}的方法使用變量外,還要能夠類似postman一樣靈活編寫python動態代碼;

數據庫交互:PyMySQL,根據不同數據庫選擇相應的第三方模塊來完成交互;

數據格式轉換:Eval,JSON,用于將數據在不同格式之間進行轉換;

日志處理:Logging,統一日志輸出格式,記錄渠道、級別和執行結果,便于問題定位;

持續集成:Jenkins,通過配置定時執行測試用例、查看測試通過率,解決重復發版帶來的重復工作,并使用插件unittestreport生成HTML報告和發送郵件;

2. 接口測試流程

接口測試步驟可以概括如下:

獲取接口文檔:首先要與開發團隊協作,獲取接口文檔,了解每個接口的功能和參數要求。

設計接口測試用例:根據接口文檔,設計接口測試用例,覆蓋正常場景、異常場景以及邊界值等情況。

編寫接口測試代碼:使用Python Unittest框架,結合Requests庫發起接口調用,并在測試用例中進行斷言驗證。

執行接口測試用例:執行編寫好的接口測試用例,對接口進行驗證。

發現問題與跟蹤:如果發現接口問題,及時記錄并提交至缺陷管理平臺,與開發團隊協作解決問題。

性能測試:對接口的并發情況和響應時間進行測試,確保接口性能滿足要求。

3. 接口測試用例設計

接口測試用例設計要從以下幾個方面入手:

正常場景驗證:保證接口按照需求返回正確結果,根據接口文檔的參數要求傳入合適的數據,驗證接口返回結果是否符合預期。

參數組合驗證:對于接口有多個參數的情況,驗證不同參數組合下接口的行為是否正確,包括必填和可選參數的組合。

異常驗證:測試接口對異常情況的處理,例如輸入異常值、多輸入、少輸入參數等,確保接口能正確處理異常情況并返回合理結果。

安全性驗證:對于涉及安全的接口,例如登錄接口,驗證用戶名和密碼的加密是否安全可靠。

性能測試:測試接口的并發情況和響應時間,確保接口能在高負載下穩定運行。

4. 接口測試執行中的數據庫校驗

為了確保接口返回的數據與數據庫中的數據一致或者業務流程腳本編寫,有時候需要使用數據庫:

數據庫預置數據:在測試前,可以預先在數據庫中插入需要的測試數據,然后接口測試用例執行時,校驗接口返回的數據與預置的數據是否一致。

接口調用比對:接口測試用例執行時,通過調用數據庫查詢的方式,獲取接口需要的數據,然后與接口返回的數據進行比對,確保一致性。

數據清理:在接口測試用例執行完畢后,進行數據清理,將測試過程中產生的垃圾數據從數據庫中刪除,以保持數據庫的干凈和整潔。

流程數據預埋:執行某些接口前,先插入固定數據,流程開始后讀取固定數據,實現業務流的運轉,最好再刪除數據。

5. 接口測試質量評估標準

接口測試的質量評估八股文如下:

業務功能覆蓋是否完整:確認接口測試用例是否覆蓋了所有的業務功能點。

業務規則覆蓋是否完整:檢查接口測試用例是否涵蓋了所有的業務規則和邊界情況。

參數驗證是否達到要求:驗證接口對不同參數的處理是否符合預期,包括參數邊界和業務規則。

接口異常場景覆蓋是否完整:測試接口在異常情況下的處理是否正確,確保系統在異常情況下能正確穩定運行。

接口覆蓋率是否達到要求:確認接口測試用例是否覆蓋了所有接口,包括不同的場景和輸入組合。

代碼覆蓋率是否達到要求:檢查接口測試代碼的覆蓋率,確保所有關鍵邏輯都得到驗證。

性能指標是否滿足要求:對接口的性能進行測試,確保在高負載下接口仍能穩定運行。

安全指標是否滿足要求:驗證接口的安全性,確保數據傳輸和存儲的安全性。

6. 接口測試中依賴第三方數據的處理

如果依賴第三方數據的接口有時候難以直接調用接口處理時,可如下處理:

使用Mock工具:利用Mock工具(如:JSON Server、Easy Mock)模擬第三方數據接口的返回數據,降低對第三方數據的依賴性,加快開發和測試速度。

編寫虛擬接口:在接口測試用例中,編寫虛擬接口,直接返回模擬的第三方數據,以達到測試的目的。

編寫代理接口:如果無法模擬第三方數據,可以編寫代理接口,將測試請求轉發到真實的第三方數據接口,并在接口測試用例中校驗代理返回的數據是否正確。

直接往數據庫中插入數據或者更改某條數據的信息,達到模擬第三方接口正常的情況

如果有一些回調接口,直接利用第三方回調的參數格式修改某些變量,自己手動觸發回調修改數據,提高穩定。

7. 接口測試項目的數據管理

在接口測試項目中,不同類型的數據需要靈活地進行管理和存儲:

Excel數據管理:對于較小規模的數據或者靜態數據,可以使用Excel來管理測試數據?(1萬條數據以內比較推薦)。Python中的Openpyxl庫可以很方便地讀取和寫入Excel數據,同時支持其他數據格式的轉換。

yaml文件:對于非常小規模的數據或者配置文件數據,可以使用yam來管理測試數據?(數據量200以內可以考慮)。?Python中yaml庫讀取和寫入yarm文件還是很方便的。同時這個文件可以注釋。

數據庫交互:對于大規模的數據或者需要頻繁變更的數據,可以使用數據庫來存儲測試數據。Python中的PyMySQL庫可以實現與數據庫的交互,方便數據的讀取和寫入。

數據驅動思想:數據驅動測試(DDT)是一種測試方法,通過讀取測試數據源來動態生成和執行測試用例。這種方式可以使得測試數據和測試用例分離,降低代碼的冗余。

數據緩存:在測試過程中,為了提高測試效率,可以將已經處理過的數據進行緩存,下次測試時直接使用緩存數據,避免重復請求或計算。

配置文件:一些接口測試中的配置信息,例如接口URL、賬號密碼等,可以單獨放在配置文件中,便于管理和修改。

8. 解決接口文檔缺失問題

遇到接口文檔缺失的情況,解決思路如下:

與開發溝通:與開發人員直接溝通,了解接口的參數和預期結果,根據開發人員提供的信息編寫測試用例。

抓包分析:通過抓包工具(如Fiddler、Wireshark)來分析接口的請求和響應,從中提取接口的參數和數據,以及接口的行為和返回結果。

數據庫查詢:對于接口數據存儲在數據庫中的情況,可以通過查詢數據庫來獲取接口的數據,并根據數據設計測試用例。

源碼接口分析:對于代碼能力強的童鞋,可以直接拉去開發的項目代碼去分析有哪些接口及參數去設計測試用例(有這個能力還寫個毛接口測試😄)。

日志分析:通過日志查詢(如elk,tail)等等獲取接口的請求和響應,從而設計測試用例。

9. 自動化測試框架的好處

搭建一個自動化測試框架對于接口測試項目有很多好處:

提高測試效率:自動化測試可以快速執行大量測試用例,提高測試效率和執行速度。

減少重復工作:通過自動化測試,可以減少人工測試中的重復性工作,提高測試人員的生產力。

提高測試準確性:自動化測試可以避免人為因素對測試結果的影響,提高測試的準確性。

持續集成和持續交付:通過自動化測試框架,可以實現持續集成和持續交付,加快軟件的開發和交付速度。

靈活性和可擴展性:自動化測試框架可以根據項目的需要進行定制和擴展,適應不同項目的需求。

當然,很多童鞋會覺得市面那么多開源工具及框架,直接拿來主義使用就好,為啥還要自己整呢?嗯確實沒錯,但是在座的各位還是得考慮一下換工作(被迫換工作)時,坐在你對面的面試官要怎么應付吧…

10. 解決接口產生的垃圾數據

小編解決接口產生的垃圾數據常用解決思路如下:

數據庫回滾:在測試用例執行完成后,使用數據庫事務回滾將數據還原到測試前的狀態,確保數據不會對接口環境產生影響。

數據清理腳本:編寫數據清理腳本,定期執行數據清理操作,刪除過期或不再需要的測試數據,保持數據庫的整潔。

定時任務:設置定時任務,定期執行數據清理操作,避免測試數據過多導致數據庫性能下降。

自動化數據清理:在自動化測試框架中集成數據清理功能,確保每次測試執行后都能自動清理產生的垃圾數據。

接口閉環調用:對于有新增增刪改的接口,執行增改接口后,標記數據id等關鍵信息,在teardown 部分執行批處理調用刪除接口。

11. 針對第三方接口常見的測試思路

第三方接口這玩意不文檔,面試或者工作中遇到的還是比較多。小編挖箱底給大家一些思路:

使用Mock數據:可以使用Mock工具來模擬第三方接口的返回數據,以便于測試獨立進行,不受第三方數據影響。

數據備份與還原:在接口測試之前,先對第三方數據進行備份,測試完成后再進行數據還原,確保測試對第三方數據沒有實質性影響。

數據協調:與第三方數據提供方進行協調,請求提供穩定的測試數據,或者在測試時提供臨時的測試環境,避免影響到正式環境數據。

容錯設計:在測試時,要考慮到第三方數據不穩定的情況,設計容錯機制,使得接口在部分數據缺失或異常時也能正常運行,不影響整體測試流程。

日志監控:監控第三方數據接口的日志,及時發現異常情況,與第三方數據提供方溝通解決。

12. 如果控制接口在整個測試流程中只調用一次

如果有其他接口需要先獲取接口信息(例如登錄接口),而且希望登錄接口只調用一次,并在后續其他接口中使用該登錄憑證:

使用Fixture(Pytest)或Setup(Python unittest):在測試框架中,可以使用Fixture或Setup功能,在執行測試用例前,先執行登錄接口,并將登錄憑證保存到緩存中。后續其他接口執行前,先判斷登錄憑證是否存在,如果存在,則直接使用,不再重復調用登錄接口。

登錄接口與其他接口合并:將登錄接口與其他接口合并成一個測試用例,保證登錄接口在其他接口調用之前執行,且只執行一次。這樣可以確保登錄憑證在后續其他接口中有效。

使用Session保持登錄狀態:有些接口測試工具(如Requests-Test)支持Session功能,可以通過Session保持登錄狀態。在第一次調用登錄接口后,Session會自動保存登錄憑證,在后續其他接口中直接使用Session即可。

封裝登錄接口:將登錄接口封裝成一個單獨的函數或類,該函數或類內部維護登錄狀態,確保登錄只調用一次。其他接口調用前,先調用登錄函數或類的方法,獲取登錄憑證。

使用全局變量:在程序中使用全局變量來保存登錄憑證,在其他接口中讀取該全局變量獲取登錄憑證,避免重復調用登錄接口。

最后:?為了回饋鐵桿粉絲們,我給大家整理了完整的軟件測試視頻學習教程,朋友們 如果需要可以自行免費領取?【保證100%免費】
在這里插 入圖片描述

軟件測試面試文檔

我們學習必然是為了找到高薪的工作,下面這些面試題是來自阿里、騰訊、字節等一線互聯網大廠最新的面試資料,并且有字節大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。

在這里插入圖片描述
在這里插入圖片描述

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

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

相關文章

IntelliJ IDEA 的常用快捷鍵

IntelliJ IDEA 的常用快捷鍵非常多,這些快捷鍵可以幫助你更高效地編寫代碼。以下是一些常用的快捷鍵總結: 基礎操作 CtrlN:查找類CtrlShiftN:查找文件CtrlAltL:格式化代碼AltInsert:生成代碼(…

信息安全技術第1章——信息網絡安全基本概念

課程介紹 網絡信息安全是醫學信息工程專業的限選課。主要圍繞計算機網絡安全所涉及的主要問題進行講解,內容包括:對稱密碼與公鑰密碼的基本原理、相關算法及應用。電子郵件的安全,IP安全,Web安全,惡意軟件及防火墻等內…

UI自動化-(web端窗口截圖文件上傳-實操入門)

1、窗口截圖 1. UI自動化中,為什么需要進行窗口截圖? 調試和故障排除:截圖可以直觀地查看界面的狀態,快速識別和解決問題。當自動化過程中出現錯誤或異常時,通過查看截圖可以確定是否是界面元素的問題,例…

C++ opencv 學習

文章目錄 1、創建窗口2、讀取圖片3、視頻采集4、Mat的使用5、異或操作6、通道分離,通道合并7、色彩空間轉換8、最大值、最小值9、繪制圖像10、多邊形繪制11、隨機數12、鼠標實時繪制矩形13、歸一化14、resize操作15、旋轉翻轉16、視頻操作17、模糊操作18、高斯模糊操…

SpringBoot整合MyBatis實現增刪改查

?作者簡介:大家好,我是Leo,熱愛Java后端開發者,一個想要與大家共同進步的男人???? ??個人主頁:Leo的博客 ??當前專欄: 循序漸進學SpringBoot ?特色專欄: MySQL學習 ??本文內容: SpringBoot整合MyBatis實現增刪改查 ??個人知識庫: Leo知識庫,歡迎大家訪…

mysql之 case when

1 簡單 case 函數,IF函數 格式: CASE input_expression WHEN when_expression THENresult_expression [...n ] [ ELSEelse_result_expression ENDIF(條件,True結果,False結果)2 條件表達式 可嵌套多層,類似于 if … else if … else … end…

Java進階-IO(1)

進入java IO部分的學習,首先學習IO基礎,內容如下。需要了解流的概念、分類還有其他一些如集合與文件的轉換,字符編碼問題等,這次先學到字節流的讀寫數據,剩余下次學完。 一、IO基礎 1、背景 1.1 數據存儲問題 變量…

代碼隨想錄day11(1)字符串:反轉字符串中的單詞 (leetcode151)

題目要求:給定一個字符串,將其中單詞順序反轉,且每個單詞之間有且僅有一個空格。 思路:因為本題沒有限制空間復雜度,所以首先想到的是用split直接分割單詞,然后將單詞倒敘相加。 但如果想讓空間復雜度為O…

芯來科技發布最新NI系列內核,NI900矢量寬度可達512/1024位

參考:芯來科技發布最新NI系列內核,NI900矢量寬度可達512/1024位 (qq.com) 本土RISC-V CPU IP領軍企業——芯來科技正式發布首款針對人工智能應用的專用處理器產品線Nuclei Intelligence(NI)系列,以及NI系列的第一款AI專用RISC-V處理器CPU IP…

反向迭代器

反向迭代器 以list為例,我們完全可以再添加一個__list_reverse_iterator結構體,只需要修改和–的邏輯 template <class T, class Ref, class Ptr> struct __list_reverse_iterator {...self& operator(){_node _node->_prev;return *this;}self operator(int){…

Android 14.0 Launcher3定制化之桌面分頁橫線改成圓點顯示功能實現

1.前言 在14.0的系統rom產品定制化開發中&#xff0c;在進行launcher3的定制化中&#xff0c;在雙層改為單層的開發中&#xff0c;在原生的分頁 是橫線&#xff0c;而為了美觀就采用了系統原來的另外一種分頁方式&#xff0c;就是圓點比較美觀&#xff0c;接下來就來分析下相關…

網絡爬蟲部分應掌握的重要知識點

目錄 一、預備知識1、Web基本工作原理2、網絡爬蟲的Robots協議 二、爬取網頁1、請求服務器并獲取網頁2、查看服務器端響應的狀態碼3、輸出網頁內容 三、使用BeautifulSoup定位網頁元素1、首先需要導入BeautifulSoup庫2、使用find/find_all函數查找所需的標簽元素 四、獲取元素的…

基于springboot+vue的健身房管理系統

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

●139.單詞拆分 ● 關于多重背包,你該了解這些! ●背包問題總結篇!

●139.單詞拆分 物品&#xff1a;wordDict里面的單詞&#xff1b;背包容量&#xff1a;s.size()。 1.dp[j]含義。dp[j]true表示字符串前j個可以拆分成字典中的單詞。dp[s.size()] 就是最后的結果&#xff0c;整個字符串能&#xff08;true&#xff09;不能&#xff08;false…

Docker 創建容器并指定時區

目錄 1. 通過環境變量設置時區&#xff08;推薦&#xff09;2. 掛載宿主機的時區文件到容器中3. 總結 要在 Docker 容器中指定時區&#xff0c;可以通過兩種方式來實現&#xff1a; 1. 通過環境變量設置時區&#xff08;推薦&#xff09; 在 Docker 運行時&#xff0c;可以通…

NumPy數據處理詳解的筆記1

NumPy數據處理詳解的筆記1 第1章NumPy基礎 NumPy是用于處理多維數組的數值運算庫&#xff0c;不僅可用于 機器學習&#xff0c;還可以用于圖像處理&#xff0c;語言處理等任務。 1.1 NumPy的基礎與安裝方法 1.1.1 NumPy入門 NumPy是Python中進行科學計算所必備的基礎軟件庫…

CentOS安裝Docker(黑馬學習筆記)

Docker 分為 CE 和 EE 兩大版本。CE 即社區版&#xff08;免費&#xff0c;支持周期 7 個月&#xff09;&#xff0c;EE 即企業版&#xff0c;強調安全&#xff0c;付費使用&#xff0c;支持周期 24 個月。 Docker CE 分為 stable test 和 nightly 三個更新頻道。 官方網站上…

文件底層的理解之緩沖區

目錄 一、緩沖區的初步認識 二、向文件中寫數據的具體過程 三、緩沖區刷新的時機 一、緩沖區的初步認識 緩沖區其實就是一塊內存區域&#xff0c;采用空間來換時間&#xff0c;可以提高使用者的效率。我們一直說的緩沖區其實是語言層面上的緩沖區&#xff0c;其實操作系統內部…

JVM 第一部分 JVM兩種解釋器 類加載過程和類加載器

JVM是跨平臺跨語言的虛擬機&#xff0c;不直接接觸硬件&#xff0c;位于操作系統的上一層 跟字節碼文件直接關聯&#xff0c;和語言沒有關系 一次編譯成字節碼文件&#xff0c;多次執行 虛擬機可以分成三部分&#xff1a;類加載器&#xff0c;運行時數據區&#xff0c;執行引…

TDengine 在 DISTRIBUTECH 分享輸配電數據管理實踐

2 月 27-29 日&#xff0c;2024 美國國際輸配電電網及公共事業展&#xff08;DISTRIBUTECH International 2024&#xff09;在美國-佛羅里達州-奧蘭多國家會展中心舉辦。作為全球領先的年度輸配電行業盛會&#xff0c;也是美洲地區首屈一指的專業展覽會&#xff0c;該展會的舉辦…