原創(chuàng)|行業(yè)資訊|編輯:鄭恭琳|2020-05-27 15:46:38.710|閱讀 298 次
概述:很明顯,Selenium是使UI測(cè)試自動(dòng)化的組織的最受歡迎的選擇,但是團(tuán)隊(duì)仍然面臨著挑戰(zhàn)。了解如何解決這些挑戰(zhàn)而不完全放棄該框架。 當(dāng)我們對(duì)UI測(cè)試工具進(jìn)行調(diào)查時(shí),很明顯Selenium已成為事實(shí)上的標(biāo)準(zhǔn)。但是奇怪的是,無(wú)論我們問(wèn)誰(shuí),我們總是有同樣的警告:“我們愛(ài)Selenium,但也有挑戰(zhàn)。”
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
很明顯,Selenium是使UI測(cè)試自動(dòng)化的組織的最受歡迎的選擇,但是團(tuán)隊(duì)仍然面臨著挑戰(zhàn)。了解如何解決這些挑戰(zhàn)而不完全放棄該框架。
當(dāng)我們對(duì)UI測(cè)試工具進(jìn)行調(diào)查時(shí),很明顯Selenium已成為事實(shí)上的標(biāo)準(zhǔn)。但是奇怪的是,無(wú)論我們問(wèn)誰(shuí),我們總是有同樣的警告:“我們愛(ài)Selenium,但也有挑戰(zhàn)。”
因此,我們回到了社區(qū),問(wèn):“您在UI測(cè)試方面面臨的主要挑戰(zhàn)是什么?”
結(jié)果很明顯:首要挑戰(zhàn)是建立可隨時(shí)間推移保持的測(cè)試。通過(guò)進(jìn)一步的客戶采訪,我們將主要的Selenium問(wèn)題歸結(jié)為以下五個(gè)挑戰(zhàn):
然后,我們開(kāi)始研究如何能夠在不擺脫Selenium的情況下幫助解決這些問(wèn)題。事實(shí)證明,您可以通過(guò)將添加到組合中來(lái)解決所有這些挑戰(zhàn),但是有很多相對(duì)簡(jiǎn)單的方法可以解決Selenium的所有挑戰(zhàn),而無(wú)需放棄每個(gè)人都明確喜歡的平臺(tái)。
因此,讓我們更深入地研究這些挑戰(zhàn)以及如何解決它們。
挑戰(zhàn)1:創(chuàng)建可靠的定位器和等待條件
創(chuàng)建可靠的定位器涉及了解如何構(gòu)建每次都與正確元素交互并且在不同執(zhí)行之間穩(wěn)定的標(biāo)識(shí)符。用戶發(fā)現(xiàn)自己正在瀏覽Chrome開(kāi)發(fā)人員工具,以找到合適的HTML塊,弄清楚它在做什么,然后花時(shí)間來(lái)構(gòu)建最智能的定位器。通常最終會(huì)發(fā)生的情況是,當(dāng)元素定位器處于當(dāng)前狀態(tài)時(shí),會(huì)在應(yīng)用程序中選擇它,并且在播放時(shí),東西會(huì)有所不同。這真的很令人沮喪。
等待條件在這里也起著巨大的作用。對(duì)于現(xiàn)代Web應(yīng)用程序,在單個(gè)頁(yè)面中動(dòng)態(tài)加載內(nèi)容意味著即使找到正確的定位器,也必須聰明地建立正確的等待條件以確保元素準(zhǔn)備好與之交互。這可能是一個(gè)巨大的痛苦。
解決方案:智能定位器
有很多UI測(cè)試解決方案都專(zhuān)注于使用術(shù)語(yǔ)“智能定位器”解決這一確切的挑戰(zhàn)。 最初創(chuàng)建測(cè)試腳本時(shí),智能定位器會(huì)捕獲最智能的定位器,以使其更易于更改。 我最近的帖子指出了用于UI測(cè)試的10種出色的新工具,其中包括一些具有記錄和回放功能的工具。
此外,還有適用于Chrome的插件,可在腳本創(chuàng)建過(guò)程中提供幫助,以從頁(yè)面外提取最佳元素定位符。我一直在研究其中的幾個(gè)插件,到目前為止,我見(jiàn)過(guò)的最好的插件是TruePath。
挑戰(zhàn)2:當(dāng)UI更改時(shí)維護(hù)測(cè)試。
對(duì)于正在進(jìn)行的敏捷測(cè)試活動(dòng),這是組織面臨的一項(xiàng)艱巨挑戰(zhàn)。我們一次又一次地聽(tīng)到這個(gè)故事——測(cè)試人員花費(fèi)大量時(shí)間來(lái)構(gòu)建他們的Selenium測(cè)試(具有良好的定位條件和等待條件),然后應(yīng)用程序UI更改并且測(cè)試中斷,通常使夜間構(gòu)建失敗。然后,測(cè)試人員必須返回并找出應(yīng)用程序中發(fā)生了什么變化,確定這是真正的缺陷/回歸還是測(cè)試腳本有問(wèn)題。然后通過(guò)識(shí)別和創(chuàng)建新的定位器/等待條件來(lái)完成修復(fù)或更新測(cè)試的過(guò)程。這是一個(gè)惡性循環(huán)。
解決方案:人工智能
人工智能確實(shí)可以在這方面為您提供幫助。是的,我知道,這些天AI真是個(gè)時(shí)髦的詞。但是有非常實(shí)際的用法。特別是,在Selenium測(cè)試執(zhí)行過(guò)程中使用機(jī)器學(xué)習(xí)來(lái)解決這一確切的挑戰(zhàn)。每次測(cè)試運(yùn)行都會(huì)在其歷史記錄中產(chǎn)生一個(gè)唯一的條目,顯示DOM的當(dāng)前狀態(tài)并指示測(cè)試是否成功。
如果測(cè)試由于應(yīng)用程序UI更改而失敗,那么會(huì)時(shí)光倒流,并告訴您如何構(gòu)建與新版本的應(yīng)用程序一起使用的新定位器。這真的很強(qiáng)大,因?yàn)樗馕吨槐仉x開(kāi)Selenium即可解決因更改UI帶來(lái)的維護(hù)挑戰(zhàn)(該技術(shù)的另一個(gè)好處是它具有自我修復(fù)CI/CD管道的能力,可以在運(yùn)行時(shí)自動(dòng)將定位器更新為停止不必要的構(gòu)建)。
挑戰(zhàn)3:調(diào)試和診斷自動(dòng)化故障
調(diào)試和診斷Selenium測(cè)試非常困難,并且可能會(huì)浪費(fèi)大量的時(shí)間(尤其是在與不斷變化的UI結(jié)合使用時(shí))。我們發(fā)現(xiàn),各種解決方案都試圖通過(guò)為自己的框架提供高級(jí)報(bào)告功能來(lái)解決這一難題,但是隨后,測(cè)試人員最終被鎖定在專(zhuān)有平臺(tái)或IDE中。如果您打算在整個(gè)余生中繼續(xù)使用該供應(yīng)商或工具,那么這是“好的”,但是想要保留開(kāi)源所提供的原始自由的Selenium用戶又如何呢?
解決方案:智能自動(dòng)化和報(bào)告
為了解決這一挑戰(zhàn),您可以結(jié)合使用報(bào)告和測(cè)試執(zhí)行分析,以及IDE工具。
通過(guò)將報(bào)告工具(如)插入現(xiàn)有的CI / CD管道中,您可以更輕松地了解哪些測(cè)試失敗以及原因。通過(guò)運(yùn)行時(shí)自我修復(fù),Parasoft Selenic可以防止由于不穩(wěn)定的測(cè)試而導(dǎo)致構(gòu)建不必要地失敗。測(cè)試完成后,將提供修復(fù)那些損壞的測(cè)試的建議,這些建議可以直接導(dǎo)入IDE以進(jìn)行自動(dòng)修復(fù)。
IDE本身(例如Eclipse和IntelliJ)具有調(diào)試功能,可讓您在Selenium測(cè)試中設(shè)置斷點(diǎn)并在特定點(diǎn)暫停應(yīng)用程序,因此您可以提取有關(guān)UI狀態(tài)以及可能發(fā)生的情況的信息,因?yàn)閼?yīng)用程序失敗。
挑戰(zhàn)4:執(zhí)行整個(gè)腳本所花費(fèi)的時(shí)間
與在應(yīng)用程序的API/服務(wù)層上運(yùn)行的測(cè)試相比,自動(dòng)UI測(cè)試的運(yùn)行時(shí)間更長(zhǎng)(并且比隔離的單元測(cè)試要更長(zhǎng)),并且創(chuàng)建的UI測(cè)試越多,執(zhí)行這些測(cè)試所花費(fèi)的時(shí)間就越多,并且您需要等待CI/CD管道反饋的時(shí)間更長(zhǎng)。問(wèn)題在于,由于頻繁的代碼更改,管道每天要觸發(fā)多次,因此您不能等到第二天(有時(shí)是在周末)才能獲得有用的反饋。需要一種優(yōu)化測(cè)試套件執(zhí)行的方法,以在快速反饋與全面覆蓋之間取得平衡。
解決方案:測(cè)試影響分析
您可以在這里利用諸如的測(cè)試影響分析之類(lèi)的技術(shù)。通過(guò)跟蹤每個(gè)Selenium測(cè)試涵蓋的代碼,并將其與代碼庫(kù)中的更改相關(guān)聯(lián),您可以確定需要執(zhí)行以驗(yàn)證代碼更改的測(cè)試子集的優(yōu)先級(jí)。使用,您無(wú)需訪問(wèn)基礎(chǔ)代碼,因?yàn)樗恍钂呙瓒M(jìn)制文件(例如.war或文件),識(shí)別在構(gòu)建之間已更改了哪些類(lèi),然后將其映射到受影響的測(cè)試用例即可啟用。您可以將一部分Selenium測(cè)試作為CI/CD管道的一部分運(yùn)行。(查看Parasoft Selenic:如何在CI/CD管道中修復(fù)Selenium)
挑戰(zhàn)5:創(chuàng)建腳本所需的知識(shí)和技能
最后,首先創(chuàng)建Selenium測(cè)試所需的知識(shí)和技能會(huì)使Selenium的使用令人望而卻步。根據(jù)我們與誰(shuí)交談,這是人們所面臨挑戰(zhàn)中的第一個(gè)或最后一個(gè)。我們通常會(huì)看到,當(dāng)用戶剛開(kāi)始使用Selenium時(shí),他們面臨的第一大挑戰(zhàn)是測(cè)試創(chuàng)建-但是一旦他們開(kāi)始并建立成熟的測(cè)試實(shí)踐,它就不再是第一挑戰(zhàn),而實(shí)際上是另一個(gè)挑戰(zhàn)問(wèn)題變得更加重要。因此,從我的角度來(lái)看,克服最初的障礙是真正的挑戰(zhàn)。
解決方案:代碼助手
諸如無(wú)代碼的Selenium和NLP驅(qū)動(dòng)的Selenium創(chuàng)建之類(lèi)的事情,但是我還沒(méi)有特別看到一種能像我們所有人希望的那樣運(yùn)作的東西。Selenium的主要現(xiàn)實(shí)之一是它的代碼。這是好是壞?很好,因?yàn)槿绻枰龅氖虑槌隽?/span>“常規(guī)做法”范圍,可以通過(guò)快速Google搜索找到一些好的代碼示例。這很糟糕,因為它是代碼,這對(duì)某些測(cè)試人員來(lái)說(shuō)是一個(gè)障礙。
因此,您需要成為一名開(kāi)發(fā)人員來(lái)構(gòu)建Selenium腳本嗎?答案是否定的,但是某些開(kāi)發(fā)技能確實(shí)可以提供幫助。正如我之前提到的,許多出色的新UI測(cè)試工具都具有可以構(gòu)建Selenium腳本的記錄器,例如,SeleniumIDE和Katalon。這些幫助器工具將為剛接觸Selenium的用戶提供快速入門(mén),并在無(wú)代碼和已編碼之間提供中間立場(chǎng)。當(dāng)然,您必須意識(shí)到?jīng)]有一個(gè)UI記錄和回放工具是完美的(當(dāng)然,也有解決這些挑戰(zhàn)的方法)。
Selenium是UI自動(dòng)化的第一選擇,技術(shù)每天都在進(jìn)步,圍繞支持Selenium并幫助解決其一些基本挑戰(zhàn)的技術(shù)很多。UI測(cè)試對(duì)于驗(yàn)證客戶體驗(yàn)至關(guān)重要,并且能夠構(gòu)建可長(zhǎng)期維護(hù)的豐富且有意義的Selenium測(cè)試,將有助于增加我們行業(yè)的整體測(cè)試覆蓋率,從而在將來(lái)構(gòu)建更好、更有意義的體驗(yàn)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn