日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于docker的多線程并發(fā)UI自動化測試框架

電子工程師 ? 來源:全棧軟件測試在線 ? 作者:全棧軟件測試在線 ? 2022-08-08 10:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

01

需求背景

日常測試中會遇到對web應(yīng)用進行UI自動化的測試場景,一般常用的工具是使用Selenium,一套簡單的UI自動化架構(gòu)如下:

3542a30a-16c1-11ed-ba43-dac502259ad0.png

簡單的UI自動化架構(gòu)

上圖即為簡單搭建的一套UI自動化測試架構(gòu),但存在如下缺點:

串行執(zhí)行測試用例:即同一時刻只啟動一個進程去啟動一個瀏覽器進行測試,有時工作中需要進行瀏覽器的兼容性測試,這樣的話只能等一個進程結(jié)束后,再開啟另一個進程開始另一個瀏覽器的測試,效率很低。

一臺機器只能安裝一個版本的瀏覽器:有時兼容性測試不僅要測試不同瀏覽器的情況,還要測試同一瀏覽器不同版本的情況,通常一臺機器只能安裝1個版本的chrome或firefox,這樣就沒辦法測試不同版本的兼容性情況了。

測試腳本與瀏覽器部署在同一臺機器,試想一臺機器既跑測試腳本,又開啟進程啟動瀏覽器進行測試,嚴重消耗機器硬件資源。

為了解決(1)的問題,可以考慮用多線程并發(fā)的方式執(zhí)行測試用例,如下圖

35576b78-16c1-11ed-ba43-dac502259ad0.png

并發(fā)測試框架

為了解決(2)和(3)的問題,可以在并發(fā)框架的基礎(chǔ)上,采用SeleniumGrid這一分布式測試工具,實現(xiàn)測試腳本和測試執(zhí)行節(jié)點的分離,即用遠程機作為SeleniumNode,在其上安裝不同版本的不同瀏覽器,這樣在本機運行測試腳本后,測試腳本會向SeleniumGrid發(fā)起測試請求,SeleniumGrid會尋找當前處于空閑狀態(tài)的節(jié)點,并在其上執(zhí)行測試。

整體架構(gòu)如下:

35684c54-16c1-11ed-ba43-dac502259ad0.png

并發(fā)分布式測試框架

至此,這種并發(fā)分布式測試框架基本上就可以滿足我們的日常測試需求了,但仍然存在缺點:

(1) 執(zhí)行節(jié)點機配置麻煩:常用的方式就是為每個執(zhí)行節(jié)點配一臺虛擬機,然后在每臺執(zhí)行節(jié)點機上都要重新配置一遍測試環(huán)境,最重要的一點是,測試資源很緊張,沒有那么多虛擬機供我們使用。

為了解決(1)的問題,我們需要一臺測試執(zhí)行節(jié)點,需要搭建一臺虛擬機,然后在其上進行環(huán)境配置,如果再需要一臺測試執(zhí)行節(jié)點,又要重復(fù)上述的過程。一是搭建一臺虛擬機周期較長,虛擬機啟動時間較長,且虛擬機資源依賴于硬件配置,二是每臺虛擬機都要重新配置。

而利用docker可以解決上述問題,其具有以下優(yōu)點:

docker鏡像不并包含linux內(nèi)核,多個docker鏡像共用宿主機的linux內(nèi)核,即相當于我們只要有一個linux內(nèi)核虛擬機就可以了,可以減少對硬件資源的依賴。

一個docker鏡像可以運行很多docker容器,每個docker容器之間都是物理隔離的。

docker鏡像倉庫里會有其他人已經(jīng)制作好的相關(guān)鏡像,不需要我們自己制作,或者我們把其他人的鏡像拿來,改下某些配置變?yōu)槲覀冏约合胍溺R像就ok了

至此,我們可以利用docker的容器來作為UI自動化測試的執(zhí)行節(jié)點,取代之前的虛擬機。

02

框架搭建

基于以上介紹,整體的測試框架如下:

3580321a-16c1-11ed-ba43-dac502259ad0.png

基于docker的多線程并發(fā)UI自動化測試框架

框架分為3個部分,多線程并發(fā)測試框架采用Python編寫,調(diào)用robot framework執(zhí)行測試用例,并將測試請求發(fā)送給docker容器中運行的SeleniumHub,SeleniumHub尋找處于空閑狀態(tài)的SeleniumNode執(zhí)行節(jié)點進行web測試,測試結(jié)束后,在部署測試腳本的主機上生成各線程運行后的測試報告,再調(diào)用robot framework的rebot命令合并測試報告,生成最后的匯總測試報告發(fā)布。下面詳細介紹搭建步驟。

03

測試環(huán)境搭建


1、安裝docker

(1)win7用戶,進入Docker Toolbox的下載網(wǎng)頁,選擇windows版本下載,win10用戶進入docker官網(wǎng)下載Docker For Windows安裝。

整個安裝過程非常簡單,安裝完成后,可以在桌面得到如下的三個圖標:

3593a0a2-16c1-11ed-ba43-dac502259ad0.png

win7安裝docker toolbox

(2)設(shè)置環(huán)境變量

安裝完成后,建議先配置一個環(huán)境變量MACHINE_STORAGE_PATH,來自定義虛擬機保存的位置,因為之后下載的鏡像越來越多,都是放在虛擬機的虛擬磁盤文件中,虛擬磁盤文件會越來越大,放在默認的C盤用戶目錄下可能會在以后造成一些麻煩,參考下圖:

35a3536c-16c1-11ed-ba43-dac502259ad0.png

設(shè)置環(huán)境變量

(3)開始使用

點擊Docker Quickstart Terminal圖標,從而打開一個Docker Toolbox terminal,若報如下圖信息,則去https://github.com/boot2docker/boot2docker/releases下載對應(yīng)版本的boot2docker.iso放到MACHINE_STORAGE_PATH/cache下,再重新打開Docker Quickstart Terminal

35b82cba-16c1-11ed-ba43-dac502259ad0.png

下載相應(yīng)的boot2docker.iso到MACHINE_STORAGE_PATH/cache下

再次打開terminal后,terminal會自動進行一些設(shè)置,需要點時間,全部完成后,出現(xiàn)如下結(jié)果表示docker安裝ok了:

35dddc58-16c1-11ed-ba43-dac502259ad0.png

docker啟動ok

另外,我們可以記下docker宿主機的IP 192.168.99.100,可以用xshell來ssh登錄docker宿主機方便操作,賬號和密碼是docker/tcuser:

35efbb80-16c1-11ed-ba43-dac502259ad0.png

xshell連接docker宿主機

35fbde9c-16c1-11ed-ba43-dac502259ad0.png

2、下載或制作相關(guān)鏡像

docker pull selenium/hub,它會自動從鏡像源中下載別人制作好的最新的selenium/hub鏡像,可以通過docker images看到下載好的selenium/hub鏡像

36116870-16c1-11ed-ba43-dac502259ad0.png

selenium/hub鏡像

對于seleniumnode鏡像,兼容性測試時,需要我們覆蓋更多版本的瀏覽器,所以,可以選擇自己制作Dockerfile來生成自己想要的瀏覽器版本的鏡像。

然后通過如下命令來構(gòu)建鏡像,其中selenium/vnc-node-firefox-debug是自己起的鏡像名,后面的.表示Dockerfile所在的目錄為當前目錄:

docker build -t selenium/vnc-node-firefox-debug .

用同樣的方法可以生成chrome瀏覽器的鏡像,生成后的鏡像如下圖:

3629251e-16c1-11ed-ba43-dac502259ad0.png

selenium-node-chrome/firefox鏡像

3、啟動容器

(1)啟動selenium/hub容器

docker run -p 5555:4444 -d --name 'selenium_hub' selenium/hub

run:通過鏡像啟動一個容器

