8年經驗之談!自動化測試框架該如何搭建?

前言

最近好多小伙伴都在說接口自動化測試,那么究竟什么是接口自動化測試呢?讓我們一起往下看就知道了,首先我們得先弄清楚下面這個問題。

為什么要做(自動化)接口測試?

1、由于現在各個系統的復雜度不斷上升,導致傳統的測試方法成本上升且測試效率大幅下降,而接口測試相對于UI測試更加穩定,且相對容易實現自動化持續集成,可以減少人工回歸測試的時間成本,縮短測試周期。

2、接口測試可以更早的介入到項目開發中,一般只要接口定義好了,就可以寫代碼了。而功能測試必須要等系統提供可測的界面后才能進行。

3、相對于UI測試(某些測試環境搞起來賊麻煩)來說,接口測試可以更簡單全面地覆蓋到底層的代碼邏輯,從而發現一些隱藏bug。

4、從安全層面來說,現在大部分系統前后端框架是分離的,只依賴前端進行限制已經不能滿足系統的安全要求,需要后端同步進行控制,所以測試也需要從接口層面進行驗證。

5.越來越多的團隊開始接收DevOps所倡導的高度協同,研發、測試、運維及交付一體化的思維,對測試效能提出了更高的要求。

接口測試原理

模擬客戶端向服務器發送請求,服務器接收后進行處理并向客戶端返回應答,客戶端再接收應答的過程。

測試范圍

  • 業務功能(包括正常、異常場景是否實現)
  • 業務規則(覆蓋度是否全面)
  • 參數驗證(邊界、業務規則是否達到要求)
  • 異常場景(重復提交、并發提交、事務中斷、多機環境、大數據量測試)
  • 性能測試(響應時間、吞吐量、并發數、資源要求)
  • 安全測試(權限驗證、SQL注入等)

一、自動化測試框架規劃思路

1.選擇語言

  • python
  • java

自己擅長哪個選哪個,推薦python

2.編程工具選型

  • pycharm
  • vscode

自己擅長哪個選哪個

3.測試框架選型

  • unittest ---python自帶的測試框架
  • pytest ---unittest升級版,推薦
  • httprunner
  • rf框架 ---關鍵字

4.報告可視化方案選型

  • htmltestrunner
  • beautifulreport
  • allure

5.持續集成方案

  • jenkins

6.倉庫服務器選型

  • github ---服務器在國外
  • gitlab
  • gitee

7.測試管理工具選型

  • 禪道
  • jira

接口自動化測試框架的搭建一般有兩種思路:

1.基于工具的

例如:Postman+Newman+Jenkins+Git/svn Jmeter+Ant+Jenkins+Git/svn

2.基于代碼的

例如:Python+Requests+Pytest+Allure

個人建議:如果是學習階段,選擇基于代碼的模式,通過自己一步一步的規劃項目、編寫代碼,可以更好的理解接口自動化的實現原理,之后再學習一些工具會更得心應手。

我這里選擇的是: Python+pycharm+pytest+allure+gitlab+jira

規劃好方案后就可以創建我們的項目代碼工程了(可以與編寫測試用例并行,需要提前約定好測試用例的格式,方便后續代碼設計)。

二、項目代碼工程構建思路

設計框架的原則:

  • 封裝基類方法

   對于一些較通用的方法,可以封裝,比如發送請求、增、刪、改、查。

  • 高內聚低耦合

   每個模塊盡可能獨立完成自己的功能,不依賴于模塊外部的代碼。

   模塊與模塊之間接口的復雜程度盡量低,比如在類內部盡可能減少方法之間的調用,否則一個方法的變動會影響調用它的另一個方法。

  • 腳本分離

   業務代碼、測試數據應該相互剝離、靈活調用。理念類似初識PO模式并在Selenium中簡單實踐中的PO設計模式。代碼中應該不出現具體的數據、配置。而是調用對應的數據文件。

三、一個比較完善的項目代碼工程結構:

- common  #包文件,公共模塊,存放一些通用方法- baseapi.py- class BaseApi()#基類- 方法1:發送請求- 方法2:增- 方法3:刪- 方法4:改- 方法5:查
- libs  #包文件,存放業務層代碼- login.py #登陸模塊- class Login(BaseApi) #繼承基類里的BaseApi- 方法1:發送登陸請求- 方法2:發送登出請求- logout.py #登出模塊- class Logout(BaseApi)
- configs  #包文件,存放配置- config.py- HOST='xxx'#用于切換測試環境- url='xxx'
- datas #文件夾,存放數據/測試用例- xxx.xls- xxx.yaml
- testCase #包文件,存放測試用例代碼,注意符合pytest命名規范- test_login.py- class Test_login- 方法1:test_login01- 方法2:test_login02- test_logout.py- - class Test_logout- 方法1:test_logout01- 方法2:test_logout02
- outFiles #文件夾,輸出文件- logs #存放log文件- report #存放報告- screenShot #存放截圖
- tools #包文件,工具類- handle_data.py - handle_excel.py- handle_path.py- handle_yaml.py
- docs #文件夾,存放說明類文檔- 代碼規范.doc- 需求文檔.doc

框架搭建:

四、后續代碼編寫思路:

框架寫好后的代碼編寫思路,大體上為

1.基類封裝,把一些常用的方法比如發送請求、增、刪、改、查放到我們的基類里。

2.編寫業務層的接口代碼

3.編寫測試用例代碼,過程中發現缺什么就去寫什么方法,思考這個方法應該放在具體業務內還是基類還是tools內,這個過程是對代碼不斷優化的過程。直到我們的用例代碼寫完。

  • 比如,寫測試用例代碼過程中需要讀取yaml文件,就在tools內加一個get_yml_data的方法
  • 再比如,兩個業務模塊之間需要關聯,需要A方法返回對象給B方法用,則去優化A方法,給出返回值。
  • 再再比如,一些關鍵節點需要截圖,則去補充截圖的方法。

最后感謝每一個認真閱讀我文章的人,看著粉絲一路的上漲和關注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走!?

軟件測試面試文檔

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

在這里插入圖片描述

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

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

相關文章

springboot的MultipartFile轉File讀取

在Spring Boot中,處理文件上傳時,MultipartFile接口被用來封裝上傳的文件信息。 如果需要將MultipartFile轉換為Java標準的File對象進行讀取。 以下是具體的操作流程: 1. 創建臨時文件 首先,需要將接收到的MultipartFile對象轉…

準化 | 水系統碳中和標準體系初見成效

