吳小東 裴頌文,2
1(上海理工大學(xué)計(jì)算機(jī)科學(xué)與工程系 上海 200093)2(中國科學(xué)院計(jì)算技術(shù)研究所計(jì)算機(jī)體系結(jié)構(gòu)國家重點(diǎn)實(shí)驗(yàn)室 北京 100190)
?
面向?yàn)g覽器不兼容性的自動(dòng)化測試的研究
吳小東1裴頌文1,2
1(上海理工大學(xué)計(jì)算機(jī)科學(xué)與工程系上海 200093)2(中國科學(xué)院計(jì)算技術(shù)研究所計(jì)算機(jī)體系結(jié)構(gòu)國家重點(diǎn)實(shí)驗(yàn)室北京 100190)
隨著Web應(yīng)用技術(shù)的快速發(fā)展及瀏覽器和平臺(tái)數(shù)量的不斷增長,跨瀏覽器的不兼容性問題顯得越來越突出。盡管現(xiàn)有的瀏覽器不兼容性測試工具較多,但是大多數(shù)的測試工具是手工測試,耗時(shí)過長,容易出錯(cuò),而且國內(nèi)對(duì)于跨瀏覽器不兼容性的自動(dòng)化測試問題缺乏系統(tǒng)性研究。因此基于爬蟲工具生成應(yīng)用程序的導(dǎo)航模型,以及等價(jià)性檢查技術(shù)和自動(dòng)化測試系統(tǒng)(ATS)提出一種檢測跨瀏覽器不兼容性問題的方法,并結(jié)合已有的測試工具進(jìn)行比較。實(shí)驗(yàn)結(jié)果表明,該方法能夠有效地自動(dòng)識(shí)別和測試跨瀏覽器不兼容性問題。
跨瀏覽器不兼容性爬蟲工具導(dǎo)航模型等價(jià)性檢查自動(dòng)化測試系統(tǒng)
隨著互聯(lián)網(wǎng)技術(shù)在全球范圍內(nèi)的快速發(fā)展,Web應(yīng)用程序的使用在我們的日常生活中變得越來越廣泛?,F(xiàn)代的Web應(yīng)用程序內(nèi)容比較豐富,交互能力強(qiáng)及 AJAX和 Flash技術(shù)的發(fā)展,在客戶端為終端用戶提供了更強(qiáng)大的功能和應(yīng)用。而且近一些年來出現(xiàn)的瀏覽器及計(jì)算平臺(tái)越來越多,各具特色。當(dāng)Web應(yīng)用程序在不同的瀏覽器和平臺(tái)上運(yùn)行時(shí),Web應(yīng)用程序在外觀、結(jié)構(gòu)和行為上將會(huì)產(chǎn)生一些差異。因此跨瀏覽器不兼容性越來越受到許多開發(fā)者及用戶的普遍關(guān)注。
早期的一些測試工具主要是在不同的客戶端平臺(tái)上為瀏覽Web應(yīng)用程序提供仿真環(huán)境,比如Microsoft Expression web和 Adobe BrowserLab。雖然這些工具提供了一些仿真和可視化的基礎(chǔ)設(shè)施,但是識(shí)別和比較行為差異仍然需要用戶去做。Eaton等[1]提出了識(shí)別Web頁面有問題的HTML標(biāo)簽的方法并手動(dòng)分類正確和錯(cuò)誤的頁面,但是現(xiàn)代Web應(yīng)用程序不僅局限于頁面的HTML標(biāo)簽,還包括HTML結(jié)構(gòu)、CSS樣式和DOM的動(dòng)態(tài)特征,顯然不能滿足測試的需要。Tamm[2]提出了一個(gè)使用DOM和視覺信息的方法,找出單一頁面的布局問題。在截圖過程中它要求用戶手動(dòng)改變頁面,因此這種技術(shù)不適用于動(dòng)態(tài)生成頁面。
在國外,一些CBI自動(dòng)化測試工具應(yīng)運(yùn)而生。Choudhary等[3]提出了WEBDIFF工具,結(jié)合頁面DOM結(jié)構(gòu)和基于計(jì)算機(jī)視覺技術(shù)的視覺比較來檢測CBI的結(jié)構(gòu)差異,但它并沒有提出檢測CBI行為差異的方法。Mesbah等[4]提出了 CROSST工具,使用自動(dòng)化爬蟲工具和導(dǎo)航模型比較來檢測CBI的行為差異。Roy Choudhary等[5]提出了CROSSCHECK工具,它結(jié)合了WEBDIFF和CROSST的兩種方法,利用基于錯(cuò)誤檢測的機(jī)器學(xué)習(xí)[6]技術(shù),更好地檢測了CBI的行為和結(jié)構(gòu)差異。在國內(nèi),隨著我國經(jīng)濟(jì)的飛速發(fā)展,軟件行業(yè)對(duì)于軟件自動(dòng)化測試的需求與標(biāo)準(zhǔn)越來越高,市場上對(duì)出現(xiàn)的軟件自動(dòng)化測試工具日益增多。但是市場上對(duì)瀏覽器兼容性進(jìn)行自動(dòng)化測試的工具并不多見,已有的學(xué)術(shù)研究也沒有對(duì)CBI檢測問題進(jìn)行過系統(tǒng)性的研究。因此本文基于現(xiàn)有的一些方法對(duì)CBI測試提出CBI的方法和框架,并結(jié)合我們以前研究的自動(dòng)化測試工具ATS[7],較好地完成跨瀏覽器不兼容性自動(dòng)化測試的工作。
1.1Web應(yīng)用程序和Web瀏覽器
Web應(yīng)用程序是一種通過互聯(lián)網(wǎng)能夠讓W(xué)eb瀏覽器和服務(wù)器通訊的計(jì)算機(jī)程序。終端用戶可以通過Web瀏覽器與Web應(yīng)用程序的客戶端進(jìn)行交互,比如看網(wǎng)頁、輸入數(shù)據(jù)和執(zhí)行操作等。這些交互操作通過客戶端向服務(wù)器發(fā)出請(qǐng)求,然后服務(wù)器響應(yīng)這些請(qǐng)求來更新當(dāng)前Web網(wǎng)頁。Web網(wǎng)頁由HTML或XML腳本語言編碼而成。它還包括其他的相關(guān)資源,比如CSS樣式表、客戶端代碼(JavaScript)、圖像、FLASH等。最后Web網(wǎng)頁被渲染后顯示在瀏覽器上。
Web瀏覽器是由大量組件構(gòu)成的相當(dāng)復(fù)雜的應(yīng)用程序。Grosskurth等[8]提出了幾個(gè)Web開源瀏覽器的相關(guān)架構(gòu)。在瀏覽器所有的組件中,布局引擎是最重要的瀏覽器組件。它結(jié)合了頁面的HTML的結(jié)構(gòu)信息和CSS樣式表的格式信息,負(fù)責(zé)渲染W(wǎng)eb頁面。瀏覽器在內(nèi)存中保存頁面的DOM表示以便讓客戶端腳本去動(dòng)態(tài)修改Web頁面。布局引擎是跨瀏覽器不兼容性問題的主要來源之一,因?yàn)橥瑯拥腍TML/DOM和CSS在不同的瀏覽器中可能產(chǎn)生不同的頁面。第二個(gè)組件是事件處理引擎或DOM引擎,它主要負(fù)責(zé)處理用戶操作和執(zhí)行基于瀏覽器DOM-API的變化。由于各個(gè)瀏覽器的事件處理算法的不同以及支持的DOM-API不同,它也是跨瀏覽器不兼容性問題的來源之一。因此,同樣的用戶操作可能引起不同的DOM變化。第三個(gè)引起跨瀏覽器不兼容性問題的來源是JavaScript引擎即執(zhí)行瀏覽器JavaScript代碼的運(yùn)行時(shí)環(huán)境。因?yàn)椴煌臑g覽器的JavaScript引擎存在著微妙而明確的差異, 會(huì)產(chǎn)生不同的行為差異。
1.2DOM,Crawljax和ATS
DOM[9]即文檔對(duì)象模型,是面向HTML和XML的應(yīng)用程序接口(API)。該模型定義了HTML文件和XML文件在內(nèi)存中的文檔結(jié)構(gòu),提供了對(duì)HTML和XML文件的訪問、存取方法。DOM將整個(gè)HTML頁面文檔或XML數(shù)據(jù)文檔規(guī)劃成由多個(gè)相互連接的節(jié)點(diǎn)級(jí)構(gòu)成的文檔,文檔中的每個(gè)部分都可以看作是一個(gè)節(jié)點(diǎn)。這樣一個(gè)節(jié)點(diǎn)的集合看作是一個(gè)DOM文檔樹,通過這個(gè)DOM文檔樹,開發(fā)者可以對(duì)文檔的內(nèi)容和結(jié)構(gòu)擁有強(qiáng)大的控制力, 同時(shí)使用DOM API可以在文檔樹里十分方便地遍歷、添加、刪除、修改和替換節(jié)點(diǎn),由此生成豐富的應(yīng)用形式。DOM與平臺(tái)和語言是無關(guān)的,因而可以在各種平臺(tái)和語言上實(shí)現(xiàn)。
Crawljax爬蟲工具是由Java語言編寫而成的開放源代碼軟件,能夠自動(dòng)捕捉和抓取基于AJAX技術(shù)的Web應(yīng)用程序。Crawljax通過一個(gè)動(dòng)態(tài)爬行引擎驅(qū)動(dòng)來探測任何基于 Ajax Web應(yīng)用程序。它能夠根據(jù)DOM狀態(tài)和狀態(tài)之間的轉(zhuǎn)換來創(chuàng)建一張狀態(tài)圖。這張推論出的狀態(tài)圖為各種類型的測試分析和測試技術(shù)提供了一個(gè)強(qiáng)大的工具,比如:測試生成、基于變量的測試、檢測失效鏈接、非功能測試、檢測未使用的代碼等。Mesbah等[10]詳細(xì)介紹了Crawingjax的算法和方法并討論了Crawljax測試工具的具體實(shí)現(xiàn)。
ATS是一個(gè)與測試業(yè)務(wù)無關(guān)的平臺(tái),可以用于任何測試(如功能測試、性能測試等)及測試任何對(duì)象,也可以用于軟件自動(dòng)化黑盒測試。ATS支持測試腳本、支持任意的測試項(xiàng)目組合及時(shí)間調(diào)度、支持在不同的服務(wù)器上分布式地運(yùn)行測試腳本和提供統(tǒng)一友好的用戶界面。ATS服務(wù)器采用純Java實(shí)現(xiàn),具有跨平臺(tái)性特性。ATS是基于J2EE的Struts[11]理論的MVC模式開發(fā),服務(wù)器采用了Tomcat服務(wù)器技術(shù),客戶端采用JSP技術(shù)構(gòu)建Web頁面,后臺(tái)事務(wù)處理采用Java Beans技術(shù)。ATS采用Web網(wǎng)頁編寫界面,用戶在ATS界面上所有的操作請(qǐng)求發(fā)送給Web服務(wù)器來處理并采用Struts來構(gòu)建Web網(wǎng)頁及請(qǐng)求處理器,通過Hibernate[12]來進(jìn)行數(shù)據(jù)庫操作,從而加強(qiáng)ATS系統(tǒng)的健壯性、可維護(hù)性、易擴(kuò)展性。
本文的研究方法包括三個(gè)步驟:(1) 在不同的瀏覽器運(yùn)行環(huán)境下通過Crawljax爬蟲工具自動(dòng)抓取或捕捉目標(biāo)Web應(yīng)用程序,并生成導(dǎo)航模型。這些模型可能包括Web應(yīng)用程序的一系列的用戶交互信息、下載信息、顯示內(nèi)容、窗口布局、鏈接切換等。(2) 比較兩個(gè)不同瀏覽器應(yīng)用程序的生成模型,發(fā)現(xiàn)它們之間的差異。(3) 生成CBI報(bào)告提交給Web應(yīng)用開發(fā)者,讓他們確定原因并解決這些問題。
2.1導(dǎo)航模型
導(dǎo)航模型(記為M)是由爬蟲工具捕捉Web應(yīng)用程序生成的,也稱為有限狀態(tài)機(jī)。它的狀態(tài)和轉(zhuǎn)換分別表示終端用戶在Web瀏覽器上所觀察到的頁面和用戶操作(例如點(diǎn)擊控件)。每一個(gè)狀態(tài)由可編程語言來表示,每一個(gè)轉(zhuǎn)換由用戶操作的名稱來標(biāo)記。對(duì)于每一個(gè)觀察到的狀態(tài)和相應(yīng)的頁面,導(dǎo)航模型記錄了頁面的截圖、頁面的DOM表示、頁面的每一個(gè)DOM元素的可視化表示等。為了有效地比較多個(gè)導(dǎo)航模型,我們提出了從層次化角度來查看和分析這個(gè)導(dǎo)航模型。它的頂層是有限狀態(tài)機(jī)的圖表示,我們稱它為狀態(tài)圖,它主要捕捉一系列頁面操作痕跡比如交替用戶操作序列及頁面轉(zhuǎn)換。它的每一個(gè)狀態(tài)對(duì)應(yīng)著終端用戶在瀏覽器中所觀察到的一個(gè)頁面。每一條邊對(duì)應(yīng)著兩個(gè)狀態(tài)之間的轉(zhuǎn)換,由用戶操作(例如點(diǎn)擊)和轉(zhuǎn)換引起的元素標(biāo)記。第二層是每個(gè)狀態(tài)(頁面)的完整可編程語言表示,我們稱它為頁面模型,它描述了每一個(gè)瀏覽器頁面的詳細(xì)信息。以下分別對(duì)狀態(tài)圖、頁面模型進(jìn)行了定義。
定義1(狀態(tài)圖)狀態(tài)圖G是一個(gè)帶有標(biāo)記的有向圖并包含一個(gè)特定的始點(diǎn)。它由五元組G(V, E, O, L,F)表示:
V:頂點(diǎn)集合
E:有向邊集合
O:特定始點(diǎn)
L:字母標(biāo)記
F:標(biāo)記函數(shù)
G具有以下的具體特征:
(1) 每一個(gè)標(biāo)記至多出現(xiàn)在所給定頂點(diǎn)的一個(gè)出邊上,即在整個(gè)圖中,盡管有同樣的標(biāo)記出現(xiàn)在幾個(gè)邊上,但沒有一個(gè)頂點(diǎn)會(huì)有兩個(gè)或多個(gè)同樣標(biāo)記的出邊。
(2) 圖G可以有多重邊,即e1,e2∈ E : s(e1)=s(e2)和d(e1)=d(e2)。
(3) 每一個(gè)節(jié)點(diǎn)可由根節(jié)點(diǎn)r到達(dá),即圖G由單一連結(jié)組件組成。
(4) 圖可以是環(huán)狀的。
特定結(jié)點(diǎn)O通常表示始點(diǎn)或Web應(yīng)用程序的頁面。對(duì)于邊e=(u,v),我們用s(e)表示一個(gè)源頂點(diǎn)u,d(e)表示一個(gè)目的頂點(diǎn)v;In(v)和Out(v)分別表示頂點(diǎn)V的一組入邊和出邊。
定義2(頁面模型)頁面模型是一個(gè)帶有根節(jié)點(diǎn)的有向標(biāo)記樹。它由五元組T(Q,D, R,T,F)表示:
Q:頂點(diǎn)集合
D:有向邊集合
R:根節(jié)點(diǎn)
T:標(biāo)記集合
F:標(biāo)記函數(shù)
頁面模型是構(gòu)成Web頁面的DOM樹結(jié)構(gòu)的抽象表示。此模型包括客戶端狀態(tài)的許多信息比如JavaScript 變量值或CSS的屬性等。參數(shù)Q、D和R在DOM樹中有明顯的含義。一個(gè)特定節(jié)點(diǎn)的標(biāo)記就是DOM節(jié)點(diǎn)的HTML標(biāo)簽名。一組名-值對(duì)表示DOM節(jié)點(diǎn)的屬性。我們使用單一標(biāo)記對(duì)數(shù)據(jù)進(jìn)行抽象的表示,以便將這個(gè)模型形式化并對(duì)其進(jìn)行等價(jià)性驗(yàn)證。
2.2等價(jià)性檢查
從導(dǎo)航模型的層次角度分析,我們將等價(jià)性檢查分為行為等價(jià)性檢查和頁面等價(jià)性檢查。它對(duì)不同瀏覽器的生成模型進(jìn)行匹配比較找出行為差異。以下詳細(xì)討論了行為等價(jià)的概念及行為等價(jià)性檢驗(yàn)算法。
定義3(行為等價(jià))給出兩個(gè)狀態(tài)圖G1(V1,E1,o1,L,F1)和G2(V2,E2,o2,L,F2),若G1與G2行為等價(jià),記為G1≡G2,當(dāng)且僅當(dāng)存在一個(gè)雙射函數(shù)M: V1→V2以下都是正確的:
(1) ?u,v∈V1,(u, v)∈E1?(M(u),M(v))∈V2
(2) ?e1(u1,v1)∈E1,e2(u2,v2)∈E2,M(u1)=u2&&M(v1)=v2?F1(e1)=F2(e1)
(3) M(o1)=o2
算法1是匹配一對(duì)導(dǎo)航模型M1和M2的整個(gè)算法。函數(shù)StateGraph返回底層狀態(tài)圖,它的值作為輸入值傳遞給函數(shù)TraceEquivCheck。如果狀態(tài)圖G1和G2不等價(jià),則返回錯(cuò)誤。函數(shù)OutTraceDiff(G1,G2)從注釋狀態(tài)圖中提取行為差異。TraceEquivCheck(G1,G2)算法實(shí)現(xiàn)了兩個(gè)狀態(tài)圖G1和G2作為一個(gè)同構(gòu)檢查的行為等價(jià)性檢查。OUT(v)返回頂點(diǎn)V的一組出邊,LABEL(e)返回邊e的標(biāo)簽。函數(shù)Lookup(l,edgeSet)返回帶有標(biāo)簽l的一個(gè)邊,如果它不存在,則返回null。Dest(e)返回邊e的目的頂點(diǎn)。在G1和G2中,假定每個(gè)邊的匹配字段初始化是false,每個(gè)頂點(diǎn)的訪問字段初始化都是null。整個(gè)算法是深度優(yōu)先遍歷和線性時(shí)間的一個(gè)簡單變體。
算法描述如下:
算法1ModelEquivCheck(M1,M2)
G1← StateGraph(M1)
G2← StateGraph(M2)
if (TraceEquivCheck(G1,G2) = false)
then OutTraceDiff(G1,G2)
TraceEquivCheck(G1,G2)
procedure Match(u1,u2)
u1.visited←true
u2.visited←true
u1.match←u2
u2.match←u1
For each e1∈Out(u1)do
e2←LOOKUP(Label(e1),Out(u2))
if (e2≠null) then
v1←Dest(e1)
v2←Dest(e2)
if ((v1.visited=false)&
(v2.visited=false))
then
e1.match←true
e2.match←true
edgeCt+= 2
Match(v1,v2)
else if((v1.match=v2)&
(v1.visited=true)&
(v2.visited=true))
then
e1.match←true
e2.match←true
edgeCt+= 2
main
global edgeCt
edgeCt←0
o1←StartVertex(G1)
o2←StartVertex(G2)
Match(o1,o2)
if (edgeCt=|E1|+|E2|)
then return(true) comment:G1≡G2
else return(false) comment:G1≠G2
2.3CBI比較
我們?cè)谒惴?中給出了對(duì)跨瀏覽器不兼容性問題檢測的整體方法。算法的輸入值包括目標(biāo)應(yīng)用程序打開頁面的url,兩個(gè)被測試的瀏覽器Br1、Br2。算法的輸出值是CBI的列表L。
2.3.1抓取和捕捉模型
這一階段是在兩個(gè)不同的瀏覽器Br1和Br2中。我們通過爬蟲工具Crawljax抓取應(yīng)用程序和記錄終端用戶所觀察到的行為,分別記為導(dǎo)航模型M1、M2,它們由函數(shù)genCrawlModel(url, Br1,Br2)實(shí)現(xiàn)。Mesbah等[10]詳細(xì)介紹了Crawingjax爬蟲工具的具體功能實(shí)現(xiàn)。
2.3.2模型比較
這一階段比較導(dǎo)航模型M1和M2并記錄它們之間的差異。主要有以下的四種不同的CBI比較:
p=0.7×c+0.2×d+0.1×e
結(jié)構(gòu)CBI比較為了比較結(jié)構(gòu)CBI(布局CBI),我們可以使用Roy Choudhary 等人在參考文獻(xiàn)[13]中提到的方法。他們定義了一個(gè)模型叫排列圖記為A。主要執(zhí)行兩個(gè)步驟:(1) 分別從兩個(gè)不同的瀏覽器的頁面布局中提取排列圖A1,A2;(2) 用等價(jià)性檢驗(yàn)算法比較兩個(gè)排列圖找出它們之間的差異性。在算法2第8行中由函數(shù)diffLayout()實(shí)現(xiàn)的(詳細(xì)算法請(qǐng)參閱文獻(xiàn)[13]中的算法1和算法2)。
算法2CBI 整體算法
輸入url:URL of target web application Br1,Br2: Two browsers
輸出L: List of CBI
1 begin
2 (M1,M2)←genCrawlModel(url, Br1,Br2)
//比較狀態(tài)圖
3 (T, PageMatchList)←TraceEquivCheck(M1,M2)
// 比較頁面匹配對(duì)
//視覺CBI比較
//結(jié)構(gòu)CBI比較
9end
10end
//生成CBI報(bào)告列表
11 L←computeCBI(T, V, B, PageMatchList)
12 return L
13 end
3.1CBI的架構(gòu)
如圖1所示,本文的CBI架構(gòu)主要包括三個(gè)組成部分:模型收集器、模型比較器和報(bào)告生成器。
圖1 CBI架構(gòu)
模型收集器接受一個(gè)Web應(yīng)用程序,使用現(xiàn)有的網(wǎng)絡(luò)爬蟲 (Crawljax)工具從多個(gè)瀏覽器提取其導(dǎo)航模型。模型比較器主要是執(zhí)行各個(gè)不同的CBI的比較。報(bào)告生成器以HTML的格式生成CBI報(bào)告給Web開發(fā)者,讓他們能夠發(fā)現(xiàn)CBI并及時(shí)找出原因。
3.2CBI的自動(dòng)化測試結(jié)構(gòu)
CBI的體系結(jié)構(gòu)主要由分布執(zhí)行服務(wù)器、屏幕捕捉服務(wù)器和Web服務(wù)測試三部分組成,如圖2所示。分布執(zhí)行服務(wù)器是整個(gè)體系結(jié)構(gòu)的核心部分,主要負(fù)責(zé)測試腳本執(zhí)行和測試任務(wù)分配。分布式執(zhí)行引擎主要實(shí)現(xiàn)自動(dòng)化測試、Web服務(wù)測試的交流信息和屏幕捕捉信息的交互。屏幕捕捉服務(wù)器主要實(shí)現(xiàn)捕捉瀏覽器的接口和組件,然后將消息遞交給分布執(zhí)行服務(wù)器。這些信息儲(chǔ)存到屏幕捕捉服務(wù)器中,并通過消息傳遞接口傳送給分布式執(zhí)行引擎,經(jīng)過分析然后將測試內(nèi)容遞交給測試人員,從而了解到瀏覽器的不兼容性問題。
圖2 CBI自動(dòng)化測試系統(tǒng)結(jié)構(gòu)圖
3.3實(shí)驗(yàn)結(jié)果
在實(shí)驗(yàn)中, 本文選擇了兩個(gè)不同的瀏覽器:火狐瀏覽器(版本24)和IE瀏覽器(版本 8.0),它們都在 Microsoft Window 7 環(huán)境下運(yùn)行。我們隨機(jī)選取了五個(gè)不同的應(yīng)用程序,它們分別來自不同領(lǐng)域的類型網(wǎng)站,這樣能夠使測試數(shù)據(jù)更加合理。如表1所示,它包括名稱、網(wǎng)址和類型。我們利用現(xiàn)有的WEBDIFF和CROSST測試方法分別對(duì)以下不同的應(yīng)用程序測試。
表1 測試對(duì)象
表2給出了三種測試方法的測試數(shù)據(jù)。這些測試數(shù)據(jù)由報(bào)告生成器生成,并由我們?nèi)斯そy(tǒng)計(jì)得出列表2。第一列顯示了測試對(duì)象的名稱,其他幾列給出了瀏覽器不兼容性問題的個(gè)數(shù),包括行為差異、視覺差異、結(jié)構(gòu)差異和總數(shù)差異。由表2的實(shí)驗(yàn)結(jié)果比較表明,我們發(fā)現(xiàn)對(duì)于WEBDIFF和CROSST測試工具都不能完全地測試應(yīng)用程序的行為、視覺和結(jié)構(gòu)差異;而CBI的測試方法能夠很好地自動(dòng)測試和識(shí)別跨瀏覽器不兼容性的行為、視覺和結(jié)構(gòu)差異,并且該方法還能節(jié)省大量的時(shí)間。例如表2所示的hupu應(yīng)用程序,它包括1個(gè)行為差異、1個(gè)視覺差異和16個(gè)結(jié)構(gòu)差異,共18個(gè)差異,而WEBDIFF測試僅共有11個(gè)差異,CROSST測試僅共有1個(gè)差異。
表2 WEBDIFF、CROSST和CBI的測試結(jié)果
跨瀏覽器不兼容性對(duì)于Web應(yīng)用開發(fā)者來說是一個(gè)常見的問題,研究它們具有重要的現(xiàn)實(shí)意義。本文結(jié)合現(xiàn)有的一些技術(shù)提出了檢測瀏覽器不兼容性問題的方法,并結(jié)合以前研究的自動(dòng)化測試框架,設(shè)計(jì)出了瀏覽器不兼容性測試的結(jié)構(gòu)。最后通過實(shí)驗(yàn)數(shù)據(jù)來驗(yàn)證了這一方法,達(dá)到了比較好的驗(yàn)證效果。
在未來的工作中,我們將會(huì)進(jìn)一步改進(jìn)自動(dòng)化設(shè)計(jì)系統(tǒng)(ATS)結(jié)構(gòu),提高工作效率,更好地滿足開發(fā)者和客戶的工作需要。今后也可以在不同的平臺(tái)上(桌面平臺(tái)、移動(dòng)平臺(tái)等),對(duì)跨平臺(tái)的不兼容性進(jìn)行研究。
[1] Eaton C,Memon A M.An empirical approach to evaluating web application compliance across diverse client platform configurations[C]//International Journal of Web Engineering and Technology,USA,2007:227-253.
[2] Tamm M.Fighting layout bugs[EB/OL].http://code.google.com/p/fighting-layout-bugs/.
[3] Roy Choudhary S,Versee H,Orso A.Webdiff:Automated identification of cross-browser issues in web applications[C]//Proc of the 26th IEEE International Conference on Software Maintenance (ICSM’2010).Timisoara,Romania,2010:1-10.
[4] Mesbah A,Prasad M R.Automated cross-browser compatibility test[C]//Proc of the 33rd International Conference on Software Engineering (ICSE’2011).NewYork,USA,2011:561-570.
[5] Roy Choudhary S,Prasad M R,Orso A.Crosscheck:Combining crawling and differencing to better detect cross-browser incompatibilities in web applications[C]//Proc of the IEEE Fifth International Conference on Software Testing (ICST’2012).Montreal,Canada,2012:171-180.
[6] Nataliia Semenenk,Marlon Dumas,T?nis Saar.Browserbite:Accurate cross-browser testing via machine learning over image features[C]//Proc of the 29th IEEE International Conference on Software Maintenance (ICSM’2013).San Francisco,USA,2013:528-531.
[7] 裴頌文,余強(qiáng),吳百鋒.一種新的基于J2EE技術(shù)的軟件自動(dòng)化測試系統(tǒng)的研究與實(shí)現(xiàn)[J].清華大學(xué)學(xué)報(bào),2007(6):51-56.
[8] Grosskurth A,Godfrey M W.A reference architecture for web browsers[C]//Proc of the 21st IEEE International Conference on Software Maintenance (ICWE’2005).Waterloo,Canada,2005:661-664.
[9] Keith J,Sambells J.DOM Scripting:Web Design with Javascript and the Document Object Model[J].Friends of Ed,2010.
[10] Mesbah A,Bozdag W,van Deursen A.Crawling ajax by inferring user interface state changes[C]//Proc of the 8th International Conference on Web Engineering (ICWE’2008).Vancouver,Canada,2008:122-134.
[11] 孫衛(wèi)琴.精通Structs:基于MVC的Java Web設(shè)計(jì)與開發(fā)[M].北京:電子工業(yè)出版社,2004.
[12] 夏昕,曹曉鋼,唐勇.深入淺出Hibernate[M].北京:電子工業(yè)出版社,2005.
[13] Roy Choudhary S,MukulR Prasad,Alessandro Orso.X-PERT:Accurate Identification of Cross-Browser Issues in Web Applications[C]//Proc of the 29th IEEE International Conference on Software Maintenance(ICSM’2013).San Francisco,USA,2013:702-711.
RESEARCH ON AUTOMATED TESTING FOR INCOMPATIBILITY OF CROSS-BROWSER
Wu Xiaodong1Pei Songwen1,2
1(DepartmentofComputerScienceandEngineering,UniversityofShanghaiforScienceandTechnology,Shanghai200093,China)2(StateKeyLaboratoryofComputerArchitecture,InstituteofComputingTechnology,ChineseAcademyofSciences,Beijing100190,China)
With the rapid development of Web application technology and constant growth in numbers of new browsers and platforms, cross-browser incompatibilities (CBI) problem becomes more and more noticeable. Though current testing tools for browsers’ incompatibilities are not just few, however most of them are in manual operation with time consuming and being error-prone, and there lacks the nationwide systematic researches on automated testing approach for CBI. Therefore, based on the navigation model of generating application with crawler tool, the equivalence checking technology and the automatic test system (ATS), we put forward a method of cross-browser incompatibility detection, and compare it among the existing testing tools. Experimental results show that the proposed method can effectively and automatically identify and test the cross-browser incompatibility problems.
Cross-browser incompatibility (CBI)Crawler toolNavigation modelEquivalence checkingAutomated testing system (ATS)
2014-08-19。
計(jì)算機(jī)體系結(jié)構(gòu)國家重點(diǎn)實(shí)驗(yàn)室開放課題項(xiàng)目(CARCH201206);上海理工大學(xué)國家級(jí)項(xiàng)目培育基金項(xiàng)目(12X GQ07)。
吳小東,碩士生,主研領(lǐng)域:軟件測試,安全測試。裴頌文,博士。
TP311.13
A
10.3969/j.issn.1000-386x.2016.03.004