自動化測試準備工作:概念篇

自動化

什么是自動化?

超市的自動閘門,不需要手動的開門關門生活中的自動動化案例有效的減少了人力的消耗,同時也提高了生活的質量。

軟件自動化測試同理,通過編寫自動化測試程序(減少人力和時間的消耗,提高軟件的測試質量),自動化測試主要是用來進行回歸測試

針對自動化這個問題,非常容易出兩道面試題

  • 自動化測試能夠取代人工測試嗎?

自動化測試不能取代人工測試,首先自動化測試不一定比人工測試更能保證系統的可靠性再者自動化測試是由測試人員進行編寫的也需要進行不定期的維護和更新。

  • 自動化測試可以大幅度降低工作量?

這是一個坑,只能說自動化測試可以一定程度上進行降低工作量,大幅進行降低工作量這個太絕對。

回歸測試

當軟件新增加一個功能后,在新版本上線之前需要將之前產品存在的功能重新進行測試,防止新功能的上線導致之前的功能出現故障。

因此,新舊版本都需要執行測試。

自動化測試的分類

想要進行清楚自動化主要是圍繞著軟件的哪些方面進行的測試,首先要清楚軟件通常有哪幾個部分?

軟件主要分為兩大類:瀏覽器進行打開的軟件、終端可以進行打開的軟件(app)

瀏覽器進行打開的軟件又分為web前端和后端服務器

app分為客戶端和后端的服務器

所以說自動化的分類就分為接口自動化前端自動化。

前端自動化又分為web界面測試自動化和客戶端界面測試自動化。

自動化測試金字塔

?動化的類型?常多,那么到底哪?種是最好的?哪?種測試的收益會更佳? 這?我們介紹測試圈內?常著名的?動化測試?字塔

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

然后實際上在企業中,自動化往往是“冰淇淋蛋筒反模式” ,如下圖所示

在實際的開發中通過UI自動化和接口自動化發現的問題是非常有限的,并且開發人員并不是很重視單元測試,因此實際上手動進行探索測試的回報率是最高的,因此有了冰淇淋蛋筒反模式。

web自動化

驅動的理解

我們在進行學習操作系統的時候就了解過驅動,驅動位于硬件的上層,操作系統的下層,通過驅動實現硬件和軟件的交互。

web自動化測試工具selenium

我們要進行在百度進行搜索“感動中國的十大人物”

手動:手動打開瀏覽器,需要點擊瀏覽器軟件,然后進行搜索,這種情況是手工進行驅動瀏覽器的打開

自動化:① 打開瀏覽器 ②輸入百度網址 ③找到輸入框,輸入關鍵詞“感動中國的十大人物” ④點擊“百度一下”按鈕,這種請i況下就是程序驅動瀏覽器打開。

安裝selenium 庫

安裝對應瀏覽器的驅動 (以chorme瀏覽器為例)

通過下面的網址進行下載對應的驅動

?Chrome for Testing availability

編寫自動化進行測試的小 demo 驗證瀏覽器的驅動是否安裝成功并進行體會自動化測試


import time
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager# 設置 Chrome 瀏覽器的路徑
chrome_options = Options()
chrome_options.binary_location = "C:/Program Files/Google/Chrome/Application/chrome.exe"  # 修改為你自己的路徑# 使用 webdriver_manager 自動下載 ChromeDriver,并創建 Service 對象
service = Service(ChromeDriverManager().install())  # 正確實例化 Service 類# 啟動瀏覽器
driver = webdriver.Chrome(service=service, options=chrome_options)driver.get("https://www.baidu.com")#找到搜索框,輸入關鍵詞
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("感動中國十大人物")
time.sleep(2)#點擊百度一下
driver.find_element(By.CSS_SELECTOR,"#su").click()
time.sleep(2)#關閉瀏覽器
driver.close()

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

這三者是如何進行交互的呢?

具體步驟解析如下:?

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

驗證方式:執行selenium編寫的自動化腳本代碼中,可以在終端看到創建的驅動服務地址。

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

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

相關文章

每日主題切換網頁:用純前端技術打造隨心情變化的動態界面

🎨 每日主題切換網頁:用純前端技術打造隨心情變化的動態界面 項目地址:https://github.com/hhse/daily-theme-switcher 在線演示:https://hhse.github.io/daily-theme-switcher 這里寫目錄標題🎨 每日主題切換網頁&…

TOPSIS(Technique for Order Preference by Similarity to Ideal Solution )簡介與簡單示例

前言 提醒: 文章內容為方便作者自己后日復習與查閱而進行的書寫與發布,其中引用內容都會使用鏈接表明出處(如有侵權問題,請及時聯系)。 其中內容多為一次書寫,缺少檢查與訂正,如有問題或其他拓展…

uniapp 富文本rich-text 文本首行縮進和圖片居中

1. uniapp 富文本rich-text 文本首行縮進和圖片居中 1.1. rich-text 文本首行縮進使用 rich-text 組件渲染html格式的代碼,常常因為不能自定義css導致文本不能縮進,以及圖片不能居中等問題,這里可以考慮使用js的replace方法,替換…

Apple基礎(Xcode③-Singbox Core)

brew install go open ~/.bash_profile export PATH="$PATH:$(go env GOPATH)/bin" 先確保工具鏈完整 go install github.com/sagernet/gomobile/cmd/gomobile@v0.1.4 go install github.com/sagernet/gomobile/cmd/gobind@v0.1.4 gomobile init -v # 關鍵:-v …

JVM學習日記(十四)Day14——性能監控與調優(一)

經過前幾篇的鋪墊,現在開始正式進入調優篇,也是大火實際用的到的和感興趣的,但是前期的知識積累還是有必要的,所以還對JVM基礎沒什么了解的,建議還是回看主包的前幾篇內容,當然看其他優秀的博主也是可以的。…

使用 Elasticsearch 和 AI 構建智能重復項檢測

作者:來自 Elastic Dayananda Srinivas 探索組織如何利用 Elasticsearch 檢測和處理貸款或保險申請中的重復項。 Elasticsearch 帶來了大量新功能,幫助你為你的使用場景構建最佳搜索方案。深入了解我們的示例 notebooks,開始免費云試用&#…

如何在不依賴 Office 的情況下轉換 PDF 為可編輯文檔

在日常工作里,我們經常需要處理各種文件格式的轉換問題,像Word轉PDF或者PDF轉Excel這樣的需求屢見不鮮。它是一款功能全面的PDF轉換工具,能夠幫助你輕松應對多種文檔處理任務。不僅能夠實現PDF與其他格式之間的轉換,如Word、Excel…

嵌入式學習筆記-MCU階段--DAY09

1. oled屏幕的接口IIC應用場合:2.IIC通信原理概念:IIC(Inter-Integrated Circuit)其實是IICBus簡稱,所以中文應該叫集成電路總線,它是一種串行通信總線,使用多主從架構,由飛利浦公司…

解決 Node.js 托管 React 靜態資源的跨域問題

在 Node.js 項目中托管 React 打包后的靜態資源時,可能會遇到跨域問題(CORS)。以下是幾種解決方案: 1. 使用 Express 中間件設置 CORS 頭 const express require(express); const path require(path); const app express();// …

【Linux】多路轉接之epoll

優化poll進行拷貝的開銷poll開銷過大將整個 pollfd 數組拷貝到內核態,以便內核檢查 fd 是否就緒(從用戶態 → 內核態)。內核檢查 fd 狀態,并填充 revents。將 pollfd 數組從內核態拷貝回用戶態,讓應用程序可以讀取 rev…

下載一個JeecgBoot-master項目 導入idea需要什么操作啟動項目

官網:開發環境搭建 | JEECG 文檔中心 一般做開發的電腦里都是有的,沒有的只能下載了 前端安裝 node官網:https://nodejs.org/zh-cnpnpm安裝:通過命令 后端安裝: jdk17 :https://www.oracle.com/cn/java/technologies/downloads/#java17maven :https://m…

解決 InputStream 只能讀取一次問題

是的,InputStream 的一個重要特性是它通常只能被讀取一次。這是因為:輸入流通常是單向的、順序訪問的數據源很多流(如網絡流、文件流)讀取后指針就移動了,無法回退有些流(如Socket流)甚至讀取后…

數據分析面試題

技都測試 1、請列舉5個 Excel 中常用的函數及寫法。[ if ] IF(A1>60, "及格", "不及格") —— 若 A1 單元格數值≥60,返回 “及格”,否則返回 “不及格”。IF(B2>100, B2*0.8, B2) —— 若 B2 數值 > 100&#xff0c…

【07】VisionMaster入門到精通——Blob分折

文章目錄0 視屏講解與演示1 案例演示2 參數詳解1 運行參數0 視屏講解與演示 1 案例演示 周長使能查找U型槽 短軸使能查找U型槽 面積篩選區域 當條件不符合是,該模塊顯示紅色,狀態為NG 顯示二值圖像 顯示Blob圖像 2 參數詳解 Blob分折,…

解釋 MySQL 中的 EXPLAIN 命令的作用和使用場景

解釋 MySQL 中的 EXPLAIN 命令的作用和使用場景 總結性回答 EXPLAIN 是 MySQL 中用于分析 SQL 查詢執行計劃的命令,它能展示 MySQL 如何執行一個查詢,包括使用的索引、表連接順序、掃描行數等關鍵信息。主要用于查詢性能優化,幫助開發者識別潛…

.env 文件

.env 文件其實就是一個純文本文件,用來寫“環境變量”鍵值對,格式非常簡單 👇? .env 文件寫法格式:每一行就是一個變量名 值,不要加引號,不要加空格DEEPSEEK_API_KEYsk-xxxxxxxxxxxxxxxxxxxx完整例子&…

機器學習——K 折交叉驗證(K-Fold Cross Validation),案例:邏輯回歸 交叉尋找最佳懲罰因子C

什么是交叉驗證? 交叉驗證是一種將原始數據集劃分為若干個子集,反復訓練和驗證模型的策略。 交叉驗證(Cross-Validation)適用于你在模型調參(如邏輯回歸中的 C) 最常用的:K 折交叉驗證&#…

藍橋杯----串口

(五)、串口1、串口通信簡介制定通信的規則,通信雙方按照協議規則進行數據收發,將一個設備的數據傳送到另一個設備,擴展硬件系統,串口USART有兩根通信線Tx、Rx,可同時雙向通信,稱之為…

錯誤: 找不到或無法加載主類 原因: java.lang.ClassNotFoundException

背景: 代碼沒有更改,主類位置也沒有移動,運行時突然報找不到或無法加載主類的錯誤 錯誤: 找不到或無法加載主類 原因: java.lang.ClassNotFoundException編譯器上方顯示 Java file is located outside of the module source root so it wont …

Lock 接口及實現類詳解:從 ReentrantLock 到并發場景實踐

在 Java 并發編程中,除了synchronized關鍵字,java.util.concurrent.locks.Lock接口及其實現類是另一種重要的同步機制。自 JDK 5 引入以來,Lock接口憑借靈活的 API 設計、可中斷的鎖獲取、公平性控制等特性,成為復雜并發場景的首選…