-p:端口映射,5555是容器宿主機(運行docker的主機)的端口,4444是我們?nèi)萜鳎ㄟ\行selenium_hub虛擬機)的端口。我們把容器的4444端口映射給docker主機的5555端口,就可以通過docker主機的5555端口來訪問selenium_hub容器了

(2)啟動selenium/node容器

docker run -P -d --link selenium_hub:hub selenium/vnc-node-firefox-debug

docker run -P -d --link selenium_hub:hub selenium/vnc-node-chrome-debug

-P:隨機生成映射端口號,上文中的-p是指定特定的端口號,這里node并不需要知道容器內(nèi)部的端口號,所以隨機映射即可

--link:指定selenium-node容器依賴容器selenium_hub

容器啟動完后,可通過docker ps查看啟動的容器

363eb74e-16c1-11ed-ba43-dac502259ad0.png

在瀏覽器中查看selenium容器是否正常啟動,http://192.168.99.100:5555/grid/console

365af4d6-16c1-11ed-ba43-dac502259ad0.png

selenium容器啟動成功

04

多線程并發(fā)測試框架搭建

采用Python編寫多線程并發(fā)程序,robot framework執(zhí)行測試用例。

1、測試用例

在robot framework中,將測試用例打上標簽tag,來區(qū)分要測試的不同版本的不同瀏覽器,remote_url為selenium_hub容器的地址,已將該容器的4444端口映射到docker宿主機的5555端口,所以這里直接通過宿主機的5555端口訪問hub容器。

367e28a2-16c1-11ed-ba43-dac502259ad0.png

測試用例

2、多線程并發(fā)框架

多線程并發(fā)框架采用Python編寫,程序目錄如下:

368fabb8-16c1-11ed-ba43-dac502259ad0.png

各文件代碼如下:

utils.py:

369c10ce-16c1-11ed-ba43-dac502259ad0.png

utils.py

36ac124e-16c1-11ed-ba43-dac502259ad0.png

utils.py

multiThreadings.py

36c05812-16c1-11ed-ba43-dac502259ad0.png

multiThreadings.py

callRobot.py

36cd4fea-16c1-11ed-ba43-dac502259ad0.png

callRobot.py

36d9c266-16c1-11ed-ba43-dac502259ad0.png

callRobot.py

run.py

36eb8e10-16c1-11ed-ba43-dac502259ad0.png

run.py

腳本run.py接收兩個參數(shù),第1個參數(shù)為要執(zhí)行的robot測試套件,第2個參數(shù)為要執(zhí)行的robot用例的標簽,各標簽之間以逗號分隔,有多少個標簽,就啟動多少個線程來調(diào)用robot的pybot命令執(zhí)行打上相應(yīng)標簽的測試用例。

05

運行

這里開啟2個node節(jié)點,一個chrome,一個firefox。

cmd下執(zhí)行腳本,robot測試套件名為TestSuite.txt,執(zhí)行標簽為chromeNode1,firefoxNode1的測試用例:

python run.py TestSuite.txt selenium_node=chromeNode1,firefoxNode1

docker宿主機下,執(zhí)行docker logs -f selenium_hub,可以查看hub容器的執(zhí)行日志:

36feec76-16c1-11ed-ba43-dac502259ad0.png

selenium_hub容器日志

通過vnc viwer可視化查看node容器內(nèi)瀏覽器的運行情況:

3710c8ce-16c1-11ed-ba43-dac502259ad0.png

node容器內(nèi)瀏覽器運行情況

最終用rebot命令合并各線程生成的測試報告,合并后的報告如下:

37325890-16c1-11ed-ba43-dac502259ad0.png

合并報告

至此,基于docker的selenium并發(fā)web應(yīng)用UI自動化測試框架搭建完成。之后,自己會再探究將docker容器的創(chuàng)建,啟動和停止自動化,實現(xiàn)測試環(huán)境的自動化搭建

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 自動化
    +關(guān)注

    關(guān)注

    31

    文章

    5993

    瀏覽量

    90717
  • 虛擬機
    +關(guān)注

    關(guān)注

    1

    文章

    975

    瀏覽量

    30727
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    537

    瀏覽量

    14433

原文標題:城會玩!Selenium+Docker成功解決這一大難題!

文章出處:【微信號:全棧軟件測試在線,微信公眾號:全棧軟件測試在線】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Java并發(fā)編程的“基石”——多線程概念初識

    。Java 的內(nèi)存可見性機制(如 happens-before 原則)能夠確保在極端并發(fā)下,任何一個調(diào)度節(jié)點看到的集群狀態(tài)都是一致且準確的,從根本上杜絕了“腦裂”和資源超賣。 其次是 精妙的多線程協(xié)同
    發(fā)表于 04-16 18:50

    通用自動化測試系統(tǒng):FCT、ATE、ICT、PCBA功能測試

    在現(xiàn)代制造業(yè)中,自動化測試已經(jīng)成為提高生產(chǎn)效率、降低錯誤率、提升產(chǎn)品質(zhì)量的關(guān)鍵環(huán)節(jié)。尤其是在電子產(chǎn)品的測試過程中,F(xiàn)CT(功能測試)、ATE(自動測
    發(fā)表于 04-13 14:54

    ATE測試是什么?電源企業(yè)為什么必須上自動化測試?

    在電源行業(yè)快速發(fā)展的年代,產(chǎn)品質(zhì)量、生產(chǎn)效率與成本控制成為企業(yè)競爭的關(guān)鍵。很多電源廠家都在關(guān)注ATE 測試,但不少人仍不清楚 ATE測試是什么,也不明白自動化測試對于電源生產(chǎn)的重要意義
    的頭像 發(fā)表于 03-24 14:37 ?373次閱讀
    ATE<b class='flag-5'>測試</b>是什么?電源企業(yè)為什么必須上<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>?

    自動化測試的「千里眼」:當RTSM遠程控制遇上自動化,測試效率直接拉滿!

    自動化痛點】自動化測試的“黑箱困境”:你真的敢說“完全放心”? 凌晨2點,測試工程師小李盯著電腦屏幕上的自動化腳本進度條——第17步卡住了
    的頭像 發(fā)表于 12-11 11:26 ?513次閱讀
    <b class='flag-5'>自動化</b><b class='flag-5'>測試</b>的「千里眼」:當RTSM遠程控制遇上<b class='flag-5'>自動化</b>,<b class='flag-5'>測試</b>效率直接拉滿!

    多線程的系統(tǒng)

    多線程系統(tǒng)的事件響應(yīng)也是在中斷中完成的,但事件的處理是在線程中完成的。在多線程系統(tǒng)中,線程跟中斷一樣,也具有優(yōu)先級,優(yōu)先級高的線程會被優(yōu)先執(zhí)
    發(fā)表于 12-08 07:55

    Linux多線程對比單線程的優(yōu)勢

    。「提高響應(yīng)性」:線程可以使程序更加響應(yīng)用戶輸入或其他事件,避免阻塞。線程相比單線程的優(yōu)點:「并發(fā)性」:多線程可以同時執(zhí)行多個任務(wù),而單
    發(fā)表于 12-01 06:11

    CI/CT自動化測試解決方案

    北匯信息可以提供Jenkins、Gitlab Runner CI和自研平臺等的CI/CT整體解決方案,通過CI/CT自動化測試執(zhí)行、測試策略定制、測試任務(wù)
    的頭像 發(fā)表于 11-12 16:01 ?1631次閱讀
    CI/CT<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>解決方案

    測試小白3分鐘上手,零代碼自動化測試平臺,15分鐘搭建自動化測試方案

    還在為不懂代碼、搭建測試方案耗時久而發(fā)愁?ATECLOUD 零代碼自動化測試平臺,專為自動化測試量身打造,小白3 分鐘就能輕松上手,15 分
    的頭像 發(fā)表于 09-22 17:52 ?1063次閱讀
    <b class='flag-5'>測試</b>小白3分鐘上手,零代碼<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>平臺,15分鐘搭建<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>方案

    電源模塊的短路保護如何通過自動化測試軟件完成測試

    在當今電力電子領(lǐng)域,電源模塊的可靠性至關(guān)重要,短路保護作為其關(guān)鍵特性,需通過精確的自動化測試軟件進行驗證。本文將整理如何借助自動化測試軟件ATECLOUD完成電源模塊短路保護的
    的頭像 發(fā)表于 09-03 19:10 ?1059次閱讀
    電源模塊的短路保護如何通過<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>軟件完成<b class='flag-5'>測試</b>

    BitsButton嵌入式按鍵處理框架

    支持 按鍵結(jié)果高性能緩沖區(qū)支持 按鍵模擬器Window環(huán)境支持 按鍵模擬器Linux/macOS環(huán)境支持 自動化測試框架支持 ? 已完成完整測試
    發(fā)表于 08-02 11:24

    除了LabVIEW還有哪些自動化測試的軟件?

    NI 開發(fā)的 LabVIEW 軟件在工業(yè)控制領(lǐng)域中一直占有舉足輕重的地位,其市場占有率在一眾平臺中也是領(lǐng)先的,那么除了 LabVIEW 拿有哪些自動化測試的軟件?本文將介紹一些自動化測試
    的頭像 發(fā)表于 07-30 17:18 ?1283次閱讀
    除了LabVIEW還有哪些<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>的軟件?

    自動化測試平臺ATECLOUD推出AI算法功能

    作為納米軟件自主研發(fā)的自動化測試平臺,ATECLOUD 始終致力于為用戶提供高效優(yōu)質(zhì)的測試解決方案。面對5G、AI等前沿技術(shù)的迭代發(fā)展,平臺深度融合新技術(shù)持續(xù)升級測試能力,最新推出的A
    的頭像 發(fā)表于 07-22 16:10 ?1037次閱讀
    <b class='flag-5'>自動化</b><b class='flag-5'>測試</b>平臺ATECLOUD推出AI算法功能

    多線程的安全注意事項

    多線程安全是指多個線程同時訪問或修改共享資源時,能夠保證程序的正確性和可靠性。 開發(fā)者選擇TaskPool或Worker進行多線程開發(fā)時,在TaskPool和Worker的工作線程中導(dǎo)
    發(fā)表于 06-20 07:49

    鴻蒙5開發(fā)寶藏案例分享---應(yīng)用并發(fā)設(shè)計

    ?** 鴻蒙并發(fā)編程實戰(zhàn)指南:解鎖ArkTS多線程黑科技** 嘿,開發(fā)者朋友們! 今天給大家扒一扒鴻蒙官方文檔里藏著的并發(fā)編程寶藏—— 100+實戰(zhàn)場景解決方案 !從金融理財?shù)接螒蜷_發(fā),從折疊屏適配
    發(fā)表于 06-12 16:19

    UTP系統(tǒng)通過ModBus協(xié)議對溫度傳感器的自動化測試介紹

    一、UTP系統(tǒng)簡介 宏控UTP協(xié)同自動化測試系統(tǒng)(簡稱UTP測試系統(tǒng))是一款通用的自動化測試系統(tǒng),支持對總線通信(如串口、CAN、以太網(wǎng)等)
    的頭像 發(fā)表于 06-07 15:12 ?999次閱讀
    UTP系統(tǒng)通過ModBus協(xié)議對溫度傳感器的<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>介紹
    云安县| 宝清县| 达拉特旗| 惠安县| 凯里市| 昌邑市| 宝清县| 泗洪县| 张掖市| 潞西市| 泸西县| 平舆县| 建平县| 潍坊市| 九龙坡区| 泽普县| 罗甸县| 云龙县| 江阴市| 白城市| 锡林浩特市| 务川| 双流县| 七台河市| 红原县| 太仆寺旗| 治县。| 微山县| 新津县| 甘孜县| 炉霍县| 马关县| 夹江县| 南川市| 武隆县| 周口市| 横峰县| 临夏市| 分宜县| 广丰县| 库尔勒市|