劉瑾
摘 要自動化測試技術(shù)對幫助提高回歸測試效率很大,對于BS架構(gòu)的系統(tǒng),Selenium WebDriver非常適合做自動化測試,利用Selenium技術(shù)搭建出一套方便運行維護的自動化測試框架。
【關(guān)鍵詞】自動化測試框架 Selenium WebDriver testNG ant
1 引言
隨著Web程序發(fā)展的復(fù)雜性,急切需要自動化測試來提升執(zhí)行效率,目前市場上用得最多且最有代表性的自動化測試工具Selenium。
2 Selenium簡介
Selenium是一個廣泛用于 Web 應(yīng)用程序的開源自動化測試工具,尤其是現(xiàn)在的Selenium2.0-Selenium WebDriver通過原生瀏覽器支持或者瀏覽器擴展直接控制瀏覽器,更解決了Selenium1.0不能解決的本機鍵盤和鼠標事件、同源策略XSS/HTTP(S)以及彈出框,對話框(基本身份認證,自簽名的證書和文件上傳/下載)問題,使selenium能夠做出更多更準確的用戶操作。
(1)支持多種語言,如python、ruby、java、c#等;
(2)支持多種瀏覽器,如IE, Firefox,Chrome,Safari和Opera等;
(3)在瀏覽器后臺執(zhí)行,它通過修改HTML的DOM(文檔對象模型)來執(zhí)行操作,實際上是通過JavaScript來控制的。執(zhí)行時窗口可以最小化,可以在同一機器執(zhí)行多個測試;
(4)開源的測試工具,使用免費;
(5)無軟件界面;
(6)支持B/S應(yīng)用架構(gòu);
(7)支持python,java,可以跨平臺;
(8)支持更豐富的測試開發(fā)環(huán)境;
(9)支持hudson集成工具,更方便實現(xiàn)持續(xù)集成;
(10)輕量級測試框架,支持二次開發(fā),更容易設(shè)計出自己想要的測試框架。
綜上所述,Selenium WebDriver使用靈活,簡單,可跨平臺支持多種瀏覽器和多種開發(fā)語言,且有較好的擴展性,方便實現(xiàn)持續(xù)集成,針對Web系統(tǒng)的特點,Selenium WebDriver非常適合。
3 測試流程
測試流程圖如圖1。
4 自動化測試框架設(shè)計
按照操作對象→對象屬性→功能實現(xiàn)→結(jié)果驗證的流程設(shè)計測試框A架如圖2。
Selenium WebDriver是一款開源的自動化測試工具,也是市面上用得較多的一款支持二次開發(fā)的工具,可支持多種瀏覽器和跨平臺使用,更好地實現(xiàn)持續(xù)集成,非常適合Web系統(tǒng),搭配使用testng測試框架,可生成測試報告以供查看,但是testng生成的測試報告往往不夠美觀,可采用reportng格式的報告,只需加入相應(yīng)的jar包即可。
5 自動化測試框架維護
自動化的測試腳本維護成為自動化實施的一個關(guān)鍵性的依據(jù)。對于一個規(guī)范化的系統(tǒng)開發(fā)流程來說,實現(xiàn)測試的自動化是很有必要的。但是自動化的腳本維護使得我們的自動化測試在成本上變得較為昂貴,每一個系統(tǒng)的開發(fā)都是時刻隨著需求的變更而改變,然而在大多數(shù)的情況下,就是很微小的一點系統(tǒng)修改都會導(dǎo)致我們?nèi)ゴ罅康男薷淖詣踊臏y試腳本。
這里采用Page Object模式,將測試對象封裝在每個page對象中,將page作為對象來管理。Page Object模式來源于Selenium目前比較流行的測試設(shè)計模式,把每一個頁面當成一個Class來設(shè)計,將頁面中的按鈕、輸入框、標題等測試元素包含進去,在用例中可以調(diào)用頁面Class中的頁面元素屬性,當頁面元素id或者位置變化時,不需要更改測試用例代碼,只需更改測試頁面的屬性即可??梢酝ㄟ^id,class或者XPath來獲取頁面中元素的屬性,在id唯一的情況下,可以使用id獲取頁面元素,否則可以使用XPath定位頁面元素。
而測試數(shù)據(jù)也會放在單獨的文件里,測試用例中調(diào)用文件即可。
上述測試模式,將頁面元素屬性、數(shù)據(jù)及用例分離開來,便于以后的維護使用。
6 自動化測試框架執(zhí)行
在調(diào)試單個測試用例時,可單個運行,隨著代碼項目的不斷增多,每次依靠人工重新編譯,打包,部署等這些復(fù)雜重復(fù)的工作由工具完成將會帶來很大的便捷,而ANT構(gòu)建工具很好地解決了這一問題。它具有以下的優(yōu)點:
6.1 跨平臺性
純Java語言編寫,具有很好的跨平臺性。
6.2 操作簡單
通過XML構(gòu)建文件中豐富的標簽來構(gòu)建任務(wù)。
6.3 維護簡便
XML格式文件結(jié)構(gòu)清晰,容易維護和書寫。
6.4 方便集成
具有的跨平臺性和操作簡單性,方便與其他開發(fā)環(huán)境集成。
7 自動化測試用例設(shè)計原則
(1)自動化測試用例的范圍是核心業(yè)務(wù)流程或者重復(fù)執(zhí)行率較高的。
(2)自動化測試用例的選擇一般以“正向”為主。
(3)自動化測試用例需要回歸原點。
(4)自動化測試用例不需要每個步驟都寫預(yù)期結(jié)果。
8 自動化測試用例設(shè)計示例
系統(tǒng)模塊:系統(tǒng)首頁。
概述:實現(xiàn)首頁中登錄功能。
目標:驗證首頁中登錄功能實現(xiàn),通過標準的功能對象做為前提,使腳本可維護,可被其他測試用例重復(fù)調(diào)用,可以得到各個基本動作,基本功能驗證結(jié)果,自動生成測試結(jié)果報告。
以首頁功能實現(xiàn)為例,說明測試包含內(nèi)容,測試用例選擇testlink中的登錄測試用例,步驟如下:
(1)建立WebDriver初始類,供每個測試用例調(diào)用。endprint
(2)建立初始化基類,用以初始化要訪問的頁面。
(3)建立存放各頁面元素屬性的page類,供測試用例調(diào)用。
(4)建立讀取數(shù)據(jù)文件操作類,供測試數(shù)據(jù)調(diào)用。
(5)建立外部存放測試數(shù)據(jù)的文件,供測試用例讀取數(shù)據(jù)。
最后登錄測試用例中主體為頁面的元素動作,比如登錄頁面的用戶名輸入數(shù)據(jù)文件的用戶名,格式為登陸頁面.用戶名.輸入數(shù)據(jù)文件的用戶名,此用例看起來較好理解,當頁面元素屬性或者測試數(shù)據(jù)有變化時,我們只需改變page中的屬性值或存放數(shù)據(jù)文件的數(shù)據(jù),其余地方不用改變,這樣大大降低了以后維護的成本,而且以后其他測試用例也可調(diào)用登錄的方法,提高了代碼的復(fù)用率。
測試報告格式如圖3所示:綠色代表通過,紅色代表失敗,并顯示原因。
9 實施自動化測試的目標和意義
(1)對于功能已經(jīng)比較成熟完整的軟件,也就是穩(wěn)定性比較好,可以將主流程用例自動化,當版本增加新功能的時候,自動化用例可用作主流程回歸測試。
(2)在一些大的項目組,自動化測試所帶來的高效率是人工測試完全所不能比的,尤其是在測試周期很短的情況下,自動化運行上千個測試用例也只要幾個小時而已,但是人工測試要幾十個工作日才能完成。
(3)自動化測試每次運行的腳本相同,也就是自動化測試具有一致性和可重復(fù)性,可重復(fù)地執(zhí)行以發(fā)現(xiàn)被測試軟件的任何變化,保證被測軟件的一致性。
(4)自動化測試可以更好的利用資源,自動化測試可以安排在晚上和周末,充分的利用了非工作時間和公司的資源,完成更多的測試執(zhí)行任務(wù)。
(5)自動化測試將繁瑣的測試任務(wù)自動化,大量重復(fù)繁瑣的測試任務(wù),消耗的是大量的人力物力,而自動化測試能夠很好的支持手工測試,將人力從簡單重復(fù)的繁瑣的勞動中解放出來。
(6)自動化測試腳步可以不斷地運行,經(jīng)過大量的測試用例執(zhí)行,保證了版本的穩(wěn)定性。
10 結(jié)束語
自動化測試框架Selenium WebDriver+testNG+ant基本滿足了Web系統(tǒng)的自動化測試需求,也是市面上比較流行的自動化測試框架之一,所選取的各個組件具有一定的優(yōu)勢和代表性,能很好地幫助我們開展自動化測試工作,值得我們采用。
作者單位
上海清算信息技術(shù)有限公司 上海市 200010endprint