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