自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

給初學(xué)者的自動(dòng)化跨瀏覽器兼容性測(cè)試指南

譯文
移動(dòng)開發(fā) Android 自動(dòng)化
本文討論了跨瀏覽器兼容性的需求、定義、方法、流程和工具,并以示例的形式深入探討具體測(cè)試代碼的編寫。

[[380332]]

【51CTO.com快譯】根據(jù)StatCounter的一項(xiàng)統(tǒng)計(jì):在亞洲,有82%的移動(dòng)用戶使用著Android,在iOS上的用戶數(shù)占比為17%,而其他操作系統(tǒng)的使用者則不到1%。在美國(guó),有61%的人使用著iOS,只有38%的人使用Android。而且仍有10.5%的Windows用戶仍在使用著Windows 7。在用戶設(shè)備的默認(rèn)/首選分辨率方面,有著360x640像素、1366x768像素和1920x1080像素等不同的規(guī)格。可見,就全球范圍而言,Android主導(dǎo)著操作系統(tǒng)市場(chǎng),其次則為Windows、iOS和OSX。同樣,瀏覽器的市場(chǎng)以Chrome為主,其次是Safari、Firefox、Samsung Internet、Edge、Opera和UC Browser。

最常見的跨瀏覽器兼容性問題

如今,各種Web應(yīng)用往往是通過復(fù)雜的CSS、HTML5、JS和其他幾個(gè)框架來構(gòu)建的。不過,并非每個(gè)用戶端的瀏覽器都會(huì)通過自我升級(jí),來支持開發(fā)人員部署的各項(xiàng)新功能。據(jù)此,我們需要通過測(cè)試,來提前處置如下常見的跨瀏覽器兼容性問題:

  • 瀏覽器的各個(gè)版本均不支持某些HTML5標(biāo)簽。
  • 不支持復(fù)雜的CSS、AJAX、JS、Flex功能,或在實(shí)現(xiàn)行為上有所差異。
  • 并非所有的瀏覽器都支持所有的圖像格式(特別是PNG問題在一些舊版的IE瀏覽器上比較普遍)
  • 并非所有的媒體格式都能夠得到支持(例如iPhone和Blackberry上的Flash問題)
  • 設(shè)備本身的限制。例如,殘障人士的屏幕閱讀器應(yīng)用可能不支持網(wǎng)站內(nèi)容的正常顯示。

因此,在數(shù)字化設(shè)備和用戶偏好紛繁復(fù)雜的情況下,企業(yè)為了保證用戶的UI/UX,需要仔細(xì)考慮如下問題:

  • 如何以經(jīng)濟(jì)高效的方式為所有用戶設(shè)計(jì)、開發(fā)和部署出健壯的應(yīng)用程序?
  • 如何確保應(yīng)用程序能夠適用于所有用戶?
  • 如何在客戶使用的各種設(shè)備、操作系統(tǒng)、瀏覽器和屏幕分辨率上,提供無縫的用戶體驗(yàn)?

雖然在不同的場(chǎng)景下,上述問題有著不同的優(yōu)先級(jí),但是它們都引出了跨瀏覽器兼容性測(cè)試(https://www.lambdatest.com/feature),這一主題。

什么是跨瀏覽器測(cè)試?

簡(jiǎn)而言之,跨瀏覽器兼容性測(cè)試是在各種設(shè)備、操作系統(tǒng)、瀏覽器、及其不同版本上對(duì)Web應(yīng)用進(jìn)行檢查、驗(yàn)證、以及迭代式增強(qiáng),使其能夠?qū)λ杏脩籼峁┱7?wù)的方法。例如,對(duì)于擁有數(shù)十億用戶的Facebook之類的大型應(yīng)用而言,在理想情況下,我們應(yīng)當(dāng)進(jìn)行針對(duì)“瀏覽器A,版本B,操作系統(tǒng)C,屏幕分辨率D”等所有組合的測(cè)試。

手動(dòng)與自動(dòng)化跨瀏覽器測(cè)試

跨瀏覽器測(cè)試主要分為三大類:探索性測(cè)試、視覺測(cè)試和功能性測(cè)試。除了視覺測(cè)試需要手動(dòng)開展之外,其他兩類測(cè)試都可由自動(dòng)化來完成。手動(dòng)測(cè)試的弊端主要體現(xiàn)在:不僅耗費(fèi)時(shí)間和資源,而且測(cè)試的覆蓋面可能不夠全面。因此,我們通常需要采用混合的測(cè)試策略。也就是說,開展跨瀏覽器兼容性測(cè)試的工程師,往往需要具備腳本的編寫能力,可以使用Selenium,以及其他編程語言(如:Java、Python、C#、JS、PHP等),通過自動(dòng)化的方式,來執(zhí)行各項(xiàng)測(cè)試任務(wù)。據(jù)此,他們可以:

  • 以自動(dòng)化的方式,查看目標(biāo)站點(diǎn)的所有HTML、JS和CSS代碼,盡早發(fā)現(xiàn)它們?cè)诓煌瑸g覽器上顯示和運(yùn)行時(shí)的錯(cuò)誤與警告。
  • 自動(dòng)獲取Web元素的屏幕快照,以便開展交叉驗(yàn)證。
  • 人工判斷受測(cè)站點(diǎn)的美觀性和對(duì)殘障人士的操作友好性。

在此基礎(chǔ)上,自動(dòng)化跨瀏覽器兼容性測(cè)試的好處主要體現(xiàn)在如下方面:

  • 提供無縫的用戶體驗(yàn),保證內(nèi)部版本的兼容性和質(zhì)量。
  • 盡早、盡快地識(shí)別并評(píng)估可用性或功能性上的風(fēng)險(xiǎn),進(jìn)而按風(fēng)險(xiǎn)的優(yōu)先級(jí)予以修復(fù)。
  • 作為CI/CD管道實(shí)施的關(guān)鍵階段,自動(dòng)化測(cè)試通過將Selenium之類的自動(dòng)化工具,集成到DevOps的自動(dòng)化策略中,可以縮短代碼的發(fā)布周期。
  • 測(cè)試團(tuán)隊(duì)可以更加專注于編寫健壯的腳本,而將繁瑣的測(cè)試基礎(chǔ)架構(gòu),交給諸如LambdaTest之類的云測(cè)試自動(dòng)化服務(wù)。
  • 通過基于云的解決方案,我們不但可以避免人為的錯(cuò)誤,而且能夠一次性測(cè)試2000多種瀏覽器與設(shè)備的組合,以保障測(cè)試的覆蓋率和準(zhǔn)確性。

如何開展有效的跨瀏覽器兼容性測(cè)試?

通常,我們需要通過如下四個(gè)階段,來完成跨瀏覽器的測(cè)試。

  • 設(shè)計(jì)

此階段涉及到徹底調(diào)查應(yīng)用程序的目標(biāo)市場(chǎng),收集所需的可用性需求,通過設(shè)計(jì)測(cè)試路線圖,以確保應(yīng)用能夠被成功地開發(fā)和部署。例如,如果您要為印度市場(chǎng)(那里仍有許多人在使用IE)構(gòu)建B2B產(chǎn)品,而且該產(chǎn)品中需提供一個(gè)由WebGL支持的3D動(dòng)畫效果。那么,您需要考慮的一個(gè)因素便是:是否要支持IE 11之前的版本。如果確實(shí)無法支持的話,產(chǎn)品應(yīng)當(dāng)能夠在舊的版本上,讓應(yīng)用并不呈現(xiàn)此功能,以免破壞用戶的UI/UX。

  • 開發(fā)

在此階段,您需要將應(yīng)用程序細(xì)化為單獨(dú)的組件,以分解出不同的功能模塊。據(jù)此,您可以為那些可能無法在各種瀏覽器或設(shè)備上良好呈現(xiàn)的功能,設(shè)計(jì)出獨(dú)立的代碼方案。此外,開發(fā)人員也需要考慮到硬件方面的限制,某些功能可能根本無法在某些設(shè)備上實(shí)現(xiàn),因此需要事先設(shè)計(jì)好替代方法。

  • 測(cè)試

