[測試]自動化的概念 及使用Selenium實現Web自動化測試

文章目錄

      • 1. 自動化
        • 1.1 自動化概念
        • 1.2 自動化分類
          • 1.2.1 接口自動化
          • 1.2.2 UI自動化
        • 1.3 自動化測試金字塔
      • 2. Web自動化測試
        • 2.1 驅動
      • 3. Selenium
        • 3.1 一個簡單的Web自動化示例
        • 3.2 Selenium + 驅動 + 瀏覽器的工作原理

1. 自動化

1.1 自動化概念

自動化是指自動地代替人的行為完成操作。自動化在生活中處處可見,例如自動灑水機、自動洗手液、超市自動閘門等。這些自動化案例有效減少了人力的消耗,同時也提高了生活的質量。

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

1.2 自動化分類

自動化測試是一個統稱,包含多種類型,如接口自動化、Web自動化、移動端自動化等。

1.2.1 接口自動化

什么是接口自動化測試?
接口自動化測試是通過自動化腳本對系統的接口進行測試,驗證接口的功能、性能、安全性等。

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

  • 解決手動測試效率低的問題
  • 提高測試覆蓋率
  • 減少回歸測試的時間
1.2.2 UI自動化

UI測試也稱為界面測試,常見的UI自動化測試包含Web自動化測試、移動端自動化測試等。

移動端自動化測試:

  • 什么是移動端自動化測試?
    移動端自動化測試主要測試程序部署在手機上能否按照預期的結果進行操作。

  • 為什么要做移動端自動化測試?
    移動端測試通常不是將程序部署在移動端上進行測試,而是需要安裝模擬器,在電腦上編寫自動化測試腳本代碼對模擬器上的軟件進行操作。

Web自動化測試:

  • 什么是Web自動化測試?
    Web自動化測試是模擬人在瀏覽器上的操作行為,自動打開瀏覽器,訪問網頁,并進行一系列的搜索和驗證等行為。

  • 為什么要做Web自動化測試?
    Web自動化測試可以減少手動測試的工作量,提高測試效率,尤其是在回歸測試中。

1.3 自動化測試金字塔

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

理想的自動化測試金字塔:

  • 單元測試:最底層,覆蓋最多的代碼,發現最多的問題
  • 集成測試:中間層,驗證模塊之間的接口
  • UI測試:最上層,驗證用戶界面的功能

在這里插入圖片描述

實際中的自動化測試“冰淇淋蛋筒反模式”:
在這里插入圖片描述

自動化測試需要大量的初始投資,找到“突破點”,與手動測試相比,自動化測試能夠產生長期成本上的積極影響。


2. Web自動化測試

Web自動化測試是通過自動化腳本模擬用戶在瀏覽器上的操作行為,自動執行測試用例。

2.1 驅動

Web系統的測試前提是需要打開瀏覽器,通過訪問Web服務器來對服務器界面進行一系列的操作。對于自動化程序來說,程序需要通過Web驅動(WebDriver)來打開瀏覽器并執行預期的操作流程。

驅動管理:
WebDriverManager是一個開源Java庫,用于管理Selenium WebDriver所需的驅動程序(如Chromedriver、geckodriver、msedgedriver等),自動下載、設置和維護驅動程序。

示例代碼:

<dependency><groupId>io.github.bonigarcia</groupId><artifactId>webdrivermanager</artifactId><version>5.0.3</version>
</dependency>

3. Selenium

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

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

1)安裝Selenium庫:

<dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.0.0</version>
</dependency>

2)使用Selenium編寫代碼:

public void example_test() {// 驅動程序管理的自動化WebDriverManager.chromedriver().setup();ChromeOptions options = new ChromeOptions();// 允許訪問所有鏈接options.addArguments("--remote-allow-origins=*");// 1、打開瀏覽器WebDriver driver = new ChromeDriver(options);// 2、輸入百度網址: https://www.baidu.comdriver.get("https://www.baidu.com");// 3、找到輸入框并輸入“迪麗熱巴”driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("迪麗熱巴");// 4、找到“百度一下”按鈕并點擊driver.findElement(By.xpath("//*[@id=\"su\"]")).click();// 5、關閉瀏覽器driver.quit();
}
3.2 Selenium + 驅動 + 瀏覽器的工作原理

在這里插入圖片描述

