999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

針對JavaScript瀏覽器兼容性的變異測試方法

2017-06-27 08:10:42勇,秦丹,楊
計算機應用 2017年4期
關鍵詞:實驗

程 勇,秦 丹,楊 光

北京化工大學 信息科學與技術學院,北京 100029)(*通信作者電子郵箱chengyong@mail.buct.edu.cn)

針對JavaScript瀏覽器兼容性的變異測試方法

程 勇*,秦 丹,楊 光

北京化工大學 信息科學與技術學院,北京 100029)(*通信作者電子郵箱chengyong@mail.buct.edu.cn)

針對JavaScript瀏覽器兼容性問題缺乏有效的測試方法的問題,基于變異測試技術,對Web應用程序中的JavaScript語言在主流瀏覽器中的兼容性進行了分析,設計了18個針對瀏覽器兼容性錯誤的變異算子并開發了自動化的測試工具Compatibility Mutator。該程序使用抽象語法樹(AST)分析JavaScript語法,使用Selenium WebDriver自動調用多個瀏覽器核心并行執行變異測試。通過對7個廣泛使用的JavaScript框架的實驗,驗證了此方法對每一個框架都能夠生成一定數量的變異體,其中對jQuery和YUI框架的變異測試的變異得分分別為43.06%和7.69%,表明了所設計的變異算子能夠觸發瀏覽器兼容性方面的錯誤,并且能夠評估測試用例集的完備性。

變異測試;JavaScript;兼容性;變異算子;測試工具

0 引言

當前市場上,無論是桌面設備還是移動設備上都存在多款瀏覽器,比較主流的如IE、Edge、Chrome、Firefox、Safari、Opera等。這些瀏覽器對W3C標準的實現存在細微的差異,這造成了廣受詬病的瀏覽器兼容性問題。這些瀏覽器在渲染和處理相同的頁面時,展現的行為存在差異。這些差異有可能很小,甚至不會被注意到;也可能很大,甚至造成在某個瀏覽器下正常的頁面在其他瀏覽器下無法正常解析。兼容性問題在所有瀏覽器上都存在,尤以IE為甚。這些冗雜的兼容性問題給前端開發人員帶來了相當大的困擾,降低了開發效率,增加了測試的成本。對于這些問題,通常只有基于經驗進行規避,現有的測試方法基本也主要依靠手工操作。如常用的Web兼容性測試工具IE Tester和Multibrowser,都是簡單地執行網頁而后依靠人工從外觀判斷網頁的運行效果,測試效率低且效果差。

通常,Web前端主要由HTML來控制內容、層疊樣式表(Cascading Style Sheets, CSS)控制樣式并使用JavaScript來展現行為,這三方面都可能存在兼容性問題。在本文中,主要考慮JavaScript腳本在不同瀏覽器行為方面的差異。JavaScript是一種動態類型、基于原型的語言,它由JavaScript引擎實時解釋并執行。JavaScript引擎是瀏覽器的組成部分,每個瀏覽器都有自己實現的JavaScript引擎,因此相同的JavaScript代碼就可能在不同瀏覽器得到不同的解釋。為了消除這種“行為差異”,就要求Web開發者開發大量的測試用例來發現這種兼容性錯誤。以往的軟件測試方法針對比較傳統的語言如C++[1]、C#[2]、Java[3]、SQL[4]等,開發了比較多的測試方法和自動化工具,而Web編程領域的測試技術一直較為滯后。考慮到當前現狀,本文主要將變異測試應用到Web兼容性測試中,通過變異的方法在程序中植入兼容性錯誤并開發相關工具來評價測試用例集在發現兼容性錯誤方面的能力。

變異測試是一種基于錯誤的用來評估和提高測試用例集質量的技術。“變異”指在符合語法的前提下人為向被測程序中植入故障的過程,植入故障的規則稱之為變異算子。符合某一變異算子變異修改規則的目標代碼語句,稱為該變異算子的變異點或稱為故障植入點。變異后的程序稱為變異體。利用變異算子找到變異點并進行變異,生成變異體。對變異體執行測試用例集,檢查植入的故障是否能被發現,如果測試用例集發現了變異體中植入的錯誤,那么就稱這個變異體被殺死了。這一過程可以形式化表示[5]如下:

