自動(dòng)化測(cè)試何時(shí)切入?為何選擇selenium做UI自動(dòng)化?

一、什么時(shí)候引入自動(dòng)化測(cè)試?
看了那么多文章,我們不談虛的,今天就聊點(diǎn)實(shí)際的,我們什么階段需要引入AutoTest呢?
毋庸置疑的告訴你是當(dāng)case越來(lái)越多,而產(chǎn)品迭代周期不變的情況下,總有一天,現(xiàn)有團(tuán)隊(duì)無(wú)法在上線之前把所有的case執(zhí)行完,此時(shí)我們需要更有效率的用例執(zhí)行方式。同時(shí)測(cè)試人員總是需要重復(fù)執(zhí)行同樣的TestCase,時(shí)間長(zhǎng)了會(huì)產(chǎn)生疲憊感,我們此時(shí)就會(huì)想辦法把一些枯燥的工作交給自動(dòng)化程序去執(zhí)行。
二、為何選型selenium自動(dòng)化測(cè)試工具?
在web自動(dòng)化測(cè)試中,用得較多的主要有以下框架Selenium、Cypress、Playwright、Puppeter....以下是Selenium在各方面技術(shù)/特性與其他測(cè)試框架的對(duì)比
腳本語(yǔ)言支持方面,Selenium、Playwright支持的最多。因?yàn)椴煌墓尽⒉煌募夹g(shù)棧,程序員使用的語(yǔ)言都不一樣,支持的語(yǔ)言更多占據(jù)的優(yōu)勢(shì)就更大,因此Selenium擁有了更多的潛在用戶群體
從瀏覽器的支持程度來(lái)看,TestCafe支持的最多,Selenium與其他幾個(gè)框架則大同小異,而Cypress支持的相對(duì)較少,且不支持運(yùn)用廣泛的IE和Safari瀏覽器
多Tab,iFrame支持及并行測(cè)試方面,Selenium也都是支持的,而Cypress則都不支持
原生DOM選擇器方面,雖然Playwright(到底是微軟)支持的最多,但Selenium也能夠支持主流的兩種選擇器CSS和XPath
在錄制插件和解決方案方面,Selenium也是做得比較好的。Protractor、WebDriverIO因?yàn)楹蚐elenium同宗同源,所以差異不大。而Cypress、TestCafe、Playwright在這兩方面則相對(duì)較差,都沒(méi)有比較好的解決方案。
三、Selenium特點(diǎn)
開(kāi)源軟件:源代碼開(kāi)放可以根據(jù)需要來(lái)增加工具的某些功能
跨平臺(tái):Linux、windows、mac
支持多種瀏覽器:Firefox、Chrome、IE、Edge、Opera、Safari等
支持多種語(yǔ)言:Python、Java、C#、JavaScript、Ruby、PHP等
成熟穩(wěn)定:目前已經(jīng)被Google、百度、騰訊等公司廣泛使用
功能強(qiáng)大:能夠?qū)崿F(xiàn)類似商業(yè)工具的大部分功能嗎,因?yàn)殚_(kāi)源性,可實(shí)現(xiàn)定制化功能
四、Selenium的短板在哪里?
當(dāng)然,作為軟件開(kāi)發(fā)的從業(yè)者,選擇某一種技術(shù)必然要承擔(dān)其技術(shù)負(fù)債。Selenium雖然具備以上提及的多種優(yōu)點(diǎn),但Selenium有以下4個(gè)方面的困難。而這4個(gè)困難恰恰是當(dāng)今UI自動(dòng)化不被看好的主要原因
元素定位困難。隨著打包編譯等技術(shù)的不斷發(fā)展,使用了新的現(xiàn)代化的條件渲染引擎后,頁(yè)面元素定位復(fù)雜多變,依靠Selenium中原有的ID、CSS、XPath等選擇器編寫(xiě)的腳本有時(shí)候不能很好地工作,原先的定位方式不再適用
等待元素?zé)o法做到自動(dòng)等待。當(dāng)測(cè)試運(yùn)行的服務(wù)發(fā)生異常、資源不夠或者網(wǎng)絡(luò)擁堵時(shí),頁(yè)面元素的渲染時(shí)間會(huì)受到影響。由于Selenium是通過(guò)WebDriver控制瀏覽器,需要用戶自己去管理等待時(shí)間,而這個(gè)時(shí)間通常都是不太固定的
插件錄制會(huì)把不必要的步驟錄制下來(lái)。所有的錄制插件都會(huì)錄制非常多的不必要步驟,比如點(diǎn)擊一個(gè)按鈕,插件會(huì)把鼠標(biāo)移動(dòng)的過(guò)程也錄制進(jìn)去
人工維護(hù)元素定位非常困難,工作量非常大。當(dāng)UI測(cè)試的用例數(shù)量愈加龐大,元素定位的維護(hù)就會(huì)變得相當(dāng)困難,當(dāng)需求發(fā)生變更時(shí),頁(yè)面也可能隨之發(fā)生改變。而這一改變對(duì)于不熟知前端代碼的測(cè)試人員來(lái)說(shuō)通常是難以察覺(jué)的
五、總結(jié)
Selenium在腳本語(yǔ)、瀏覽器持、并發(fā)、分布式,以及插件錄制、視頻錄制都有完整的案例,開(kāi)源、多平臺(tái)、多瀏覽器、API齊全、技術(shù)架構(gòu)也在不停的演化升級(jí)維護(hù),你有任何技術(shù)問(wèn)題在搜索引擎去檢索基本都可以搜索到解決方案,目前就企業(yè)測(cè)試團(tuán)隊(duì)使用selenium的用戶群體居多,所以選擇了selenium!



作者: Python測(cè)試社區(qū)


歡迎關(guān)注微信公眾號(hào) :Python測(cè)試社區(qū)