自動(dòng)化測(cè)試工程師將在該階段,通過如下方法測(cè)試每個(gè)新構(gòu)建的功能:

首先,在穩(wěn)定的主流瀏覽器(如:Safari、Chrome和Firefox)上測(cè)試應(yīng)用程序,并確認(rèn)不會(huì)出現(xiàn)任何妨礙應(yīng)用呈現(xiàn)的錯(cuò)誤。

接著,可以嘗試使用lo-fi(低保真)的可訪問性測(cè)試,來交叉驗(yàn)證應(yīng)用是否需要少量的輔助技術(shù)(例如:僅適用于鍵盤或屏幕閱讀器的環(huán)境)。

通過仿真器或虛擬機(jī)(當(dāng)然如果買得起真實(shí)的物理設(shè)備則更好),進(jìn)行不同設(shè)備、瀏覽器、及其版本的組合測(cè)試。

使用自動(dòng)測(cè)試工具(如:Selenium Grid)或商業(yè)服務(wù)(如:LambdaTest)來進(jìn)一步提高跨瀏覽器兼容性測(cè)試的準(zhǔn)確性、速度、以及瀏覽器環(huán)境的覆蓋率。

其中,跨瀏覽器兼容性測(cè)試的要點(diǎn)清單可以總結(jié)為如下方面:

  • HTML、xHTML、jQUERY、CSS、JS、AJAX的驗(yàn)證
  • SSL證書的驗(yàn)證
  • HTML字符的編碼和日期格式
  • 在不同的屏幕分辨率下,呈現(xiàn)響應(yīng)式應(yīng)用
  • 不同瀏覽器中布局的一致性,包括:字體樣式、色彩渲染、導(dǎo)航、客戶端表單驗(yàn)證、縮放功能等
  • 各種效果與功能,包括:動(dòng)畫、鏈接、插件、腳本等
  • 持續(xù)迭代測(cè)試和開發(fā)

該階段需要查找我們?cè)谏鲜鰷y(cè)試階段產(chǎn)生的錯(cuò)誤、及其根本原因,進(jìn)而縮小存在此類錯(cuò)誤的瀏覽器版本、設(shè)備、分辨率的范圍。當(dāng)然,錯(cuò)誤的原因可能并非來自應(yīng)用的本身,也可能是瀏覽器或設(shè)備廠商造成的。因此,我們通過在類似的瀏覽器或設(shè)備進(jìn)行深入測(cè)試,以評(píng)估錯(cuò)誤的規(guī)模,進(jìn)而報(bào)告給有關(guān)的開發(fā)團(tuán)隊(duì)。

跨瀏覽器兼容性測(cè)試的推薦工具和基于云的服務(wù)

目前,最受歡迎的Web和移動(dòng)測(cè)試開源框架有:

  • Selenium
  • Appium
  • 基于商業(yè)云的跨瀏覽器測(cè)試應(yīng)用,例如LamdbaTest之類基于云端的跨瀏覽器測(cè)試解決方案,提供了AI驅(qū)動(dòng)測(cè)試、團(tuán)隊(duì)協(xié)作、增強(qiáng)的可視性、并行測(cè)試、自動(dòng)化測(cè)試、按需擴(kuò)容、布局截圖捕獲、以及錄制測(cè)試會(huì)話等高級(jí)功能。

下面,我為您列出了提交和報(bào)告不同瀏覽器錯(cuò)誤的對(duì)應(yīng)鏈接:

而以下是各大主流瀏覽器平臺(tái)的開發(fā)者測(cè)試鏈接。您可以有針對(duì)性地對(duì)即將發(fā)布的應(yīng)用進(jìn)行測(cè)試:

跨瀏覽器測(cè)試的示例

總的說來,我們首先會(huì)在云端使用LambdaTest的免費(fèi)版本設(shè)計(jì)自動(dòng)化測(cè)試。接著,我們將使用Python在“jqueryui.com”上構(gòu)建具有拖放功能的HTML元素。然后,我們將在Chrome和Firefox中測(cè)試此功能。當(dāng)然,您也可以在其他瀏覽器版本、操作系統(tǒng)、以及屏幕分辨率上開展測(cè)試。

下面便是被部署在虛擬環(huán)境中的lambdatest_crossbrowser.py文件里的Java測(cè)試代碼。 

  1. from selenium import webdriver 
  2. from selenium.webdriver.common.action_chains import ActionChains 
  3. import time   
  4.  
  5. username = "hustlewiz247"  
  6. accessToken = "1BtTGpkzkYeOKJiUdivkWxvmHQppbahpev3DpcSfV460bXq0GC"  
  7. gridUrl = "hub.lambdatest.com/wd/hub"  
  8. browsers = [  
  9.     {  
  10.         "browser":"Chrome" 
  11.         "version":"71.0" 
  12.     },  
  13.     {  
  14.         "browser":"Firefox"
  15.         "version":"71.0" 
  16.     }  
  17.    
  18. for cap in browsers: 
  19.     desired_cap = {  
  20.         'platform' : "win10" 
  21.         'browserName' : cap["browser"],  
  22.         'version' :  cap["version"],  
  23.         "resolution""1024x768" 
  24.         "name""LambdaTest Cross Browser Compatibility Testing" 
  25.         "build""LambdaTest Cross Browser Compatibility Testing" 
  26.         "network"True 
  27.         "video"True
  28.         "visual"True 
  29.         "console"True 
  30.     } 
  31.     url = "https://"+username+":"+accessToken+"@"+gridUrl  
  32.     print("Initiating remote driver on platform: "+desired_cap["platform"]+" browser: "+desired_cap["browserName"]+" version: "+desired_cap["version"]) 
  33.     driver = webdriver.Remote(  
  34.         desired_capabilities=desired_cap, 
  35.         command_executor= url 
  36.     ) 
  37.     driver.maximize_window()  
  38.     driver.get('https://jqueryui.com/draggable/'
  39.     driver.switch_to.frame(0)  
  40.     source1 = driver.find_element_by_id('draggable' 
  41.     action = ActionChains(driver) 
  42.     action.click_and_hold(source1).move_by_offset(150, 100).pause(2).move_by_offset(-10, -10).release().perform() 
  43.     print("Dragged successfully\n" 
  44.     time.sleep(5) 
  45.     driver.get('https://jqueryui.com/droppable/'
  46.     driver.switch_to.frame(0) 
  47.     source1 = driver.find_element_by_id('draggable' 
  48.     target1 = driver.find_element_by_id('droppable' 
  49.     actions2 = ActionChains(driver)  
  50.     actions2.click_and_hold(source1).move_to_element(target1).pause(2).move_by_offset(20, 20).release().perform() 
  51.     print("Dragged and dropped successfully\n" 
  52.     time.sleep(5)  
  53.     if target1.text == "Dropped!"
  1.     print("Test Executed Successfully On : " + str(cap["browser"]))
  2. time.sleep(2)  
  3.     driver.quit() 

以下Java代碼是從Selenium庫(kù)中導(dǎo)入的webdriver和actionchains類。 

  1. from selenium import webdriver 
  2. from selenium.webdriver.common.action_chains import ActionChains 

 上述代碼導(dǎo)入了一個(gè)內(nèi)置了Python包的時(shí)間模塊,它可以將程序的執(zhí)行暫停指定的秒數(shù)。接著,我們通過如下代碼,設(shè)置LambdaTest的用戶身份驗(yàn)證代碼,配置用戶名、訪問令牌和gridUrl。你可以在LambdaTest的自動(dòng)化儀表板(https://automation.lambdatest.com/)中找到相關(guān)內(nèi)容。 

  1. username = "your username" 
  2.  
  3. accessToken = "your access token" 
  4.  
  5. gridUrl = "hub.lambdatest.com/wd/hub" 

我們會(huì)在不同瀏覽器中創(chuàng)建一個(gè)目錄,以便針對(duì)應(yīng)用程序開展交叉測(cè)試。在此,我們以Chrome v71.0和Firefox v71.0兩個(gè)瀏覽器為例,通過“瀏覽器”和“版本”的鍵-值對(duì),指定需要測(cè)試應(yīng)用的目標(biāo)瀏覽器,及其特定版本。 

  1. browsers = [ 
  2.     { 
  3.         "browser":"Chrome"
  4.         "version":"71.0" 
  5.     }, 
  6.     { 
  7.         "browser":"Firefox"
  8.         "version":"71.0" 
  9.     } 

 我們通過for cap in browsers:來遍歷瀏覽器字典,進(jìn)而對(duì)Chrome和Firefox進(jìn)行功能上的交叉測(cè)試。而在cap字典中,我們?yōu)閘amdatest自動(dòng)化測(cè)試的selenium grid指定測(cè)試的配置環(huán)境。如下代碼中的“Platform”指定了目標(biāo)操作系統(tǒng),后續(xù)還包括:瀏覽器名稱、分辨率等方面。 

  1. desired_cap = { 
  2.         'platform' : "win10"
  3.         'browserName' : cap["browser"], 
  4.         'version' :  cap["version"], 
  5.         "resolution""1024x768"
  6.         "name""LambdaTest Cross Browser Compatibility Testing"
  7.         "build""LambdaTest Cross Browser Compatibility Testing"
  8.         "network"True
  9.         "video"True
  10.         "visual"True
  11.         "console"True
  12.     } 

 我們通過如下URL的command_executor,來指定遠(yuǎn)程服務(wù)器的地址位置: 

  1. url = "https://"+username+":"+accessToken+"@"+gridUrl 

同時(shí),我們運(yùn)用如下Java代碼來創(chuàng)建瀏覽器驅(qū)動(dòng)程序的實(shí)例: 

  1. driver = webdriver.Remote( 
  2.         desired_capabilities=desired_cap, 
  3.         command_executor= url 

 我們可以通過執(zhí)行driver.maximize_window()來最大化瀏覽器窗口。而為了在遠(yuǎn)程瀏覽器中獲取URL,以測(cè)試拖放功能,我們使用

在此,我們可以觀察到該網(wǎng)站在iFrame中帶有拖放功能。因此我們需要通過driver.switch_to.frame(0)換到第0幀,以實(shí)現(xiàn)與該iFrame中的HTML元素進(jìn)行交互。此外,我們還可以通過source1 = driver.find_element_by_id('draggable'),來查找可拖放的HTML元素。

同時(shí),我們通過action = ActionChains(driver),來創(chuàng)建一個(gè)Actionchains方法的別名。而selenium中的Actionchains類可以實(shí)現(xiàn)與瀏覽器元素的硬件交互。

下面的代碼負(fù)責(zé)創(chuàng)建:?jiǎn)螕艨赏蟿?dòng)元素,將其保持一會(huì)兒,將源組件移動(dòng)到另一個(gè)位置,最后釋放它,以及打印出參考消息等一系列操作。在實(shí)際的操作中,您可以單擊屏幕快照、或調(diào)用用于觸發(fā)電子郵件及通知的API,然后發(fā)送成功與否的通知。 

  1. action.click_and_hold(source1).move_by_offset(150, 100).pause(2).move_by_offset(-10, -10).release().perform() 
  2.     print("Dragged successfully\n"

如果您想在本地系統(tǒng)的測(cè)試中觀察得更加仔細(xì),那么可以調(diào)用“time”包中的“sleep”方法,通過time.sleep(5),來暫停一段時(shí)間。

下面,我們?cè)跒g覽器中獲取另一個(gè)URL--driver.get,以測(cè)試“拖放”功能。

如前所述,我們通過driver.switch_to.frame(0),可以切換到iFrame的第0幀,以便進(jìn)行可拖動(dòng)和可放置的元素交互。

為了將source1(draggable)元素拖到source2(droppable),我們可以使用如下Java代碼段,獲得可拖動(dòng)的HTML元素位置、以及可拖放的HTML元素位置。 

  1. source1 = driver.find_element_by_id('draggable'
  2.    target1 = driver.find_element_by_id('droppable'

而為了放到特定元素上,我們可以通過如下Java代碼創(chuàng)建了一系列的拖動(dòng)動(dòng)作。 

  1. actions2 = ActionChains(driver) 
  2.     actions2.click_and_hold(source1).move_to_element(target1).pause(2).move_by_offset(20, 20).release().perform() 
  3.     print("Dragged and dropped successfully\n"
  4.     time.sleep(5) 

 在源元素被放到目標(biāo)位置時(shí),我們將文本更改為“Dropped!”,以對(duì)其進(jìn)行交叉驗(yàn)證,并在受測(cè)瀏覽器中顯示一條輸出消息。 

  1. if target1.text == "Dropped!"
  2.         print("Test Executed Successfully On : " + str(cap["browser"])) 
  3.     time.sleep(2) 

我們使用driver.quit(),來退出已啟動(dòng)的瀏覽器實(shí)例。具體負(fù)載執(zhí)行的終端命令為:python your_test_file_name.py。而在成功執(zhí)行后,我們將在LambdaTest的儀表板上看到如下信息為:

同時(shí)在終端上的顯示信息為:

如您所見,該測(cè)試首先運(yùn)行在Chrome上,然后運(yùn)行在Firefox上。其實(shí),LambdaTest也提供了一個(gè)功能生成器,可以幫助您輕松地設(shè)定各種所需的瀏覽器和操作系統(tǒng)功能。

小結(jié)

作為測(cè)試人員,您往往肩負(fù)著確保被測(cè)應(yīng)用能夠在各種設(shè)備和瀏覽器之間的平穩(wěn)運(yùn)行的使命。而跨瀏覽器測(cè)試技能正是測(cè)試人員武器庫(kù)中,最有效的武器之一。我們既需要人工進(jìn)行測(cè)試結(jié)果的判斷,也需要自動(dòng)化工具來簡(jiǎn)化測(cè)試的相關(guān)基礎(chǔ)架構(gòu),增強(qiáng)測(cè)試效率與能力,不斷提高測(cè)試的覆蓋面和準(zhǔn)確度。

原文標(biāo)題:A Beginner’s Guide to Automated Cross-Browser Compatibility Testing,作者:Jaswant Kaur

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2024-01-12 14:37:29

智能家居人工智能

2022-04-07 09:00:00

跨瀏覽器測(cè)試自動(dòng)化服務(wù)異常

2010-10-08 15:00:08

FirefoxJavaScript兼

2011-04-12 10:13:24

2013-07-09 11:04:13

2022-04-24 15:21:01

MarkdownHTML

2011-03-02 10:57:27

vsFTPd

2022-12-16 09:01:24

2021-05-10 08:50:32

網(wǎng)絡(luò)管理網(wǎng)絡(luò)網(wǎng)絡(luò)性能

2022-03-28 09:52:42

JavaScript語言

2023-07-28 07:31:52

JavaScriptasyncawait

2023-07-03 15:05:07

預(yù)測(cè)分析大數(shù)據(jù)

2022-10-10 15:28:45

負(fù)載均衡

2019-10-23 09:00:00

瀏覽器測(cè)試工具兼容性

2011-07-04 14:14:54

java

2010-06-13 11:13:38

UML初學(xué)者指南

2022-07-22 13:14:57

TypeScript指南

2011-05-11 18:00:10

HTML5兼容性

2021-03-25 14:43:13

谷歌微軟瀏覽器

2010-08-26 15:47:09

vsftpd安裝
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)