43. 遠程分布式測試實現

43. 遠程分布式測試實現詳解

一、遠程測試環境配置

1.1 遠程WebDriver服務定義

# Chrome瀏覽器遠程服務地址
chrome_url = r'http://localhost:5143'# Edge瀏覽器遠程服務地址
edge_url = r'http://localhost:9438'
  • 關鍵概念:每個URL對應一個獨立的WebDriver服務
  • 典型配置
    • localhost:本地服務
    • 192.168.1.100:4444:局域網內其他機器
    • cloud-test.com:443:云端測試平臺

1.2 瀏覽器能力配置

# 從caps_setting導入預定義配置
from chap9.caps_setting import *# Chrome配置示例
CHROME_CAPS_1 = {'browserName': 'chrome','goog:chromeOptions': {'args': ['--headless', '--disable-gpu']}
}CHROME_CAPS_2 = {'browserName': 'chrome','goog:chromeOptions': {'args': ['--window-size=1920,1080']}
}# Edge配置示例
EDGE_CAPS_1 = {'browserName': 'MicrosoftEdge','ms:edgeOptions': {'args': ['--inprivate']}
}

二、測試套件定義

2.1 函數式測試套件

test_suit_func = [# 任務組1:在Chrome服務1上執行登錄測試([test_login], chrome_url, CHROME_CAPS_1),# 任務組2:在Chrome服務2上執行搜索測試([test_search], chrome_url, CHROME_CAPS_2),# 任務組3:在Edge服務上執行搜索測試([test_search], edge_url, EDGE_CAPS_1)
]
  • 結構說明(測試函數列表, WebDriver URL, 瀏覽器配置)
  • 特點
    • 不同任務組可指向不同服務節點
    • 支持相同服務不同配置

2.2 面向對象測試套件

test_suit_cls = [# 任務組1:在Chrome服務1上執行登錄測試類([AsyncTestLogin], chrome_url, CHROME_CAPS_1),# 任務組2:在Chrome服務1上再次執行登錄測試類([AsyncTestLogin], chrome_url, CHROME_CAPS_1),# 任務組3:在Chrome服務2上執行主功能測試類([AsyncTestMain], chrome_url, CHROME_CAPS_2),# 任務組4:在Edge服務上執行主功能測試類([AsyncTestMain], edge_url, EDGE_CAPS_1)
]
  • 注意事項:同一測試類可在不同節點重復執行
  • 適用場景:復雜業務流測試

三、測試執行入口

3.1 函數式測試執行

main_func(test_suit_func)
  • 功能:執行函數式測試套件
  • 內部流程
    1. 為每個任務組創建異步任務
    2. 連接對應WebDriver服務
    3. 應用瀏覽器配置
    4. 順序執行組內測試函數
    5. 關閉瀏覽器連接

3.2 面向對象測試執行

# main_cls(test_suit_cls)  # 本例中注釋掉
  • 執行方式:取消注釋即可運行
  • 特點
    • 自動檢測并執行測試類中的test_*方法
    • 支持在不同節點執行相同測試類

四、分布式執行流程

4.1 測試任務分發

主控制機├── 任務組1 → Chrome服務1 (localhost:5143)├── 任務組2 → Chrome服務2 (localhost:5143) 不同配置└── 任務組3 → Edge服務 (localhost:9438)

4.2 實際執行時序

時間 | 任務組1 (Chrome服務1)       | 任務組2 (Chrome服務2)       | 任務組3 (Edge服務)
-----|---------------------------|---------------------------|-------------------0s  | 啟動瀏覽器(headless)        | 啟動瀏覽器(全屏)            | 啟動瀏覽器(隱私模式)1s  | 執行test_login()           | 執行test_search()          | 執行test_search()3s  | 驗證登錄成功                | 驗證搜索結果               | 驗證搜索錯誤提示5s  | 關閉瀏覽器                  | 關閉瀏覽器                 | 關閉瀏覽器

五、遠程節點配置示例

5.1 啟動Chrome節點服務

# 在機器1 (IP:192.168.1.101) 上啟動
chromedriver --port=5143# 在機器2 (IP:192.168.1.102) 上啟動
chromedriver --port=5143

5.2 啟動Edge節點服務

# 在機器3 (IP:192.168.1.103) 上啟動
msedgedriver --port=9438

5.3 測試套件配置

chrome_url1 = r'http://192.168.1.101:5143'
chrome_url2 = r'http://192.168.1.102:5143'
edge_url = r'http://192.168.1.103:9438'test_suit_func = [([test_login], chrome_url1, CHROME_CAPS),([test_search], chrome_url2, CHROME_CAPS),([test_search], edge_url, EDGE_CAPS)
]

六、執行效果分析

6.1 資源使用情況

任務組服務地址瀏覽器類型內存占用CPU使用
組1localhost:5143Chrome320MB12%
組2localhost:5143Chrome350MB15%
組3localhost:9438Edge380MB14%

6.2 時間效率對比

執行方式任務數串行耗時并行耗時效率提升
函數測試345秒20秒125%

七、完整代碼

from chap9.async_test_func import test_search, test_login
from chap9.async_test_cls import AsyncTestMain, AsyncTestLogin
from chap9.async_main import main_cls, main_func
from chap9.caps_setting import *chrome_url = r'http://localhost:5143'
edge_url = r'http://localhost:9438'test_suit_func = [([test_login, ], chrome_url, CHROME_CAPS_1),([test_search, ], chrome_url, CHROME_CAPS_2),([test_search, ], edge_url, EDGE_CAPS_1)
]# 注意:測試類在整個代碼運行過程中,測試類只會被創建一次,它在內存有唯一的地址
test_suit_cls = [([AsyncTestLogin, ], chrome_url, CHROME_CAPS_1),([AsyncTestLogin, ], chrome_url, CHROME_CAPS_1),([AsyncTestMain, ], chrome_url, CHROME_CAPS_2),([AsyncTestMain, ], edge_url, EDGE_CAPS_1)
]main_func(test_suit_func)
# main_cls(test_suit_cls)

這種分布式測試架構通過將測試任務分發到不同服務節點,顯著提高了測試執行效率,特別適合大型項目的快速驗證需求。


「小貼士」:點擊頭像→【關注】按鈕,獲取更多軟件測試的晉升認知不迷路! 🚀

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

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

相關文章

Python爬蟲(40)基于Selenium與ScrapyRT構建高并發動態網頁爬蟲架構:原理、實現與性能優化

目錄 一、引言二、技術背景1. 動態頁面處理痛點2. 架構設計目標 三、核心組件詳解1. Selenium Grid集群部署2. ScrapyRT服務化改造3. 智能等待策略 四、系統架構圖五、性能優化實踐1. 資源隔離策略2. 并發控制算法3. 監控體系 六、總結與展望🌈Python爬蟲相關文章&a…

【存儲基礎】SAN存儲基礎知識

文章目錄 1. 什么是SAN存儲?2. SAN存儲組網架構3. SAN存儲的主要協議SCSI光纖通道(FC)協議iSCSIFCoENVMe-oFIB 4. SAN存儲的關鍵技術Thin Provision:LUN空間按需分配Tier:分級存儲Cache:緩存機制QoS&#x…

TDengine 運維——巡檢工具(定期檢查)

背景 TDengine 在運行一段時間后需要針對運行環境和 TDengine 本身的運行狀態進行定期巡檢,本文檔旨在說明如何使用巡檢工具對 TDengine 的運行環境進行自動化檢查。 安裝工具使用方法 工具支持通過 help 參數查看支持的語法 Usage: taosinspect [OPTIONS]Check…

DHCP應用

一、DHCP介紹 在LAN(局域網)中我們常會遇到以下的情況: 1.不知道如何配置IP地址及相關信息的員工,無法上網;2.IP地址配置沖突,無法上網;3.來訪用戶因不熟悉公司網絡情況無法上網; 以上這些情況都是日常最…

LabVIEW多按鍵自動化檢測系統

LabVIEW開發一套高精度按鍵力與行程自動化檢測系統,針對傳統檢測設備自動化程度低、定位誤差大等痛點,實現多按鍵產品的全流程自動化測試。系統集成 6 軸工業機器人、高精度傳感器及實時數據處理模塊,滿足汽車電子、消費電子等領域對按鍵手感…

嵌入式硬件篇---蜂鳴器

蜂鳴器是一種常用的電子發聲元件,主要分為有源蜂鳴器和無源蜂鳴器兩類。它們在結構、工作原理、驅動方式、應用場景等方面存在顯著差異。以下是詳細介紹: 一、核心定義與結構差異 1. 有源蜂鳴器 定義: “有源” 指內部自帶振蕩電路&#x…

600+純CSS加載動畫一鍵獲取指南

CSS-Loaders.com 完整使用指南:600純CSS加載動畫庫 🎯 什么是 CSS-Loaders.com? CSS-Loaders.com 是一個專門提供純CSS加載動畫的資源網站,擁有超過600個精美的單元素加載器。這個網站的最大特色是所有動畫都只需要一個HTML元素…

國內高頻混壓PCB廠家有哪些?

一、技術領先型廠商(聚焦材料與工藝突破) 獵板PCB 技術亮點:真空層壓工藝實現FR-4與羅杰斯高頻材料(RO4350B/RO3003)混壓,阻抗公差3%,支持64單元/板的5G天線模塊,插損降低15%。 應用…

volatile,synchronized,原子操作實現原理,緩存一致性協議

文章目錄 緩存一致性協議(MESI)volatile1. volatile 的作用2.volatile的底層實現3,volatile 實現單例模式的雙重鎖(面手寫) synchronized1,基本用法2,可重入性3,Java對象頭4,實現原理(1)代碼塊同步的實現&a…

webfuture:如何屏蔽后臺發文界面的保存為新文章按鈕?

問題描述: 如何屏蔽后臺發文界面的保存為新文章按鈕? 問題解決:修改這個文件 /Admin/Content/Base/css/base.css 定義這個的id saveAsNewItemSubmit #saveAsNewItemSubmit{display: none;}

SpringBoot集成第三方jar的完整指南

原文地址:https://blog.csdn.net/weixin_43826336/article/details/141640152?ops_request_misc%257B%2522request%255Fid%2522%253A%25227d4118ef2d572ba4428caf83f1d2bb28%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id7d4118…

題目 3293: 藍橋杯2024年第十五屆決賽真題-數位翻轉

題目 3293: 藍橋杯2024年第十五屆決賽真題-數位翻轉 時間限制: 2s 內存限制: 192MB 提交: 1046 解決: 318 題目描述 小明創造了一個函數 f(x) 用來翻轉 x 的二進制的數位(無前導 0)。比如f(11) 13,因為 11 (1011)2,將其左右翻轉…

word為跨頁表格新加表頭和表名

問題: 當表格過長需要跨頁時(如下圖所示),某些格式要求需要轉頁接排加續表。 方法一: 1、選中表格,在“表布局”區域點開“自動調整”,選擇“固定列寬”(防止后續拆分表格后表格變…

Ubuntu上進行VS Code的配置

1. 安裝VS code sudo snap install code --classic 2. 安裝GCC sudo apt install build-essential 3. 安裝VS Code中文包 打開 VS Code 點擊左側活動欄中的擴展圖標(或按Ctrl+Shift+X) 在搜索框中輸入:Chinese (Simplified) 選擇由 Microsoft 提供的 中文(簡體)語言包…

vr中風--數據處理模型搭建與訓練2

位置http://localhost:8888/notebooks/Untitled1-Copy1.ipynb # -*- coding: utf-8 -*- """ MUSED-I康復評估系統(增強版) 包含:多通道sEMG數據增強、混合模型架構、標準化處理 """ import numpy as np impor…

【LLM vs Agent】從語言模型到智能體,人工智能邁出的關鍵一步

目錄 一、什么是 LLM?語言的天才,思維的起點 ? 特點小結: 二、什么是 Agent?智能的執行者,自主的決策者 ? 特點小結: 三、LLM 與 Agent 的關系:是工具,更是大腦 四、案例實戰…

安裝DockerDocker-Compose

Docker 1、換掉關鍵文件 vim /etc/yum.repos.d/CentOS-Base.repo ▽ [base] nameCentOS-$releasever - Base - Mirrors Aliyun baseurlhttp://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck1 enabled1 gpgkeyhttp://mirrors.aliyun.com/centos/RPM-GPG-KEY-C…

Perl One-liner 數據處理——基礎語法篇【匠心】

Perl(Practical Extraction and Report Language)是一種功能強大且靈活的腳本語言,因其強大的文本處理能力和簡潔的語法而廣受開發者和系統管理員的喜愛。特別是在命令行環境下,Perl 的 one-liner(單行腳本&#xff09…

Go語言defer關鍵字:延遲執行的精妙設計

深度解析Go語言defer關鍵字:延遲執行的精妙設計 引言 在Go語言中,defer語句是一種獨特而強大的控制流機制,它通過??延遲執行??的方式解決資源管理、錯誤處理和異常恢復等關鍵問題。理解defer的工作原理是掌握Go并發編程和錯誤處理的關鍵…

C#項目07-二維數組的隨機創建

實現需求 創建二維數組,數組的列和寬為隨機,數組內的數也是隨機 知識點 1、Random類 Public Random rd new Random(); int Num_Int rd.Next(1, 100);2、數組上下限。 //定義數組 int[] G_Array new int[1,2,3,4];//一維數組 int[,] G_Array_T …