與以前瀑布式開發(fā)模式不同蜒茄,現(xiàn)在軟件測(cè)試人員具有使用自動(dòng)化工具執(zhí)行測(cè)試用例套件的優(yōu)勢(shì),而以前诈泼,測(cè)試人員習(xí)慣于通過(guò)測(cè)試腳本執(zhí)行來(lái)完成測(cè)試循榆。
但自動(dòng)化測(cè)試的目的不是完全擺脫手動(dòng)測(cè)試,而是最大程度地減少手動(dòng)運(yùn)行的測(cè)試查刻。自動(dòng)化測(cè)試使您可以快速測(cè)試多語(yǔ)言站點(diǎn)键兜,還可以提高測(cè)試執(zhí)行速度。
一穗泵、Selenium自動(dòng)化
由于開源工具和應(yīng)用程序的成本效益普气,效率,可重復(fù)性佃延,準(zhǔn)確性和易用性现诀,它們變得越來(lái)越重要。Selenium是開放源代碼工具之一履肃,它在應(yīng)用程序測(cè)試方面提供了開放源代碼工具的所有優(yōu)點(diǎn)赶盔。
Selenium是用于測(cè)試的一套Selenium工具。它包含Selenium IDE榆浓,Selenium RC于未,Selenium Webdriver和Selenium Grid。它用于自動(dòng)化Web交互和回歸測(cè)試,并具有記錄和回放功能烘浦。此外還可以將記錄的腳本導(dǎo)出為其他語(yǔ)言抖坪,包括Java,C#闷叉,Python擦俐,Ruby,Javascript和PHP握侧。
二蚯瞧、跨瀏覽器測(cè)試中的Selenium
顧名思義,跨瀏覽器測(cè)試是一種用于在不同的Web瀏覽器和設(shè)備上測(cè)試Web應(yīng)用程序以確保其在每個(gè)設(shè)備和瀏覽器上都能無(wú)縫運(yùn)行的方法品擎。
Selenium幫助在Safari埋合,Google Chrome,Mozilla Firefox和IE中自動(dòng)化測(cè)試案例萄传。Selenium也可以同時(shí)在不同瀏覽器上的同一臺(tái)計(jì)算機(jī)上執(zhí)行測(cè)試用例甚颂。它還支持多種語(yǔ)言和操作系統(tǒng)。
讓我們看一下Selenium的最佳實(shí)踐秀菱,以在自動(dòng)化測(cè)試過(guò)程中充分利用振诬。
三、利用正確的定位器
Selenium框架的底部是與瀏覽器進(jìn)行交互衍菱,從而可以使用文檔**對(duì)象模型(DOM)**檢查赶么,輸入和瀏覽多個(gè)對(duì)象。這是通過(guò)一組操作發(fā)生的脊串,并使用了多個(gè)定位器辫呻,包括CSS選擇器,name洪规,Xpath印屁,ID循捺,標(biāo)記名斩例,鏈接文本和classname。
例如从橘,當(dāng)您不想在開發(fā)人員和測(cè)試人員不了解的情況下更改代碼時(shí)念赶,請(qǐng)使用Class和ID定位器。另一方面恰力,當(dāng)其他團(tuán)隊(duì)進(jìn)行測(cè)試時(shí)叉谜,可以使用鏈接文本來(lái)動(dòng)態(tài)處理情況。最后踩萎,可以采用XPath可用于定位停局。
四、數(shù)據(jù)驅(qū)動(dòng)的測(cè)試
如果要為不同的輸入使用相同的測(cè)試和相同的代碼,則可以依賴Selenium董栽。它將允許開發(fā)人員和質(zhì)量檢查團(tuán)隊(duì)進(jìn)行修改码倦,這意味著您可以將其用于系統(tǒng)功能測(cè)試以及瀏覽器兼容性測(cè)試。
Selenium還允許客戶從其框架中受益锭碳≡客戶可以利用專有的測(cè)試加速器并啟動(dòng)測(cè)試自動(dòng)化。這將減少自動(dòng)化周期時(shí)間擒抛。有很多個(gè)函數(shù)庫(kù)推汽,可讓客戶端啟動(dòng)自動(dòng)化過(guò)程。
五歧沪、不要依賴特定的驅(qū)動(dòng)程序
永遠(yuǎn)不要依賴于一種特定的驅(qū)動(dòng)程序?qū)崿F(xiàn)歹撒。了解驅(qū)動(dòng)程序在不同的瀏覽器中不是瞬時(shí)的。也就是說(shuō)槽畔,不一定會(huì)有IE驅(qū)動(dòng)程序栈妆、FireFox驅(qū)動(dòng)程序等。
例如厢钧,在連續(xù)Linux構(gòu)建過(guò)程中執(zhí)行集成測(cè)試時(shí)鳞尔,將收到RemoteDriver。您可以使用LabelledParameterized(JUnit具有早直,@RunWith 而TestNG為 @Parameters)在Selenium中快速創(chuàng)建小型框架寥假。
和ScreenShotWatchMan(JUnit @Rule,TestNG TestListenerAdapter)霞扬。換句話說(shuō)糕韧,使用參數(shù)注釋來(lái)處理多種瀏覽器類型并準(zhǔn)備好同時(shí)執(zhí)行是不錯(cuò)的選擇。
六喻圃、選擇器順序
選擇選擇器的順序很重要萤彩,因?yàn)檫x擇器(例如XPath和CSS)是基于位置的。與ID斧拍,name和鏈接文本相比雀扶,它們比較慢。name和ID是特別直接和直接的方式選擇器肆汹。CSS通常是ID和Name的組合愚墓。相比之下,XPath應(yīng)該是最后的解決方案昂勉。
健壯的解決方案如下所示: XPath <CSS <Links Text <Name <ID浪册。這意味著以ID開頭,并使XPath為最后一個(gè)選擇器岗照。在3個(gè)沒(méi)有數(shù)據(jù)的表中村象,XPath識(shí)別第二個(gè)表的速度最慢笆环,并且可能不會(huì)返回正確的表。因此厚者,最后選擇了XPath咧织,它們很脆弱。CSS始終與名稱和ID結(jié)合在一起籍救。
七习绢、使用PageObjects設(shè)計(jì)模式
PageObject已作為測(cè)試自動(dòng)化中的最佳設(shè)計(jì)模式而獲得普及。它提升了測(cè)試的可維護(hù)維護(hù)性蝙昙,還減少了代碼重復(fù)量闪萄。此外,它是一個(gè)面向?qū)ο蟮念惼娴撸洚?dāng)被測(cè)應(yīng)用程序頁(yè)面的接口败去。為簡(jiǎn)化起見,PageObject是一種面向?qū)ο蟮脑O(shè)計(jì)模式烈拒,并且將網(wǎng)頁(yè)定義為類圆裕。頁(yè)面上的不同元素將成為變量。用戶交互被用具體的方法實(shí)現(xiàn)荆几。
網(wǎng)頁(yè)=類別
頁(yè)面上的各種元素=變量
用戶互動(dòng)=方法
PageObject的優(yōu)點(diǎn)
通過(guò)較小的UI調(diào)整吓妆,它有助于建立一個(gè)健壯的框架。測(cè)試代碼和頁(yè)面代碼是分開的吨铸。
它們可靠且易于維護(hù)行拢。
該腳本是可讀的。該代碼是可重用的诞吱。
幾乎完全消除重復(fù)舟奠。
八、提倡wait避免sleep
利用wait代替sleep房维。了解顯式和隱式等待沼瘫,還有Thread.sleep()邏輯。然后咙俩,為什么wait等待而不是sleep耿戚。
wait
顯式–等待某種情況發(fā)生,而無(wú)需繼續(xù)編寫代碼暴浦。
隱式–指示W(wǎng)ebDriver輪詢DOM溅话,直到完成對(duì)元素的搜索為止晓锻。默認(rèn)情況下歌焦,時(shí)間設(shè)置為0。
sleep
Thread.sleep()無(wú)論工作頁(yè)是否準(zhǔn)備就緒砚哆,都會(huì)在括號(hào)內(nèi)指定的秒數(shù)內(nèi)等待独撇。
九、關(guān)閉Firebug起始頁(yè)
在啟動(dòng)firefox驅(qū)動(dòng)程序時(shí),可能已包含firebug纷铣。有時(shí)這可能導(dǎo)致無(wú)法工作正常卵史。如果在啟動(dòng)瀏覽器時(shí)同時(shí)打開一個(gè)新的firebug選項(xiàng)卡使您感到煩惱,請(qǐng)按照以下提供的提示之一關(guān)閉firebug起始頁(yè)搜立。
在showFirstRunPage標(biāo)志中將False設(shè)置以躯,如下。
FirefoxProfile profile =newFirefoxProfile();profile.setPreference("extensions.firebug.showFirstRunPage",false);
最后: 可以在?這里這里這里 啄踊! 自行領(lǐng)取一份216頁(yè)軟件測(cè)試工程師面試寶典文檔資料【免費(fèi)的】忧设。以及相對(duì)應(yīng)的視頻學(xué)習(xí)教程免費(fèi)分享!颠通,其中包括了有基礎(chǔ)知識(shí)址晕、Linux必備、Shell顿锰、互聯(lián)網(wǎng)程序原理谨垃、Mysql數(shù)據(jù)庫(kù)、抓包工具專題硼控、接口測(cè)試工具刘陶、測(cè)試進(jìn)階-Python編程、Web自動(dòng)化測(cè)試牢撼、APP自動(dòng)化測(cè)試易核、接口自動(dòng)化測(cè)試、測(cè)試高級(jí)持續(xù)集成浪默、測(cè)試架構(gòu)開發(fā)測(cè)試框架牡直、性能測(cè)試、安全測(cè)試等纳决。