自動化測試概念篇

文章目錄

  • 目錄
    • 1. 自動化
      • 1.1 自動化概念
        • 1.1.1 回歸測試
      • 1.2 自動化分類
      • 1.3 自動化測試金字塔
    • 2. web自動化測試
      • 2.1 驅動
        • 2.1.1 安裝驅動管理
        • 2.1.2 selenium庫
    • 3. Selenium
      • 3.1 一個簡單的web自動化示例
      • 3.2 selenium+驅動+瀏覽器的工作原理

目錄

  • 自動化
  • web自動化測試
  • Selenium

1. 自動化

1.1 自動化概念

自動的代替人的行為完成操作。

自動化在生活中處處可見:自動灑水機,只要通上水就可以自動化灑水并且可以自動的旋轉;自動洗手液,免去了手動擠壓可以自動感應出洗手液;超市自動閘門,不需要手動的開門關門。

生活中的自動化案例有效的減少了人力的消耗,同時也提高了生活的質量。

軟件中的自動化測試也是如此,通過自動化測試有效減少人力的消耗的同時也提高了測試的質量和效率。

自動化的主要目的就是用來進行回歸測試。

1.1.1 回歸測試

軟件有多個版本需要進行功能的整體回歸,為了避免新增功能影響到歷史的功能需要進行功能的回歸。

1.2 自動化分類

自動化分類

1.3 自動化測試金字塔

自動化的類型非常多,那么到底哪一種是最好的?哪一種測試的收益會更佳?

這里我們介紹測試圈內非常著名的自動化測試金字塔:

理想的自動化測試金字塔

開發人員寫完代碼之后就執行單元測試,不需要額外的時間和精力來熟悉代碼,因此投資回報率最高。

前端可以看到的元素非常多:文字、圖片、輸入框、按鈕… 每個元素的大小、顏色、形狀… 都需要進行測試,而且前端涉及到的不可靠因素太多了,編寫自動化腳本相較于接口自動化腳本而言難度會大一些,消耗的人力和時間的成本也會更大一些。

理想的自動化測試金字塔表達了自動化測試的理想情況,利用較少的時間和精力在單元測試上就能夠發現更多有效的問題。

然而實際上在企業中,自動化往往是“冰淇淋蛋筒反模式”:

自動化測試“冰淇淋蛋筒反模式”

相較于測試人員來說,開發人員不那么注重測試,因此,實際工作中單元測試投入的時間和精力會比較少。

自動化需要大量的初始投資,找到“突破點”,與手動測試相比,我們開始看到它對長期成本產生的積極影響,也能夠清楚,這兩種測試活動都是完全兼容,產生短期和長期利益。

2. web自動化測試

自動化測試步驟

2.1 驅動

上面給大家已經介紹過,web系統的測試前提是需要打開瀏覽器,通過訪問web服務器來對服務器界面進行一系列的操作。對于手工測試來說,這一系列的操作都需要測試人員手動的,一步一步的來執行測試。那么對于自動化程序來說,程序如何才能打開瀏覽器并執行我們預期的操作流程呢?

驅動一詞應用廣泛,同學們都不會陌生。

車有了驅動才能夠讓車跑起來。

計算機有了驅動程序就可以與設備(耳機,攝像頭,麥克風,鍵盤,顯示器等等設備)進行通信。

驅動程序

程序想要打開web瀏覽器就需要安裝web驅動(即WebDriver),WebDriver以本地化方式驅動瀏覽器。

WebDriver

2.1.1 安裝驅動管理

若通過安裝驅動的方式來啟動瀏覽器,每次瀏覽器更新后對應的驅動也需要更新,為了解決這個問題,selenium中提供了驅動管理工具webdriver-manager,有了webdriver-manager無需手動安裝瀏覽器驅動,即使瀏覽器更新也不會影響自動化的執行。

命令:pip install webdriver-manager

驅動管理:

webdriver-manager支持的python版本為:3.7~3.11

WebDriver Manager是一個開源的命令行工具,它可以自動下載和安裝適用于不同瀏覽器的WebDriver。通過使用WebDriver Manager,我們可以確保瀏覽器驅動版本始終與瀏覽器版本保持一致,從而避免因版本不匹配而導致的各種問題。

2.1.2 selenium庫

安裝selenium庫

selenium版本很多,統一使用selenium 4.0.0版本

pip install selenium==4.0.0

3. Selenium

接下來就是使用selenium來編寫web自動化測試腳本。

selenium是一個web自動化測試工具,selenium中提供了豐富的方法供給使用者進行web自動化測試。

3.1 一個簡單的web自動化示例

web自動化示例

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager#編寫自動化腳本,具體步驟#1.打開瀏覽器----驅動管理
ChromeIns=ChromeDriverManager().install()
###創建谷歌瀏覽器驅動對象
driver=webdriver.Chrome(service=Service(ChromeIns))
time.sleep(2)
#2.輸入百度網址:https://www.baidu.com(網址一定要完整,不要寫成www.baidu.com)
driver.get("https://www.baidu.com")
time.sleep(2)
#3.找到百度輸入框,輸入關鍵詞“迪麗熱巴”
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("迪麗熱巴")
time.sleep(2)
#4.點擊“百度一下”按鈕
driver.find_element(By.CSS_SELECTOR,"#su").click()
time.sleep(2)
#5.關閉瀏覽器
driver.quit()

3.2 selenium+驅動+瀏覽器的工作原理

實現web自動化測試需要瀏覽器、瀏覽器驅動、selenium自動化腳本。這三者是如何交互最終實現web的自動化測試?

selenium+驅動+瀏覽器的工作原理

  1. 通過selenium編寫的自動化腳本代碼中在ChromeDriverService中創建一個服務
  2. 通過創建好的服務打開webdriver,安裝在本地的驅動服務IP為localhost,PORT為ChromeDriverService中創建的端口號,該服務地址為selenium向webdriver發送請求的服務地址
  3. 向瀏覽器驅動程序發送HTTP請求,瀏覽器驅動程序解析請求,打開瀏覽器,并獲得sessionid,如果再次對瀏覽器操作需攜帶此id
  4. 打開瀏覽器后,所有的selenium的操作(訪問地址,查找元素等)均通過創建好的服務鏈接到webdriver,然后使用execute發送請求
  5. 驅動收到請求并對請求進行解析,轉成瀏覽器能夠解析的腳本并發送給瀏覽器,瀏覽器通過請求的內容執行對應動作
  6. 瀏覽器再把執行的動作結果通過瀏覽器驅動程序返回給測試腳本

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

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

相關文章

《AI大模型應知應會100篇》第17篇:大模型的偏見與公平性問題

第17篇:大模型的偏見與公平性問題 摘要 在人工智能迅速發展的今天,大型語言模型(LLM)已經深入到我們的日常生活和工作中。然而,這些模型并非完美無缺,它們可能攜帶并放大數據中的偏見,導致不公…

【踩坑】GitHub Actions 運行的 Linux 環境中,文件名是大小寫敏感的

在使用 VuePress 搭建個人博客并部署到 GitHub Pages 的過程中,我遇到了一個頗為棘手的問題:本地打包一切正常,但在 GitHub Actions 自動執行打包流程時,卻提示找不到 README.md 文件,導致整個流程失敗。經過一番深入排…

C# 13新特性 - .NET 9

轉載: C# 13 中的新增功能 | Microsoft Learn C# 13 包括以下新增功能。 可以使用最新的 Visual Studio 2022 版本或 .NET 9 SDK 嘗試這些功能:Introduced in Visual Studio 2022 Version 17.12 and newer when using C# 13 C# 13 中的新增功能 | Micr…

numpy.ma.masked_where:屏蔽滿足條件的數組

1.函數功能 屏蔽滿足條件的數組內容,返回值為掩碼數組 2.語法結構 np.ma.masked_where(condition, a, copyTrue)3. 參數 參數含義condition屏蔽條件a要操作的數組copy布爾值,取值為True時,結果復制數組(原始數據不變),否則返回…

【Redis】數據結構和內部編碼

先來復習一下之前學過的幾個基本的全局命令: keys:用來查看匹配規則的keyexists:用來判定執行key是否存在del:刪除指定的keyexpire:給key設置過期時間ttl:查詢key的過期時間type:查詢key對應的…

OBOO鷗柏如何以智能教育室內外觸摸屏一體機AI變革硬件

在AI技術蓬勃發展的當下,OBOO鷗柏室外觸摸屏一體機通過融入AI科技,為教育領域帶來了翻天覆地的變化。這款一體機不僅為高校和大學校園提供了革命性的數字化教學解決方案,更引領了引體向上成績提升一體機帶訓室外終端屏幕設備的新潮流。其創新…

從零搭建高并發體育直播網站:架構設計、核心技術與性能優化實戰

本文從技術視角拆解體育直播網站開發全流程,涵蓋高并發架構設計、低延遲視頻流傳輸、實時彈幕系統實現等核心模塊,并附可復用的代碼片段與優化方案。適合中高級開發者進階實戰參考。 一、需求分析與技術選型 1. 典型業務場景 核心需求:支持1…

【Python內置函數的深度解析與應用】id

目錄 前言:技術背景與價值當前技術痛點解決方案概述目標讀者說明 一、技術原理剖析核心概念圖解關鍵技術模塊技術選型對比 二、實戰演示環境配置要求核心代碼實現1. 基礎身份驗證2. 不可變對象優化3. 對象生命周期追蹤 運行結果驗證 三、性能對比測試方法論量化數據…