實現Web自動化測試需要瀏覽器、瀏覽器驅動、Selenium自動化腳本。這三者通過以下步驟交互:

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

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

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

相關文章

Python教程(三):類對象、閉包、裝飾器、類型注解、MRO

Python總結&#xff08;三&#xff09; 本系列其他教程&#xff1a; Python教程(一)&#xff1a;基本語法、流程控制、數據容器 Python教程(二)&#xff1a;函數、異常、模塊&包、文件讀取、常用模塊 文章目錄 Python總結&#xff08;三&#xff09;一、類&對象1.1 成…

什么是 HTML?

HTML 是用來描述網頁的一種語言。 HTML 指的是超文本標記語言: HyperText Markup LanguageHTML 不是一種編程語言&#xff0c;而是一種標記語言標記語言是一套標記標簽 (markup tag)HTML 使用標記標簽來描述網頁HTML 文檔包含了HTML 標簽及文本內容HTML文檔也叫做 web 頁面 HT…

【Hadoop】Hadoop的簡要介紹

Hadoop是一個由Apache基金會所開發的分布式系統基礎架構&#xff0c;主要用于解決海量數據的存儲及分析計算問題。以下是對Hadoop的詳細介紹&#xff1a; 目錄 一、Hadoop的起源與發展 二、Hadoop的核心組件 1.HDFS&#xff1a; 2.MapReduce&#xff1a; 3.YARN&#xff…

如何用AI制作PPT,輕松實現高效演示

如何用AI制作PPT&#xff0c;輕松實現高效演示&#xff01;在今天這個快節奏的時代&#xff0c;我們的工作方式越來越依賴智能工具。而當涉及到演示文稿時&#xff0c;傳統的PPT制作方式往往繁瑣且耗時。很多人一提到制作PPT就頭大&#xff0c;特別是在內容需要多次修改、調整布…

Canoe Panel基礎功能介紹

文章目錄 一、新建 Panel 面板二、添加 Panel 面板三、刪除 Panel 面板四、Panel視圖&#xff08;views&#xff09;五、控件布局1. 對齊布局2. 控件大小布局 六、Panel 屬性設置1. 設置背景色和背景圖片2. 調整 Panel 畫布大小 提示&#xff1a;如何使用 Panel 面板參考 CANoe…

超聲重建,3D重建 超聲三維重建,三維可視化平臺 UR 3D Reconstruction

1. 超聲波3D重建技術的實現方法與算法 技術概述 3D超聲重建是一種基于2D超聲圖像生成3D體積數據的技術&#xff0c;廣泛應用于醫學影像領域。通過重建和可視化三維結構&#xff0c;3D超聲能夠顯著提高診斷精度和效率&#xff0c;同時減少醫生的腦力負擔。本技術文檔將詳細闡述…

2.2 企業級ESLint/Prettier規則定制

文章目錄 1. 為什么需要企業級代碼規范2. 工具選型對比3. 完整配置流程3.1 項目初始化3.2 ESLint深度配置3.3 Prettier精細配置3.4 解決規則沖突4. 高級定制方案4.1 自定義ESLint規則4.2 擴展Prettier插件5. 團隊協作策略5.1 配置共享方案5.2 版本控制策略6. CI/CD集成7. 常見問…

QT創建項目(項目模板、構建系統、選擇類、構建套件)

1. 項目模版 項目類型界面技術適用場景核心依賴模塊開發語言Qt Widget ApplicationC Widgets傳統桌面應用&#xff08;復雜控件&#xff09;Qt WidgetsCQt Console Application無 GUI命令行工具、服務Qt CoreCQt Quick ApplicationQML/Quick現代跨平臺應用&#xff08;動畫/觸…

oracle11.2.0.4 RAC 保姆級靜默安裝(二) DB數據庫軟件

1.響應文件配置 [rootdb11g1 software]# su - oracle [oracledb11g1 ~]$ cd /software/database/ [oracledb11g1 database]$ cd response/ [oracledb11g1 response]$ vi db_install.rsp oracle.install.optionINSTALL_DB_SWONLY ORACLE_HOSTNAMEdb11g1 UNIX_GROUP_NAME…

日語學習-日語知識點小記-構建基礎-JLPT-N4N5階段(22):給與和得到相關用法

日語學習-日語知識點小記-構建基礎-JLPT-N4&N5階段(22):給與和得到相關用法 1、前言(1)情況說明(2)工程師的信仰2、知識點(1) あげます :給(2)もらいます(いただきます) 得到。(3) くれました :主要是給我。3、單詞(1)日語單詞(2)日語片假名…

Qt5中視口(ViewPort)與窗口(Window)

在Qt中&#xff0c;setViewport和setWindow是用于控制坐標系映射的核心方法&#xff0c;二者共同決定了繪圖邏輯與物理設備之間的轉換關系。以下是關鍵點總結&#xff1a; ?1. 視口&#xff08;Viewport&#xff09;與窗口&#xff08;Window&#xff09;的核心區別? ?視口…

迪威 3D 模型發布系統:制造業產品展示革新利器

在競爭激烈的制造業領域&#xff0c;如何將產品全方位、直觀地呈現給客戶&#xff0c;成為企業脫穎而出的關鍵。傳統的產品展示方式往往受限于平面資料或有限的實物展示&#xff0c;難以讓客戶深入了解產品的復雜結構與精妙細節。迪威 3D 模型發布系統的問世&#xff0c;為制造…

EasyCVR安防視頻匯聚平臺助力工業園區構建“感、存、知、用”一體化智能監管體系

在現代工業園區的安全管理和高效運營中&#xff0c;視頻監控系統扮演著不可或缺的角色。然而&#xff0c;隨著園區規模的擴大和業務的復雜化&#xff0c;傳統的視頻監控系統面臨著諸多挑戰&#xff0c;如設備眾多難以統一管理、數據存儲分散、智能分析能力不足、信息利用率低下…

解決 Redis 后臺持久化失敗的問題:內存不足導致 fork 失敗

文章目錄 解決 Redis 后臺持久化失敗的問題&#xff1a;內存不足導致 fork 失敗問題背景與成因解決方案修改內核參數 vm.overcommit_memory增加系統內存或 Swap 空間調整 Redis 配置 stop-writes-on-bgsave-error 在 Docker 環境中的注意事項總結 解決 Redis 后臺持久化失敗的問…

反射、反射調用以及修改成員變量,成員方法,構造函數、反射的應用

DAY11.2 Java核心基礎 反射&#xff08;第二彈&#xff09; 第一彈請訪問鏈接&#xff1a; 反射&#xff08;第一篇&#xff09; getMethod(String name, Class… parameterTypes)getMethods()getDeclaredMethod(String name,Class… parameterTypes)getDeclaredMethods() …

【鴻蒙開發】Hi3861學習筆記- 外部中斷

00. 目錄 文章目錄 00. 目錄01. 概述02. EXTI相關API03. 硬件設計04. 軟件設計05. 實驗現象06. 附錄 01. 概述 我們在做按鍵控制實驗時&#xff0c;雖然能實現 IO 口輸入功能&#xff0c;但代碼是一直在檢測 IO 輸入口的變化&#xff0c;因此效率不高&#xff0c;特別是在一些…

使用 crontab 定時同步服務器文件到本地

https://www.dong-blog.fun/post/1987 1. 安裝 sshpass sshpass 是一個可以自動輸入密碼的工具。如果未安裝&#xff0c;運行以下命令安裝&#xff1a; ? 對于 Debian/Ubuntu 系統&#xff1a; apt update && apt install sshpass? 對于 CentOS/RHEL 系統&#xf…

反射機制的理解

一、getName 方法解析 代碼功能 public static String getName(String key) throws IOException {Properties properties new Properties();FileInputStream in new FileInputStream("D:\\路徑...\\application.properties");properties.load(in); // 加載配置文…

Visual studio + Qt 項目配置管理

Visual studio Qt 項目配置管理 1.本機順利安裝 vs 和 Qt 軟件 ? 并且設置好Qt 的環境變量比如 E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\bin E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\lib E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\include //這里是你電腦上Qt的路徑&#xff0c;每臺電腦不一樣…

通過 Python 爬蟲提高股票選股勝率

此貼為Python爬蟲技術學習貼 在股票中&#xff0c;即便有了選股規則&#xff0c;從5000多只股票中篩選出符合規則的股票也是十分困難的&#xff0c;于是想通過爬蟲來實現自動化的快速選股。全文用GP代替股票 實現方案 1、指定兩套規則&#xff0c;第一套弱約束&#xff0c;第…