m∈M,?t∈TS,o(t,m)

(1)

其中:m表示單個變異體;M表示變異體集合;t表示測試用例;TS表示測試用例集;o表示一個程序相對于測試用例的正確性。殺死變異體也就是意味著這個測試用例集可以檢測到這類錯誤。被殺死的變異體在所有生成的變異體(除去等價變異體)中所占的比例,稱為變異得分(MutationScore),即:

MS(P,T)=K/(M-E)

(2)

其中:P代表被測程序,T代表測試用例集,M代表變異體數量,K代表被殺死的變異體數量,E代表等價變異體數量,MS代表變異得分。參考這個變異得分,開發者即能夠評估測試用例集的完備性。

本文主要針對Web應用程序中的JavaScript語言在各個主流瀏覽器中的兼容性進行分析,設計了18個變異算子。選擇了7個實際的JavaScript框架進行了實驗研究,其中2個帶有測試用例集,另外5個沒有公開的測試用例集。對于帶有測試用例集的框架,本文進行了詳細的變異測試實驗;對于沒有測試用例集的框架,也進行了變異研究。本文的主要工作包括:針對瀏覽器的兼容性進行分析,設計了18個變異算子;開發了變異測試工具CompatibilityMutator,它使用SeleniumWebDriver自動調用多瀏覽器核心完成各個瀏覽器的測試,并且實現了多瀏覽器的并發執行,大大縮短了測試的時間,提高了測試效率;在7個實際應用框架上進行實驗,驗證所設計的變異算子能夠在實際程序中有效地植入瀏覽器兼容性方面的錯誤;實驗同時證明了設計的變異算子所生成的變異體能夠有效地檢測測試用例集的完備性。

1 相關研究

目前針對JavaScript語言進行變異測試的相關研究并不多,它們主要集中于幾個方面:

1)基于程序的結構和語法設計變異算子。如文獻[6]按照Web應用中的特征分類定義了10個覆蓋JavaScript特征的變異算子;文獻[7-8]針對變量、分支語句和JavaScript語言專有的變異算子進性了變異測試,并提出了用于篩選變異點的FunctionRank算法;文獻[9]通過對JavaScript和PHP程序應用一些變異算子對跨站點腳本安全問題進行了研究。

2)JavaScript語言的測試用例自動生成及縮減技術的優化。文獻[10]提出了一個自動生成測試用例的框架;文獻[11]提出一個新穎的方法減少測試用例,嘗試有選擇地保留冗余測試集。

3)研究變異測試在Web應用程序中的應用及優化。文獻[12]提出將變異分析應用到Web應用程序的軟件組件之間的連接;文獻[13]提出通過檢測動態常量來評估變異體產生的影響;文獻[14]通過檢查變異是否發生在運行路徑中來找出等價變異體。

4)在變異分析中應用的新方法。文獻[15]分析了OWL-S(WebOntologyLanguageforServices)的錯誤模式,并提出了一種基于本體的變異分析方法;文獻[16]對弱類型語言提出了動態變異分析方法,并實現了針對JavaScript語言的變異體縮減;文獻[17]將概念分析應用到用戶會話聚類中去選擇測試用例。

5)在瀏覽器兼容性測試方面:文獻[18-19]先后提出了WebDiff、CrossT、CrossCheck技術,用于自動檢查網頁在不同瀏覽器下運行的差異,包括DOM差異和外觀差異。文獻[20]提出了一個檢測跨瀏覽器兼容性問題的方法X-PERT,這個方法結合了新的和現有的不同技術,對文章中提到的每一種瀏覽器兼容問題都匹配了最合適檢測的方法以實現更高的準確率。文獻[21]將網頁在不同瀏覽器下的行為分別捕捉為有限自動機并比較其區別,從而自動找出DOM層代碼中的瀏覽器兼容問題。

現有的對JavaScript測試的研究主要集中于對測試用例集的約減和對測試方法的優化;在瀏覽器兼容性測試方面,主要集中于從外觀和DOM層自動檢測瀏覽器兼容性問題的存在;在變異測試方面,主要集中于對JavaScript標準語法的變異,或對變異測試方法的優化。但是,針對JavaScript的瀏覽器兼容性問題的變異測試目前還沒有系統的研究,本文將針對這個方面進行研究。

2 瀏覽器兼容性變異測試分析

本文針對Web應用程序中的JavaScript代碼在各個主流瀏覽器中的兼容性進行變異測試分析。針對兼容性問題的特點,選擇了14個存在兼容問題的屬性和方法,并設計了18個變異算子。

2.1 相關方法、屬性的兼容性分析

市面上有多款主流的瀏覽器,這些瀏覽器對W3C標準的實現各有細微的不同,變異算子設計所針對的相關方法和屬性在各個瀏覽器中的支持情況如表1所示。

表1 關于瀏覽器的一些函數和屬性的兼容性

注:incomplete表示IE9以下不兼容;√表示兼容;×表示不兼容。

以下舉例說明:

addEventListener()是DOM2級事件添加事件的處理方法,它有三個參數:事件名、事件處理函數、事件是否在捕獲或冒泡階段執行。當一個元素同時綁定多個事件時,按照事件綁定的順序來執行。

eg:element.addEleventListener("click",handler,false);

而attachEvent()是適用于IE下添加事件的處理方法,它只有兩個參數,分別為事件名和事件處理函數。當一個元素同時綁定多個事件時,按照事件綁定的相反順序執行;且事件名也是有差異的,例如對單擊事件,前者是“onclick”,后者是“click”。

eg:element.attachEvent("onclick",handler);

關于表中其他方法和屬性,將在3.2節詳細說明。

2.2 變異算子設計

對于普通的Web前端變異測試,一般的變異算子都是對變量名、屬性名等標識符或者其值的直接替換,例如:

button.click(showDetail)→button.mouseover(showDetail)

而瀏覽器兼容性問題的測試往往不是簡單的關鍵詞替換可以實現的,例如在IE瀏覽器下要獲得一個DOM對象的樣式需要使用如下代碼:

varmyDi=document.getElementById("myDiv");varobj=myDiv.currentStyle;

而在其他瀏覽器下則需要如下代碼:

varmyDi=document.getElementById("myDiv");varobj=document.defaultView.getComputedStyle(myDiv,null);

所以需要更復雜的變異算子才可能實現變異。下面詳細說明這些變異算子的規則。

表2詳細描述了針對JavaScript語言在各個瀏覽器中的兼容性設計的18個變異算子。由于本研究的核心就是圍繞各個瀏覽器對代碼支持的區別,所以這些變異算子都是針對一個個特定的瀏覽器設計的,其所適用的瀏覽器都標注于“BR”列。

表2 瀏覽器兼容性變異算子

注:FF代表Firefox瀏覽器。

1)EHR(EventHandlerReplacement)和CS(ConfusableSyntax)。

IE瀏覽器的動態事件添加監聽函數與其他瀏覽器是互相不兼容的。IE使用的是attachEvent()函數,非IE瀏覽器使用的是addEventListener()函數,且它們的參數也是不同的。此變異算子用于互換attachEvent()與addEventListener()的用法,它同時修改函數名和參數。由于這兩個函數的參數被混淆錯用也是開發人員很可能犯的錯誤,本文同時設計了另一個變異算子CS,它專門模擬事件監聽函數參數出錯的情況。

2)AR(AttributeReplacement)。

DOM2級視圖模塊添加了一個名為defaultView的屬性,其中保存著一個指針,指向擁有指定文檔的窗口。除IE之外所有瀏覽器都支持defaultView屬性,而IE中使用一個等價的屬性parentWindow(Opera也支持這個屬性)。此變異算子將其互相替換,以觀察其在各個瀏覽器中的執行情況。

3)ETR(EventTargetReplacement)。

在事件響應函數中,瀏覽器會傳入一個參數,通常命名為event。在兼容DOM的瀏覽器中,event變量只是簡單地傳入和返回。而在IE中,event參數是未定義的(undefined),因此需要使用window.event代替。而window.event和event并不是完全等效的,非IE瀏覽器中的event對象存在一個target屬性,用于獲取事件源對象,而IE瀏覽器的window.event沒有target屬性,代替它的是srcElement屬性。此變異算子互換這兩種用法,觀察其在各個瀏覽器中的執行情況。

4)SAR(StyleAttributeReplacement)。

任何支持style特性的HTML元素在JavaScript中都有一個對應的style屬性,這個style屬性是CSSStyleDeclaration的實例。在HTML標簽中的“style”屬性中指定的任何CSS屬性都將表現為這個JavaScriptstyle對象相應的屬性,只是命名略有不同。例如:CSS屬性中的background-image對應的JavaScript屬性是style.backgroundImage。其中有一個較為特殊的屬性float,由于float是JavaScript的保留字,因此不能作為屬性名直接使用。DOM2級樣式規范規定style對象上相應的屬性名為CSSFloat,但IE瀏覽器對其不兼容,它使用自己單獨的規則,即styleFloat。此變異算子即互換CSSFloat與styleFloat這兩種用法。

5)TAR(TextAttributeReplacement)。

大部分瀏覽器都支持DOM對象的innerText屬性,除了Firefox。Firefox使用特有的textContent屬性來獲取HTML標簽內的文本,在Firefox內使用innerText屬性是無效的。此變異算子模擬innerText和textContent的錯用情況。

6)CSC(ComputedStyleChanging)。

在大部分瀏覽器中,document.defaultView.getComputedStyle(x)方法返回一個CSSStyleDeclaration對象,其中包含參數x所指定元素的所有計算樣式。而IE不支持這個方法,它使用x.currentStyle屬性替代,返回的同樣是CSSStyleDeclaration實例。此變異算子模擬這兩種用法的混用。由于用法差異較大,這個變異算子的變異過程比普通變異算子復雜一些。

2.3 變異測試算法

基于提出的變異算子,本文開發了兼容性變異測試程序CompatibilityMutator。整個程序使用Java實現,以便能夠跨平臺使用(IE7難以在較新的Windows版本上安裝)。使用MozillaRhino將JavaScript代碼解析成為抽象語法樹(AbstractSyntaxTree,AST),在抽象語法樹上進行變異并生成.diff文件,然后將.diff文件應用到源文件上生成變異體進行測試。

AST使用樹狀結構來表示源代碼的抽象語法結構,樹上的每一個節點都對應源代碼中的一種結構,它作為程序代碼的一種中間表示形式,在源代碼分析、代碼重構、語言翻譯等領域有廣泛的應用。代碼:

varbtn=document.getElmentById("myBtn");

生成的抽象語法樹如圖1所示。

圖1 抽象語法樹示例

由于在測試執行過程中,同一個變異體要被多個瀏覽器分別執行,為了提高測試效率,本文使用SeleniumWebDriver來自動調用瀏覽器和獲取頁內數據,并實現了多瀏覽器的并行執行。SeleniumWebDriver使瀏覽器行為自動化,它可以自動地調用各個主流瀏覽器的核心,完成載入指定頁面、觸發網頁事件或從網頁內提取信息等操作。它支持多種編程語言環境并提供了豐富的接口。本文利用Selenium實現了多瀏覽器的自動調用和并發運行,提高了測試效率。

測試程序從真實的網頁中直接抓取結果,因而不限定測試用例的實現環境和框架,無論測試用例使用的是QUnit還是Jasmine亦或Karma等,只要測試結果在網頁端顯示,本程序經過簡單的擴展就可以執行并自動獲取測試結果。

本文使用開源的Java包Diffutils來輔助變異。它可用.diff文件保存兩個文件之間的差異,并提供patch接口將.diff文件應用到目標文件,實現對文件的局部修改。本項目使用Diffutils來保存和生成變異體。

變異測試程序運行流程如圖2所示。

圖2 變異測試流程

變異程序的主要算法框架描述如下。

Input:P: Source programTS: Test suiteMOS: Mutation operators set

Output:RL: Result list

1)

begin

2)

P′←P

3)

parseAST(P)

4)

foreachm∈MOSdo

5)

DiffList←m(P)

6)

foreachDiff∈DiffListdo

7)

patch(Diff,P)

8)

R←executeTest(P,TS)

9)

addToList(R,RL)

10)

recover(P,P′)

11)

end

12)

end

13

returnRL

14)

end

它的輸入為源程序P、測試用例集TS和變異算子集合MOS,輸出為測試結果列表RL,在實際項目中為一個csv文件。具體的流程描述如下:

①在第2)行中,首先對源程序P進行備份,備份的程序保存為P′;

②第3)行中,將源程序P轉換成抽象語法樹(AST),這一過程由parseAST()函數完成,其核心接口由Mozilla Rhino提供;

③第4)~12)行中,從變異算子集合MOS中枚舉每一個變異算子,記為m,遍歷AST,按照變異規則尋找變異點進行變異,生成變異結果,將每個變異點及其變異結果保存為一個.diff文件。這一過程用m(P)(第5)行)表示,它將返回.diff文件的列表DiffList;

④第6)~11)行中,從.diff文件列表DiffList中枚舉每一個.diff文件應用到源程序并生成變異體,這一過程由patch()(第7行)函數完成;

⑤第8)行中,executeTest()函數的任務是:針對當前.diff文件的變異算子所適用的瀏覽器,通過Selenium WebDriver調用其中每一個瀏覽器對變異體并行執行測試用例集TS,并將測試結果保存為變量R;

⑥第9)行中,addToList()函數將測試結果R添加到列表RL,即csv文件中;

⑦第10)行中,recover()函數利用備份程序P′來恢復源程序P,以便對下一個.diff文件執行變異測試;

所有的變異算子和.diff文件都測試完畢后,返回測試結果RL(第13)行)。

3 實驗與分析

為了評估本文變異測試方法的有效性,設計并實施了一系列實驗。實驗的目的主要是為了驗證所設計的變異算子能否有效地觸發瀏覽器兼容性錯誤,以及所提出方法能否有效地評估給定程序的測試用例集的完備性。

整個變異測試實驗使用CompatibilityMutator進行。

3.1 實驗環境和數據

選用了7個真實的JavaScript框架,它們大多是被廣泛使用和測試的成熟的框架,詳細信息如表3所示。

表3 實驗所用的JavaScript程序

其中jQuery和YUI發布了公開的自動測試用例集,針對這兩個框架執行了完整的變異測試實驗。即對每一個變異體及其所針對的每一個瀏覽器運行所有的測試用例,分別統計未通過測試的測試用例數量。另外的5個框架由于沒有公開的自動測試用例集,僅對它們執行了變異操作并統計分析了變異體數量。

jQuery是一個功能豐富且被廣泛使用的JavaScript框架。jQuery官方提供了比較完善的測試用例集,測試用例基于QUnit測試框架實現,大約包含6 700個測試用例(由于一些測試用例在特定瀏覽器下會被自動跳過,具體在各個瀏覽器下測試用例數量略有不同)。YUI也是一個成熟的JavaScript框架,其官方公開的測試用例共有421個。

實驗中使用的瀏覽器版本如表4所示。

表4 實驗所使用的瀏覽器

3.2 實驗結果

針對jQuery和YUI的變異測試實驗結果如表5所示。

表5 jQuery和YUI的變異測試實驗結果

針對7個JavaScript框架的變異實驗結果如表6所示。

表6 其他JavaScript框架的變異實驗結果

表6內的數字表示變異體的數量。由于每個變異體可能需要在多個瀏覽器內執行,所以在表5和表6中,同一個變異體在不同的瀏覽器下會被重復統計,而ALL代表實際生成的變異體數,因此往往會小于各個瀏覽器變異體數之和。

3.3 結果分析

實驗使用的7個測試程序每一個都產生了專門針對兼容性問題的變異體,其中jQuery和YUI經過了測試用例集的測試,變異得分分別為43.06%和7.69%,并且7個被測程序jQuery、YUI、Tangram、AngularJs、Kissy、Avalon、Zepto分別生成了72、13、56、16、50、33、7個變異體。對于進行測試的4個瀏覽器IE11、Chrome、Firefox、IE7的變異體生成平均個數為11.1、21.1、23.1、1.1。從整體來看,本文設計的變異算子都能夠有效地生成變異體,這說明了它能夠有效地植入并觸發兼容性方面的錯誤。

通過以上分析可以知道,本文設計的變異算子能夠有效地觸發瀏覽器兼容性問題,導致網頁運行錯誤。但jQuery和YUI在各個瀏覽器下的變異得分都不超過50%,其中IE的變異得分幾乎全部為0,這說明現有的測試用例集在覆蓋瀏覽器兼容性錯誤方面的能力存在嚴重的不足,也意味著這兩個被測程序的測試用例集有很大的提升空間,同時說明本文方法能夠有效地評估測試用例集的完備性。

4 結語

本文針對Web應用程序中的JavaScript語言在各個主流瀏覽器中的兼容性差異進行分析,選擇了14個存在兼容問題的屬性和方法,設計了18個變異算子;開發了自動化的多瀏覽器變異測試工具CompatibilityMutator,它使用抽象語法樹(AST)實現變異操作,利用SeleniumWebDriver調用多瀏覽器核心完成測試,并且實現了多瀏覽器的并發執行,大大提高了測試效率;對7個真實的JavaScript框架進行了實驗研究,實驗結果表明,CompatibilityMutator對每一個被測程序都能生成一定數量的變異體,而且變異得分都不超過50%,證明了本文設計的變異算子確實能夠有效地觸發瀏覽器兼容性錯誤。其中jQuery和YUI框架的變異得分分別為43.06%和7.69%,這說明本文方法能夠有效地評估測試用例集在發現瀏覽器兼容性問題方面的能力。

本文的研究遠未覆蓋到所有的瀏覽器兼容性問題,瀏覽器中還存在著很多復雜且不易檢測到的兼容性問題。在未來的工作中,我們將進一步挖掘更多的相關方面的問題,設計更多的變異算子,并針對一些難以測試的問題設計新的變異方法,以解決比較復雜的兼容性問題。

)

[1]BLAHETAD.Unci:aC++-basedunit-testingframeworkforintrostudents[C]//SIGCSE2015:Proceedingsofthe46thACMTechnicalSymposiumonComputerScienceEducation.NewYork:ACM, 2015: 475-480.

[2]DEREZINSKAA.AqualityestimationofmutationclusteringinC#programs[M]//ZAMOJSKIW,MAZURKIEWICZJ,SUGIERJ,etal.NewResultsinDependabilityandComputerSystems.Berlin:Springer, 2013: 119-129.

[3]PRASETYAISWB.T3i:atoolforgeneratingandqueryingtestsuitesforJava[C]//ESEC/FSE2015:Proceedingsofthe2015 10thJointMeetingonFoundationsofSoftwareEngineering.NewYork:ACM, 2015: 950-953.

[4]TUYAJ,SUREZ-CABALMJ,DELARIVAC.Mutatingdatabasequeries[J].InformationandSoftwareTechnology, 2007, 49(4): 398-417.

[5]SHIND,BAED-H.Atheoreticalframeworkforunderstandingmutation-basedtestingmethods[EB/OL]. [2016- 03- 10].https://arxiv.org/pdf/1601.06466v1.pdf.

[6]NISHIURAK,MAEZAWAY,WASHIZAKIH,etal.MutationanalysisforJavaScriptWebapplicationstesting[EB/OL]. [2016- 03- 10].https://ai2-s2-pdfs.s3.amazonaws.com/b823/383c40d9076bea8a3a13db163bab884f7b44.pdf.

[7]MIRSHOKRAIES,MESBAHA,PATTABIRAMANK.EfficientJavaScriptmutationtesting[C]//Proceedingsofthe2013IEEESixthInternationalConferenceonSoftwareTesting,VerificationandValidation.Piscataway,NJ:IEEE, 2013: 74-83.

[8]MIRSHOKRAIES,MESBAHA,PATTABIRAMANK.GuidedmutationtestingforJavaScriptWebapplications[J].IEEETransactionsonSoftwareEngineering, 2015, 41(5): 429-444.

[9]SHAHRIARH,ZULKERNINEM.MUTEC:mutation-basedtestingofcrosssitescripting[C]//SESS2009:Proceedingsofthe2009ICSEWorkshoponSoftwareEngineeringforSecureSystems.Piscataway,NJ:IEEE, 2009: 47-53.

[10]MIRSHOKRAIES,MESBAHA,PATTABIRAMANK.JSEFT:automatedJavaScriptunittestgeneration[C]//Proceedingsofthe2015IEEE8thInternationalConferenceonSoftwareTesting,VerificationandValidation.Piscataway,NJ:IEEE,2015: 1-10.

[11]JEFFREYD,GUPTAR.Testsuitereductionwithselectiveredundancy[C]//ICSM2005:Proceedingsofthe21stIEEEInternationalConferenceonSoftwareMaintenance.Piscataway,NJ:IEEE, 2005:549-558.

[12]PRAPHAMONTRIPONGU,OFFUTTJ.ApplyingmutationtestingtoWebapplications[C]//ICSTW2010:Proceedingsofthe2010ThirdInternationalConferenceonSoftwareTesting,Verification,andValidationWorkshops.Washington,DC:IEEEComputerSociety, 2010:132-141.

[13]SCHULERD,DALLMEIERV,ZELLERA.Efficientmutationtestingbycheckinginvariantviolations[C]//ISSTA2009:ProceedingsoftheEighteenthInternationalSymposiumonSoftwareTestingandAnalysis.Piscataway,NJ:IEEE, 2009:69-80.

[14]SCHULERD,ZELLERA. (Un-)Coveringequivalentmutants[C]//ICST2010:Proceedingsofthe2010ThirdInternationalConferenceonSoftwareTesting,VerificationandValidation.Washington,DC:IEEEComputerSociety,2010: 45-54.

[15]LEES,BAIX,CHENY.AutomaticmutationtestingandsimulationonOWL-SspecifiedWebservices[C]//ANSS2008:Proceedingsofthe41stAnnualSimulationSymposium.Piscataway,NJ:IEEE, 2008: 149-156.

[16]BOTTACIL.Typesensitiveapplicationofmutationoperatorsfordynamicallytypedprograms[C]//ICSTW2010:Proceedingsofthe2010ThirdInternationalConferenceonSoftwareTesting,Verification,andValidationWorkshops.Washington,DC:IEEEComputerSociety, 2010: 126-131.

[17]SAMPATHS,SPRENKLES,GIBSONE,etal.Applyingconceptanalysistouser-session-basedtestingofWebapplications[J].IEEETransactionsonSoftwareEngineering, 2007, 33(10): 643-658.

[18]CHOUDHARYSR,VERSEEH,ORSOA.WEBDIFF:automatedidentificationofcross-browserissuesinWebapplications[C]//Proceedingsofthe2010IEEEInternationalConferenceonSoftwareMaintenance.Washington,DC:IEEEComputerSociety, 2010: 1-10.

[19]CHOUDHARYSR,PRASADMR,ORSOA.CrossCheck:combiningcrawlinganddifferencingtobetterdetectcross-browserincompatibilitiesinWebapplications[C]//ProceedingsoftheIEEEFifthInternationalConferenceonSoftwareTesting,VerificationandValidation.Washington,DC:IEEEComputerSociety, 2012: 171-180.

[20]CHOUDHARYSR,PRASADMR,ORSOA.X-PERT:accurateidentificationofcross-browserissuesinWebapplications[C]//ICSE2013:Proceedingsofthe2013InternationalConferenceonSoftwareEngineering.Piscataway,NJ:IEEE, 2013:702-711.

[21] MESBAH A. Automated cross-browser compatibility testing [C]// ICSE 2011: Proceedings of the 33rd International Conference on Software Engineering. Piscataway, NJ: IEEE, 2011: 561-570.

[22] RAZAK R A, FAHRURAZI F R. Agile testing with Selenium [C]// Proceedings of the 2011 5th Malaysian Conference in Software Engineering. Piscataway, NJ: IEEE, 2011: 217-219.

[23] LI Y-F, DAS P K, DOWE D L. Two decades of Web application testing — a survey of recent advances[J]. Information Systems, 2014, 43: 20-54.

This work is partially supported by the National Natural Science Foundation of China (61672085).

CHENG Yong, born in 1976, Ph. D., lecturer. His research interests include large-scale machine learning, data mining.

QIN Dan, born in 1991, M. S. Her research interests include software testing.

YANG Guang, born in 1984, M. S. Her research interests include artificial intelligence, natural language understanding.

Mutation test method for browser compatibility of JavaScript

CHENG Yong*, QIN Dan, YANG Guang

(College of Information Science and Technology, Beijing University of Chemical Technology, Beijing 100029, China)

Since the research on testing technology for JavaScript browser compatibility problems is insufficient, based on mutation testing method and the analysis on the compatibility of JavaScript in Web applications in major browsers, eighteen mutation operators was designed, and an automated testing tool named Compatibility Mutator was implemented. Compatibility Mutator analyze JavaScript syntax with Abstract Syntax Tree (AST), calls various browsers with Selenium WebDriver to run mutation testing automatically and concurrently. The experiments on 7 widely-used JavaScript frameworks showed that the proposed mutation operators could generate a certain amount of mutants, the mutation scores got from mutation testing on jQuery and YUI were 43.06% and 7.69% respectively. Experimental results prove that the proposed operators can trigger the compatibility issues effectively, and evaluate the completeness of test suite effectively in finding the browser compatibility issues.

mutation testing; JavaScript; compatibility; mutation operator; testing tool

2016- 08- 17;

2016- 09- 23。 基金項目:國家自然科學基金資助項目(61672085)。

程勇(1976—),男,湖南華容人,講師,博士,CCF會員,主要研究方向:大規模機器學習、數據挖掘; 秦丹(1991—),女,山東臨沂人,碩士,主要研究方向:軟件測試; 楊光(1984—),男,廣西北海人,碩士,主要研究方向:人工智能、自然語言理解。

1001- 9081(2017)04- 1143- 06

10.11772/j.issn.1001- 9081.2017.04.1143

TP311.56

A

猜你喜歡
實驗
我做了一項小實驗
記住“三個字”,寫好小實驗
我做了一項小實驗
我做了一項小實驗
記一次有趣的實驗
有趣的實驗
小主人報(2022年4期)2022-08-09 08:52:06
微型實驗里看“燃燒”
做個怪怪長實驗
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
主站蜘蛛池模板: 在线日本国产成人免费的| 国产一区二区三区免费| 国产手机在线小视频免费观看| 精品国产网站| 免费午夜无码18禁无码影院| 四虎国产永久在线观看| 免费黄色国产视频| 人妻精品久久无码区| 久久91精品牛牛| 国产福利免费在线观看| 国产精品成人AⅤ在线一二三四 | 亚洲精品第1页| 亚洲三级影院| a毛片免费观看| 欧美亚洲欧美| 久久综合亚洲鲁鲁九月天| 在线播放精品一区二区啪视频| 老司机午夜精品视频你懂的| 欧美在线精品怡红院| 国产jizz| 日韩美毛片| 亚洲精品在线91| 亚洲an第二区国产精品| 成人国产精品网站在线看| 亚洲欧洲一区二区三区| 亚洲一级无毛片无码在线免费视频| 永久免费无码日韩视频| 国产91精品久久| 亚洲欧美一区二区三区麻豆| 人妻一区二区三区无码精品一区| 91福利一区二区三区| 日韩av无码DVD| 香蕉蕉亚亚洲aav综合| 日韩欧美视频第一区在线观看| 国产理论一区| 伊人久久青草青青综合| 国产剧情国内精品原创| 国产成人乱码一区二区三区在线| 中文字幕免费视频| www.99在线观看| 亚洲啪啪网| 亚洲精品午夜天堂网页| 国产一在线观看| 欧美啪啪一区| 久久夜夜视频| 亚洲天堂色色人体| 国产欧美视频在线观看| 国产va在线观看| 在线网站18禁| AV老司机AV天堂| 国产精品视频999| 国产亚洲精久久久久久无码AV | 免费在线一区| 亚洲第一页在线观看| 欧美日韩国产综合视频在线观看| 久久久无码人妻精品无码| 国产精品第页| 九九线精品视频在线观看| 黑人巨大精品欧美一区二区区| 性欧美精品xxxx| 亚洲精品福利视频| 幺女国产一级毛片| 国内精品免费| 久久99国产视频| 国产91小视频| 亚洲色图另类| 国产一级视频在线观看网站| 成年人午夜免费视频| 国产成人精品亚洲日本对白优播| 97色婷婷成人综合在线观看| 精品三级网站| 久久精品人人做人人爽97| 亚洲毛片在线看| 国产精品3p视频| 久久精品国产国语对白| 天堂网亚洲系列亚洲系列| 久久99国产综合精品1| 亚洲第一精品福利| 日韩毛片免费视频| 日韩 欧美 小说 综合网 另类| 成人夜夜嗨| 成人免费视频一区|