3.vtkProp 和vtkProp3D

文章目錄 vtkProp 和vtkProp3D使用vtkProp3D使用vtkPro vtkProp 和vtkProp3D vtkProp 和 vtkProp3D 都是VTK(Visualization Toolkit)庫中的類,它們用于在渲染場景中表示可視化元素。理解這兩個類的區別和用途對于有效地使用VTK進行三維數據可…

【ZYNQ Linux移植】2-獲取設備樹

0 寫在前面 這是一個系列博客,詳細介紹如何在 ZYNQ 與 ZYNQ MP 平臺上如何移植 Linux 系統。目前網絡上的大部分教程都是全程基于 Petalinux 的開發,雖然這樣簡化了開發流程,但對于初學者深入理解掌握 Linux 是不利的,所以&#x…

基礎算法篇(5)(藍橋杯常考點)—動態規劃(C/C++)

文章目錄 動態規劃前言線性dp路徑類dp經典線性dp背包問題分類01背包問題完全背包問題多重背包分組背包問題混合背包問題多維費用的背包問題區間dp 動態規劃 前言 在競賽中,如果遇到動態規劃的題目,只要不是經典題型,那么大概率就是以壓軸題的…

obsidian寫文章的圖床設置方法

目標 要達成的需求: 復制到obsidian的圖片,自動上傳到Picgo配置的圖床。可以自定義大小。可以一鍵下載當前文章的圖片到本地。 obsidian配置圖床 安裝并配置插件 image auto upload plugin,配置信息如下圖。 滾輪alt自定義大小 安裝并…

QPaintDevice繪圖設備

1.QPixmap 對不同平臺做了顯示的優化,可以將畫的圖保存到磁盤上 頭文件: #include"QPixmap" #include"QPainter" 1.1QPixmap畫圖 代碼: //Pixmap繪圖設備QPixmap pix(300,300);//聲明畫家QPainter painter(&pix…

數據結構有哪些類型(對于數據結構的簡述)

在學習計算機時,數據結構是不可忽視的一點,從考研時的408課程,再到工作中編寫軟件,網站,要想在計算機領域站住腳跟,數據結構是必備的 在這里,我對于數據結構進行了匯總,并簡要描述&…

L2TP實驗(無圖后補)

拓撲圖 一、搭建拓撲并配置基礎 IP 地址 設備選型與拓撲搭建:在 eNSP 中,拖入所需設備,包括 LAC(L2TP Access Concentrator,L2TP 接入集中器 )、LNS(L2TP Network Server,L2TP 網絡服…

【C#】CAN通信的使用

在C#中實現CAN通信通常需要借助第三方庫或硬件設備的驅動程序,因為C#本身并沒有直接內置支持CAN通信的功能。以下是一個關于如何使用C#實現CAN通信的基本指南,包括所需的步驟和常用工具。 1. 硬件準備 要進行CAN通信,首先需要一個支持CAN協…

02_C++入門案例習題while循環練習案例:猜數字

案例描述&#xff1a;系統隨機生成一個1到100之間的數字&#xff0c;玩家進行猜測&#xff0c;如果猜錯&#xff0c;提示玩家數字過大或過小&#xff0c;如果猜對恭喜玩家勝利&#xff0c;并且退出游戲。 需要引入隨機數種子 #include <cstdlib> #include <ctime>…

深入理解哈希沖突:原理、解決方案及 Java 實踐

概述&#xff1a;在計算機科學領域&#xff0c;哈希表是一種非常重要的數據結構&#xff0c;它通過哈希函數將鍵映射到存儲桶中&#xff0c;從而實現快速的數據查找、插入和刪除操作。然而&#xff0c;哈希表在實際應用中會面臨 哈希沖突的問題。本文將深入探討哈希沖突的原理、…

opencv(C++)處理圖像顏色

文章目錄 介紹使用策略設計模式比較顏色實現方案計算兩個顏色向量之間的距離1. 簡單方法&#xff1a;曼哈頓距離計算&#xff08;Manhattan Distance&#xff09;2.使用 OpenCV 的 cv::norm 函數3.使用 OpenCV 的 cv::absdiff 函數錯誤示例 使用 OpenCV 函數實現顏色檢測實現方…

DOM解析XML:Java程序員的“樂高積木式“數據搭建

各位代碼建筑師們&#xff01;今天我們要玩一個把XML變成內存樂高城堡的游戲——DOM解析&#xff01;和SAX那種"邊看監控邊破案"的刺激不同&#xff0c;DOM就像把整個樂高說明書一次性倒進大腦&#xff0c;然后慢慢拼裝&#xff08;內存&#xff1a;你不要過來啊&…