2024年5月31日,中華環保聯合會發布《團體標準公告 2024年第10號(總第78號)》,批準發布了由中華環保聯合會提出并歸口的《廢水處理溫室氣體監測技術規程》(T/ACEF 142-2024)、《工業水系統碳排放核算方法與報告指南》(T/ACEF143-20…

yarn不同操作系統的安裝與配置

Yarn 是一個快速、可靠且安全的依賴包管理工具,用于替代 npm。以下是在不同操作系統上安裝和配置 Yarn 的步驟。 1. 安裝 Node.js 在安裝 Yarn 之前,請確保已經安裝了 Node.js,因為 Yarn 需要 Node.js 環境。你可以在 Node.js — Run JavaSc…

昇思25天學習打卡營第十五天|基于MobileNetv2的垃圾分類

基于MobileNetv2的垃圾分類 MobileNetv2模型原理介紹 MobileNet網絡是由Google團隊于2017年提出的專注于移動端、嵌入式或IoT設備的輕量級CNN網絡,相比于傳統的卷積神經網絡,MobileNet網絡使用深度可分離卷積(Depthwise Separable Convolut…

Zabbix 6.0 案例

自定義監控內容 案列:自定義監控客戶端服務器登錄的人數 需求:限制登錄人數不超過 3 個,超過 3 個就發出報警信息 1.在客戶端創建自定義 key 明確需要執行的 linux 命令 who | wc -l 2.在被監控主機的配置文件目錄中(/etc/za…

港大推出XRec:「會說話」的推薦系統大模型, 從黑盒預測到可解釋

代碼鏈接: https://github.com/HKUDS/XRec 論文鏈接: https://arxiv.org/pdf/2406.02377 實驗室鏈接: https://sites.google.com/view/chaoh 最近,香港大學數據智能實驗室推出了一款名為 XRec 的全新智能大模型,旨在為傳統推薦系統注入可解釋性的新動力。XRec 利用大語言模型…

PyTorch入門筆記

學習參考: PyTorch簡單入門視頻 深入淺出PyTorch 小土堆筆記 前置知識 AI vs ML vs DL AI(Artificial Intelligence):通過讓機器模仿人類進而超越人類ML(Machine Learning):讓機器模仿人類的一…

【AI原理解析】—支持向量機原理

目錄 1. 支持向量機(SVM)概述 2. 超平面與支持向量 3. 間隔最大化 4. 優化問題 5. 核函數 6. 總結 1. 支持向量機(SVM)概述 定義:支持向量機是一種監督學習模型,主要用于數據分類問題。其基本思想是…

【C++】const詳解

📢博客主頁:https://blog.csdn.net/2301_779549673 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正! 📢本文作為 JohnKi ,引用了部分大佬的案例 📢未來很長,…

Android 常用文件系統命令

Android 常用文件系統命令 當系統正在對某個文件系統的區域進行寫入操作時(讀的話沒關系),突然斷電,會造成文件系統對應區域的損壞(如寫入臟數據), 而e2fsck算法就是用來恢復受損的文件系統&am…

力扣1177.構建回文串檢測

力扣1177.構建回文串檢測 因為子串可以重新排序 因此考慮一下什么情況需要替換字母1.當前有一個字母的數量為奇數 需要替換的次數為0 2.當前有二個字母的數量為奇數 需要替換的次數為1 (奇數個a 奇數個b 需要將b -> a) 3.當前有三個字母的數量為奇數 需要替換的次數為1 4.當…

Edge瀏覽器選中后,出現AI智能生成 AI專業寫作

這個是擴展里邊的“ 網頁萬能復制 & ChatGPT AI寫作助手”造成的,這個拓展增加了AI寫作功能。關閉這個拓展就解決了。

入門Axure:快速掌握原型設計技能

2002 年,維克托和馬丁在舊金山灣區的一家初創公司工作,發現自己一再被軟件開發生命周期的限制所困擾,而且產品團隊在編寫規范之前很難評估他們的解決方案,開發人員經常不理解(或不閱讀)給出的規范&#xff…

承載網與核心網的區別

承載網和核心網是通信網絡中的兩個重要組成部分,它們有以下主要區別: 功能方面: 承載網主要負責提供數據傳輸的通道和鏈路,確保各種業務數據能夠在網絡中高效、可靠地傳輸。它類似于通信網絡中的“道路”,專注于數據的…

【linux學習---1】點亮一個LED---驅動一個GPIO

文章目錄 1、原理圖找對應引腳2、IO復用3、IO配置4、GPIO配置5、GPIO時鐘使能6、總結 1、原理圖找對應引腳 從上圖 可以看出, 蜂鳴器 接到了 BEEP 上, BEEP 就是 GPIO5_IO05 2、IO復用 查找IMX6UL參考手冊 和 STM32一樣,如果某個 IO 要作為…

14-16 AI Agent:您無法忽視的盈利未來

忘掉關于機器人接管我們工作的爭論吧。一場更加微妙、可能更有利可圖的革命正在醞釀之中——智能代理的崛起,而智能代理的光芒常常被其更簡單的“表親”虛擬助理所掩蓋。 雖然 Siri 和 Alexa 可以處理基本任務和基本對話,但人工智能代理則完全不同。想象…

HTML5的多線程技術:Web Worker API

Web Workers API 是HTML5的一項技術,它允許在瀏覽器后臺獨立于主線程運行腳本,即允許進行多線程處理。這對于執行密集型計算任務特別有用,因為它可以防止這些任務阻塞用戶界面,從而保持網頁的響應性和交互性。Web Workers在自己的…

中國動物志(140卷)

中國動物志,共140卷,包括昆蟲綱、鳥綱、獸綱、無脊椎動物、硬骨魚綱等多類,是反映我國動物分類區系研究工作成果的系列專著,是研究物種多樣性、探討物種演化和系統發育的重要參考,是動物資源開發利用、有害物種控制、瀕…

昇思25天學習打卡營第12天|linchenfengxue

DCGAN生成漫畫頭像 通過示例代碼說明DCGAN網絡如何設置網絡、優化器、如何計算損失函數以及如何初始化模型權重。 GAN基礎原理 生成式對抗網絡(Generative Adversarial Networks,GAN)是一種生成式機器學習模型,是近年來復雜分布上無監督學習最具前景的…

esp32 模擬藍牙鍵盤不生效一例

esp32 使用 GitHub - T-vK/ESP32-BLE-Keyboard: Bluetooth LE Keyboard library for the ESP32 (Arduino IDE compatible) 這個開源庫模擬鍵盤功能早之前已經玩過,生效,昨天再來玩的時候發覺莫名奇妙居然又不能用了,各種折騰:換了…