您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
開源應(yīng)用架構(gòu)之​Selenium WebDriver
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/12/9 14:36:50 ] 推薦標(biāo)簽:

在2009年8月,兩個項目宣布合并,Selenium WebDriver是合并的成果。目前,WebDriver支持的語言綁定包括Java、C#、Python和Ruby。它支持Chrome、 Firefox、Opera和Android、iPhone瀏覽器。​此外,還有其他關(guān)聯(lián)項目,不在同一源代碼庫中維護(hù),但是和主項目(Selenium WebDriver)緊密合作,例如提供Perl綁定支持、BlackBerry瀏覽器支持,以及“無頭”WebKit——用于持續(xù)集成的測試其無法正常 顯示的情況。初的Selenium RC機(jī)制仍然維持,幫助WebDriver在瀏覽器不受支持的情況下提供支持。​

Simon Stewart在介紹Selenium WebDriver軟件架構(gòu)之前,談到了架構(gòu)和項目開發(fā)的重要主題。​概括如下:

    保持成本低廉。
    模擬用戶。
    證明dirver運(yùn)行良好......
    ......但是你無需了解一切細(xì)節(jié)
    降低巴士因素(bus factor)。
    ​偏愛JavaScript實(shí)現(xiàn)。
    所有方法調(diào)用都是RPC調(diào)用。
    我們是開源項目。

具體來說:

保持成本低廉​​

在Y平臺上支持X瀏覽器本質(zhì)上是一種昂貴的​提議,無論是從開發(fā)還是維護(hù)角度考慮。如果我們能夠找到辦法維持產(chǎn)品的高品質(zhì)而又不違背太多其他原則,那么值得采納。這種思想明顯的體現(xiàn)在我們盡可能得使用JavaScript編程,你稍后會看到。​

模擬用戶​
​WebDriver的設(shè)計目的是為了準(zhǔn)確模擬用戶與Web應(yīng)用交互的方式。模擬用戶輸入的常用辦法是利用Javascript合并和觸發(fā)一系列事件(如 果真實(shí)用戶執(zhí)行相同交互操作,應(yīng)用會處理同樣的事件)。“合成事件”(synthesized events)方法在面對不同瀏覽器、有時相同瀏覽器的不同版本時存在不少困難,觸發(fā)的事件和相關(guān)值略有不同。為了不讓問題復(fù)雜化,大多數(shù)瀏覽器處于安全 原因不允許用戶通過這種方式與表單元素(如文件輸入元素)交互。

WebDriver總是盡可能的使用在操作系統(tǒng)層面​觸發(fā)事件的方法。​因為這些“原生事件”不是由瀏覽器生成,所以這種方法​避免了​合成事件導(dǎo) 致的安全限制,同時,因為它們是特定于具體操作系統(tǒng)的,​一旦在某個平臺上的瀏覽器運(yùn)行良好,在另一種瀏覽器上重用代碼相對容易些。困難的是,這種方法​ 必須滿足兩點(diǎn)才可行:WebDriver與瀏覽器緊密綁定,同時開發(fā)團(tuán)隊在無需瀏覽器窗口獲得焦點(diǎn)的情況下發(fā)送原生事件(因為Selenium測試運(yùn)行時 間較長,好能支持同時在機(jī)器上執(zhí)行其他任務(wù))。目前,原生事件可用于Linux、Windows平臺,不包括Mac OS X。​

不管WebDriver如何模擬用戶輸入,我們都在努力盡可能地模仿用戶行為。​RC剛好相反,它提供的API層次遠(yuǎn)低于用戶操作。​

證明Driver運(yùn)行良好​​

想讓事情十全十美(motherhood and apple pie)​可能過于理想化了,但是我相信編寫無法運(yùn)行的代碼是沒有意義的。證明driver(指的是WebDriver API的特定實(shí)現(xiàn)。例如,F(xiàn)irefox和Internet Explorer各有自己的driver實(shí)現(xiàn))在 Selenium項目中運(yùn)行良好的辦法是我們擁有一套廣泛的自動化測試用例。這些通常是“集成測試”,需要編譯代碼并使用瀏覽器與Web服務(wù)器交互,但是 我們盡可能地編寫“單元測試”,它不像集成測試,無需完全重新編譯即可運(yùn)行。目前,大約有500個集成測試和250個單元測試,涵蓋所有瀏覽器。​我們在 修補(bǔ)缺陷和編寫新代碼時會增加測試,我們的重點(diǎn)正轉(zhuǎn)移到編寫更多的​單元測試。​

并非所有​測試都要運(yùn)行于每一個瀏覽器上。其中一些測試用于某些瀏覽器不支持的特定功能,或者在不同瀏覽器上處理方式不同的功能。例如,某些測試用 于新的HTML5功能,這些功能并非所有瀏覽器都支持。盡管如此,每一個主流的瀏覽器都進(jìn)行了充分的測試?梢韵胂,在不同平臺上針對每種瀏覽器運(yùn)行超過 500個測試是一種極大的挑戰(zhàn),我們一直在努力面對。

上一頁123下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd