盧晨
摘要:基于Selenium自動(dòng)化測(cè)試技術(shù)對(duì)出差管理系統(tǒng)進(jìn)行了自動(dòng)化測(cè)試設(shè)計(jì),介紹了Selenium在Web應(yīng)用程序中進(jìn)行自動(dòng)化測(cè)試的過(guò)程。通過(guò)案例說(shuō)明Selenium對(duì)Web應(yīng)用程序進(jìn)行自動(dòng)化測(cè)試的優(yōu)勢(shì)。
關(guān)鍵詞:Selenium;自動(dòng)化測(cè)試;信息管理系統(tǒng)
DOIDOI:10.11907/rjdk.143288
中圖分類(lèi)號(hào):TP391
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào)文章編號(hào):16727800(2015)001015402
0 引言
隨著軟件應(yīng)用復(fù)雜度的增加,保證軟件質(zhì)量變得越來(lái)越難,需要測(cè)試人員尋找很多測(cè)試方法和技術(shù),以解決產(chǎn)品質(zhì)量問(wèn)題。自動(dòng)化測(cè)試不僅可以大大減少測(cè)試人員的工作量,降低工作難度,還可以避免不必要的人為疏忽與問(wèn)題,加快測(cè)試速度,保證產(chǎn)品質(zhì)量和進(jìn)度,提高效益。
目前自動(dòng)化測(cè)試研究如火如荼,涌現(xiàn)了很多自動(dòng)化測(cè)試[1]工具,例如占據(jù)主流應(yīng)用HP的QTP。QTP對(duì)系統(tǒng)環(huán)境要求很高,運(yùn)行時(shí)會(huì)占用很大的內(nèi)存空間,且價(jià)格昂貴。另外,軟件開(kāi)發(fā)需求千變?nèi)f化,自動(dòng)化測(cè)試工具要不斷適應(yīng)這些變化。
1 Selenium概述
Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的工具,它提供了一系列測(cè)試函數(shù),用于支持Web自動(dòng)化測(cè)試[2]。這些函數(shù)非常靈活,能夠通過(guò)多種方式定位界面元素,并將結(jié)果與系統(tǒng)實(shí)際結(jié)果進(jìn)行比較。作為一款強(qiáng)大的測(cè)試工具,Selenium具有以下幾個(gè)特性:①可以對(duì)多種瀏覽器進(jìn)行測(cè)試,如IE、Firefox、Safari、Chrome、Android手機(jī)瀏覽器等;②支持多種語(yǔ)言,如Java、C#、Python、Ruby、PHP等;③跨平臺(tái),如Windows、Lunix、iOS、Android等;④開(kāi)源免費(fèi)。
Selenium提供很多工具組供測(cè)試工程師選用:①Selenium IDE:用于構(gòu)建腳本的初級(jí)工具;②Selenium 1(Selenium RC):Selenium最主要的測(cè)試工具之一,支持多語(yǔ)言和多瀏覽器;③ Selenium 2:集成了WebDriver,WebDriver通過(guò)原生瀏覽器支持或者瀏覽器擴(kuò)展直接控制瀏覽器。測(cè)試者可以根據(jù)不同的平臺(tái)、不同瀏覽器選擇不同的WebDriver去執(zhí)行測(cè)試。WebDriver可以驅(qū)動(dòng)本地或遠(yuǎn)程機(jī)器上的瀏覽器。對(duì)比Selenium 1 時(shí)代的Selenium RC,WebDriver優(yōu)勢(shì)明顯[3];④ Selenium Grid:一般用于分布式測(cè)試和集群測(cè)試,Selenium 能同時(shí)并行地、在不同環(huán)境上運(yùn)行多個(gè)測(cè)試任務(wù),極大地加快了Web應(yīng)用的功能測(cè)試。
本文采用Selenium2測(cè)試工具,對(duì)某公司出差管理系統(tǒng)的核心功能進(jìn)行了一整套Selenium自動(dòng)化測(cè)試,主要步驟是:①需求分析;②測(cè)試用例設(shè)計(jì);③根據(jù)測(cè)試用例設(shè)計(jì)測(cè)試腳本,并執(zhí)行測(cè)試;④分析測(cè)試結(jié)果。
2 Selenium測(cè)試分析
以某公司外派到日本的員工出差信息管理系統(tǒng)為例,其功能模塊如圖1所示。
圖1 出差管理系統(tǒng)功能結(jié)構(gòu)
系統(tǒng)的核心功能主要是對(duì)各種信息進(jìn)行增加、刪除、修改、查找。針對(duì)這些核心功能,需要分別設(shè)計(jì)測(cè)試用例并編寫(xiě)測(cè)試腳本,通過(guò)腳本運(yùn)行,可以有效完成各功能的測(cè)試。
3 Selenium測(cè)試設(shè)計(jì)
根據(jù)系統(tǒng)功能結(jié)構(gòu)圖和系統(tǒng)需求,對(duì)整個(gè)系統(tǒng)進(jìn)行模塊劃分。以個(gè)人信息模塊為例,其主要功能有新增個(gè)人信息、修改個(gè)人信息、按不同條件查找個(gè)人信息和刪除個(gè)人信息等4大功能,功能界面如圖2所示。
圖2 功能界面
利用黑盒測(cè)試用例設(shè)計(jì)方法設(shè)計(jì)測(cè)試,見(jiàn)表1。
4 腳本編寫(xiě)與運(yùn)行結(jié)果
根據(jù)設(shè)計(jì)的測(cè)試用例TC001編寫(xiě)測(cè)試腳本,代碼如下:
(1) 通過(guò)driver打開(kāi)網(wǎng)站鏈接:
WebDriver driver = new FirefoxDriver();
driver.get("網(wǎng)站地址");
(2) 獲取“新增員工”按鈕并點(diǎn)擊:
WebElement element = driver.findElement (By.id("按鈕id")) ;
element.click();
(3) 獲取界面組件并輸入內(nèi)容:
WebElement element = driver.findElement(By.id("組件id"));
element.sendKeys(“輸入內(nèi)容”);
(4) 點(diǎn)擊提交按鈕:
WebElement element = driver.findElement (By.id("提交按鈕id")) ;
element.click();
(5) 等待提交后的系統(tǒng)反饋:
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
(6) 獲取彈出對(duì)話框信息:
Alert alert = driver.switchTo().alert();
String text = alert.getText();
System.out.println("alert:"+text);
If(text ==預(yù)期結(jié)果) System.out.println(“Pass”);
alert.accept();
5 語(yǔ)結(jié)
本文介紹了Selenium,并以出差管理系統(tǒng)的新增操作為例,對(duì)系統(tǒng)進(jìn)行了自動(dòng)化用例設(shè)計(jì)和腳本編寫(xiě)。使用過(guò)程中,Selenium的優(yōu)勢(shì)非常明顯:因?yàn)槭褂玫氖敲嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,編寫(xiě)代碼簡(jiǎn)便、易懂,相比較用QTP錄制腳本,Selenium腳本更易于維護(hù),整個(gè)測(cè)試框架可以用面向?qū)ο笏枷脒M(jìn)行設(shè)計(jì),框架復(fù)用性高。不足之處是Selenium對(duì)測(cè)試步驟中的驗(yàn)證支持度不夠。