陳斌仙,陳佳麗,陳阿妹(龍巖學(xué)院,福建 龍巖 364012)
?
基于Selenium的自動(dòng)化測(cè)試研究
陳斌仙,陳佳麗,陳阿妹
(龍巖學(xué)院,福建 龍巖 364012)
摘 要:隨著軟件產(chǎn)品的普及和發(fā)達(dá),自動(dòng)化測(cè)試已越來(lái)越多地被應(yīng)用于軟件開(kāi)發(fā)的各個(gè)階段,為高質(zhì)量的軟件產(chǎn)品提供了保障.本文在已有研究的基礎(chǔ)之上,給出了自動(dòng)化測(cè)試的定義、發(fā)展歷程及框架,研究了自動(dòng)化測(cè)試工具Selenium的構(gòu)成、工作原理及使用環(huán)境,并分析了利用Selenium對(duì)具體實(shí)例進(jìn)行測(cè)試的過(guò)程.本文的研究工作對(duì)高校《軟件測(cè)試》課程的理論和實(shí)踐教學(xué)都有一定的指導(dǎo)作用.
關(guān)鍵詞:Selenium;測(cè)試框架;自動(dòng)化測(cè)試;測(cè)試腳本
為了保證軟件產(chǎn)品的質(zhì)量,在軟件開(kāi)發(fā)的各個(gè)階段(包括需求分析、設(shè)計(jì)、實(shí)現(xiàn)及發(fā)布等階段)都需要引入軟件測(cè)試工作,以期盡早地盡可能多地發(fā)現(xiàn)系統(tǒng)中存在的缺陷,最大限度確保軟件產(chǎn)品的質(zhì)量.20世紀(jì)90年代初期以前,大部分的測(cè)試工作都是由手工測(cè)試來(lái)完成,但是隨著大數(shù)據(jù)時(shí)代的到來(lái),編程語(yǔ)言越來(lái)越豐富,軟件開(kāi)發(fā)模型越來(lái)越多樣化,軟件產(chǎn)品也越來(lái)越復(fù)雜,龐大和重復(fù)性的輸入輸出數(shù)據(jù)給手工測(cè)試帶來(lái)了極大的挑戰(zhàn),尤其是對(duì)產(chǎn)品的升級(jí)版本進(jìn)行測(cè)試時(shí),大量的人力被花費(fèi)在之前進(jìn)行過(guò)的重復(fù)性的測(cè)試之上,浪費(fèi)了大量的人力、物力和財(cái)力[1].在這種情況之下,自動(dòng)化測(cè)試的概念應(yīng)運(yùn)而生.經(jīng)過(guò)過(guò)去二十多年的發(fā)展,在軟件測(cè)試領(lǐng)域中不僅形成了先進(jìn)的自動(dòng)化測(cè)試的概念,同時(shí)也誕生了形形色色的自動(dòng)化測(cè)試軟件和工具,更是為軟件產(chǎn)品的質(zhì)量提供了強(qiáng)有力的保障.本文正是基于此,在已有研究的基礎(chǔ)之上,對(duì)自動(dòng)化測(cè)試的定義、發(fā)展歷程及框架進(jìn)行了概述,對(duì)測(cè)試工具Selenium的相關(guān)應(yīng)用進(jìn)行了研究,并結(jié)合常用實(shí)例描述了其詳細(xì)的工作流程.
1.1 自動(dòng)化測(cè)試定義
自動(dòng)化測(cè)試是指在測(cè)試活動(dòng)中僅需由測(cè)試人員根據(jù)測(cè)試需求開(kāi)發(fā)出測(cè)試腳本,不需用戶參與即可自動(dòng)執(zhí)行的測(cè)試程序.所開(kāi)發(fā)的測(cè)試腳本可以用于單元測(cè)試階段,用來(lái)測(cè)試某個(gè)具體的類或方法,還可以用于集成測(cè)試階段,用來(lái)測(cè)試整個(gè)程序的功能.總之,對(duì)軟件進(jìn)行自動(dòng)化測(cè)試的過(guò)程就是用程序(即測(cè)試腳本)測(cè)試源程序、用代碼(即編輯后的測(cè)試腳本)指導(dǎo)測(cè)試流程、用腳本的執(zhí)行取代人工測(cè)試的過(guò)程.
1.2 自動(dòng)化測(cè)試發(fā)展歷程
自動(dòng)化測(cè)試技術(shù)的發(fā)展歷經(jīng)以下4個(gè)階段.
(1)簡(jiǎn)單的錄制、編輯、編程與回放階段.即通過(guò)自動(dòng)化測(cè)試工具對(duì)所需執(zhí)行的操作進(jìn)行錄制,對(duì)錄制的腳本進(jìn)行編程,執(zhí)行編輯后的腳本,實(shí)現(xiàn)自動(dòng)化回放功能.適用于被測(cè)系統(tǒng)功能變化較少的情況.
(2)數(shù)據(jù)驅(qū)動(dòng)的測(cè)試階段[2].模擬并使用真實(shí)生活中的實(shí)例作為測(cè)試數(shù)據(jù),并使用專門的數(shù)據(jù)文件進(jìn)行讀取和存儲(chǔ),在測(cè)試腳本中可針對(duì)不同的測(cè)試用例,引入這些測(cè)試數(shù)據(jù)及相應(yīng)的變量.
(3)關(guān)鍵字驅(qū)動(dòng)的測(cè)試階段[3].在數(shù)據(jù)驅(qū)動(dòng)測(cè)試的基礎(chǔ)上,從測(cè)試工具中分離出一種改進(jìn)的測(cè)試用例設(shè)計(jì)方案,其主要思想是:將腳本和數(shù)據(jù)區(qū)分,將外面界面對(duì)象和內(nèi)部測(cè)試元素區(qū)分,同時(shí)也將測(cè)試描述與具體實(shí)現(xiàn)細(xì)節(jié)進(jìn)行區(qū)分.
(4)模型驅(qū)動(dòng)的測(cè)試階段[4].每一個(gè)模型等同于一個(gè)測(cè)試場(chǎng)景,通過(guò)不同的場(chǎng)景設(shè)計(jì)不同的初始化條件,為用戶設(shè)計(jì)出更加清晰、準(zhǔn)確的測(cè)試用例,所構(gòu)建的測(cè)試模型將減少測(cè)試用例的維護(hù)工作,實(shí)現(xiàn)資源的重利用.
1.3 自動(dòng)化測(cè)試框架
所謂自動(dòng)化測(cè)試框架,即在自動(dòng)化測(cè)試過(guò)程中所使用的框架,可理解為由一個(gè)或多個(gè)自動(dòng)化測(cè)試基本模塊、管理模塊及統(tǒng)計(jì)模塊等所組成的工具集合.該工具集合要么提供最基礎(chǔ)的自動(dòng)化功能測(cè)試模塊,如:Selenium、Watir等,當(dāng)使用它們打開(kāi)一個(gè)被測(cè)頁(yè)面時(shí),通過(guò)模擬鼠標(biāo)和鍵盤,點(diǎn)擊或操作該頁(yè)面中的被測(cè)對(duì)象,驗(yàn)證該對(duì)象的屬性是否正確,以此判斷整個(gè)程序的正確性;或者提供自動(dòng)化測(cè)試執(zhí)行和管理所需的模塊,如:Robot、STAF等,它們并不為自動(dòng)化測(cè)試提供基礎(chǔ)支撐,而僅僅用于組織、管理和執(zhí)行那些已經(jīng)設(shè)計(jì)好的測(cè)試用例,如:Robot框架就可以集成Selenium框架[5].
2.1 Selenium構(gòu)成
Selenium是一套由Thought Works員工所開(kāi)發(fā)的、開(kāi)源的測(cè)試工具,主要用于解決在功能測(cè)試或驗(yàn)收測(cè)試中Junit無(wú)法勝任的自動(dòng)化測(cè)試中的問(wèn)題,尤其是在代碼層面之上,當(dāng)面臨Web系統(tǒng)與用戶之間進(jìn)行交互時(shí)所需進(jìn)行的回歸測(cè)試、集成測(cè)試及冒煙測(cè)試等.可支持不同操作系統(tǒng)之下多種瀏覽器及各瀏覽器的不同版本,同時(shí)也支持各類編程語(yǔ)言,目前已有Selenium1.0和Selenium 2.0兩個(gè)版本,其中Selenium 2.0集成了WebDriver[6],為解決復(fù)雜Web頁(yè)面中重新加載和動(dòng)態(tài)網(wǎng)頁(yè)等問(wèn)題提供了支持.
Selenium中主要包括:Selenium Core、Selenium IDE、Selenium Remote Control(RC)及 Selenium Grid等模塊,其構(gòu)成如下圖1所示.
圖1 Selenium構(gòu)成
2.2 Selenium工作原理
Selenium是一套在網(wǎng)絡(luò)環(huán)境中使用的測(cè)試工具集合,所有配置好的命令均可在瀏覽器中運(yùn)行,以達(dá)到直接模擬用戶操作的目的.具體的架構(gòu)如下圖2所示.
圖2 Selenium架構(gòu)
2.3 Selenium使用環(huán)境
利用Selenium進(jìn)行Web自動(dòng)化測(cè)試時(shí),需首先搭建測(cè)試所需的各類環(huán)境,具體的使用環(huán)境如下表1所示.
表1 Selenium的使用環(huán)境
本節(jié)以下內(nèi)容主要描述利用Selenium針對(duì)具體實(shí)例進(jìn)行測(cè)試的過(guò)程.
3.1 分析實(shí)例系統(tǒng)測(cè)試需求
本文擬采用的被測(cè)對(duì)象是QQ郵箱的常用模塊——用戶登錄模塊,這也是Web應(yīng)用中最常見(jiàn)的測(cè)試對(duì)象.具體的測(cè)試需求點(diǎn)如下表2所示.
表2 實(shí)例系統(tǒng)測(cè)試需求
3.2 設(shè)計(jì)測(cè)試用例
根據(jù)上述測(cè)試需求,對(duì)測(cè)試需求1涉及到的部分測(cè)試用例進(jìn)行設(shè)計(jì),結(jié)果如下表3所示.
3.3 錄制測(cè)試過(guò)程
使用Selenium IDE錄制所需腳本,步驟如下:
表3 測(cè)試需求1對(duì)應(yīng)的測(cè)試用例
Step1:在Firefox中添加Selenium IDE插件;
Step2:將待測(cè)網(wǎng)頁(yè)的 URL地址——https://mail.qq.com/,填入Selenium IDE的Baseurl欄中,點(diǎn)擊錄制按鈕開(kāi)始錄制;
Step3:在Firefox中訪問(wèn)上述Baseurl網(wǎng)頁(yè),并模擬正常登錄過(guò)程,填寫賬號(hào)、密碼等信息,再點(diǎn)擊登錄按鈕進(jìn)入QQ郵件頁(yè)面;
Step4:上述過(guò)程都記錄在Selenium IDE中,所得腳本如下圖3所示.至此,錄制過(guò)程結(jié)束.
圖3 Selenium IDE界面
其中,Command代表所執(zhí)行的操作,Target代表操作的對(duì)象,Value代表所輸入的值.Selenium IDE主要通過(guò)這三個(gè)參數(shù),來(lái)定位網(wǎng)頁(yè)元素,從而完成腳本的錄制過(guò)程.
3.4 生成測(cè)試腳本
在Selenium IDE中,選擇“文件→Export Test Case As…→Java/JUnit4/WebDriver”操作,將IDE 與Selenium 2.0相結(jié)合,同時(shí)完成IDE向Web-Driver之Java腳本的轉(zhuǎn)化,并進(jìn)一步生成Junit 4框架格式的腳本文件.
3.5 執(zhí)行并分析測(cè)試結(jié)果
編輯并調(diào)試好3.4節(jié)的測(cè)試腳本之后,在E-clipse IDE中運(yùn)行該腳本時(shí),WebDriver會(huì)自動(dòng)啟動(dòng)瀏覽器Firefox,同時(shí)“https://mail.qq.com/”網(wǎng)頁(yè)會(huì)被打開(kāi),然后在賬號(hào)和密碼處分別自動(dòng)填上3.2節(jié)測(cè)試用例01中的輸入項(xiàng),即賬號(hào):2956521682,密碼:sele123456,并自動(dòng)單擊“登錄”按鈕,跳轉(zhuǎn)至QQ郵箱頁(yè)面.此時(shí)的測(cè)試結(jié)果是“登錄成功并跳轉(zhuǎn)成功”,與該測(cè)試用例的預(yù)期輸出相符合.故斷言成功,測(cè)試通過(guò).
修改測(cè)試用例腳本,將密碼改為3.2節(jié)測(cè)試用例02中的輸入值后,再次運(yùn)行該腳本,會(huì)發(fā)現(xiàn)有錯(cuò)誤提示,此時(shí)斷言失敗,測(cè)試不能通過(guò).
本文在已有的研究基礎(chǔ)之上,給出了自動(dòng)化測(cè)試的定義、發(fā)展歷程及框架,研究了自動(dòng)化測(cè)試工具Selenium的構(gòu)成、工作原理及使用環(huán)境,并結(jié)合具體的實(shí)例給出了利用Selenium的進(jìn)行測(cè)試的工作過(guò)程.本文的研究工作對(duì)高?!盾浖y(cè)試》教學(xué)有一定的指導(dǎo)作用.值得注意的是,盡管自動(dòng)化測(cè)試在針對(duì)大量重復(fù)性測(cè)試工作方面提供了重要的解決方案,但在該過(guò)程中,測(cè)試人員的主要時(shí)間和精力都花在如何編寫、如何調(diào)試以及如何優(yōu)化維護(hù)測(cè)試代碼之上,這將導(dǎo)致軟件測(cè)試有可能偏離原始的軌跡[7].因此,在實(shí)施軟件測(cè)試的過(guò)程中,要正確認(rèn)識(shí)自動(dòng)化測(cè)試,并能根據(jù)真實(shí)的用戶需求,將手工測(cè)試與自動(dòng)化測(cè)試有機(jī)地結(jié)合在一起,發(fā)揮各自的作用,提高測(cè)試效率.
參考文獻(xiàn):
〔1〕Glenford J.Myers,Tom Badgett,Corey Sandler.軟件測(cè)試的藝術(shù)(原書第3版)[M].北京:機(jī)械工業(yè)出版社,2013.
〔2〕張?zhí)?基于Selenium的Web自動(dòng)化測(cè)試[D].北京:北京交通大學(xué),2014.
〔3〕Priya Gupta,Prafullakumar Surve.Model based Approach to Assist Test Case Creation,Execution,and Maintenance for Test Automation[C].Proceedings of the First International Workshop on End-to-End Test Script Engineering, New York,USA,2011,1-7.
〔4〕秦海光.基于Selenium自動(dòng)化測(cè)試框架的改進(jìn)與應(yīng)用[D].北京:中國(guó)科學(xué)院大學(xué),2014.
〔5〕黃華林.使用Selenium進(jìn)行Web應(yīng)用自動(dòng)化測(cè)試的研究[J].電腦開(kāi)發(fā)與應(yīng)用,2012,25(4):54-56.
〔6〕吳伶琳.基于Selenium的軟件自動(dòng)化測(cè)試的研究與應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2013(2):65-68.
〔7〕武劍潔.軟件測(cè)試使用教程——方法與實(shí)踐(第2版)[M].北京:電子工業(yè)出版社,2012.
中圖分類號(hào):TP311.5
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1673-260X(2016)05-0019-03
收稿日期:2016-03-09
基金項(xiàng)目:福建省大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目(201511312007);福建省中青年教師教育科研項(xiàng)目(JA15489);龍巖學(xué)院第三批教學(xué)改革項(xiàng)目(2014JY29)
通訊作者:陳佳麗,女,湖北仙桃人,龍巖學(xué)院信息工程學(xué)院講師,研究方向:軟件測(cè)試,信息安全
赤峰學(xué)院學(xué)報(bào)·自然科學(xué)版2016年9期