劉 靖 陳文杰
(內蒙古大學計算機學院, 呼和浩特 010021)
基于變異測試的RESTful Web服務測試數(shù)據(jù)優(yōu)化生成方法
劉 靖 陳文杰
(內蒙古大學計算機學院, 呼和浩特 010021)
為提升基于REST的Web服務系統(tǒng)測試數(shù)據(jù)生成效率及可用性,提出了一種基于變異測試的測試數(shù)據(jù)優(yōu)化生成方法.將RESTful Web服務對應的 Web應用描述語言(WADL)增加數(shù)據(jù)類型約束,并利用該約束生成初始測試數(shù)據(jù).對約束關系進行變異生成變異體,在消除等價變異體并利用聚類實現(xiàn)變異體集約簡的基礎上,結合貪心算法優(yōu)化篩選初始測試數(shù)據(jù),生成無冗余的RESTful Web服務可用測試數(shù)據(jù)集.基于Hadoop平臺技術,實現(xiàn)了針對RESTful Web服務系統(tǒng)測試數(shù)據(jù)自動生成的支撐軟件.測試執(zhí)行結果表明,在有效保證測試數(shù)據(jù)可用且無冗余的基礎上,極大縮減了測試數(shù)據(jù)集規(guī)模和測試數(shù)據(jù)生成時間,完成了針對RESTful Web服務系統(tǒng)的自動化測試數(shù)據(jù)優(yōu)化生成,提升了測試生成效率.
測試數(shù)據(jù)生成;RESTful Web服務;WADL;變異測試
移動 Web服務在電子醫(yī)療、突發(fā)災害實時監(jiān)控等方面具有良好的應用前景[1].部署存在功能隱患或行為缺陷的移動Web服務,勢必造成相關服務的運行錯誤和功能失效.因此,在大范圍部署移動Web服務前完成全面的功能測試是至關重要的,而自動生成無冗余、有效可用的測試數(shù)據(jù)是提升Web服務系統(tǒng)的測試生成效率、保證測試整體效果的基礎和關鍵,能夠有效解決測試人員在手工生成測試數(shù)據(jù)時引入的人為錯誤和盲目性,并降低測試成本.
實現(xiàn)移動Web服務可選用SOAP或REST兩種方式.現(xiàn)有相關研究大都以基于SOAP的WSDL為依據(jù),研究測試數(shù)據(jù)的生成方法和優(yōu)化選擇.文獻[2]基于服務合約來擴展WSDL,設計雙方設計合約并根據(jù)合約各自展開測試,但該方法需要耗費大量的計算資源,且產生測試數(shù)據(jù)的類型有限.文獻[3]以WSDL中的XSD數(shù)據(jù)描述為基礎,運用約束滿足問題技術求解可嵌入測試數(shù)據(jù)的XML測試執(zhí)行模板.文獻[4]以WSDL等文檔為輸入抽取變量類型等約束,運用滿足性模理論求解工具生成滿足不同覆蓋標準的測試數(shù)據(jù).文獻[5-6]研究了組合Web服務中的測試生成及優(yōu)化選擇方法.文獻[7]提出了RESTful Web服務的測試框架,為軟件測試者提供了集成軟件測試過程,但并沒有給出詳細的測試數(shù)據(jù)生成方法.RESTful Web服務更適合部署于移動設備上,響應時間和吞吐量等性能都優(yōu)于SOAP式Web服務[8].
本文采用更適合RESTful Web服務的WADL描述[9]作為測試數(shù)據(jù)生成的基礎,提出了一種基于變異測試的測試數(shù)據(jù)優(yōu)化生成方法,并研發(fā)了基于Hadoop的測試數(shù)據(jù)自動生成支撐軟件ATD4MW,采用基于遺傳算法的聚類技術并結合貪心算法,生成無冗余且規(guī)模極大縮減的可用測試數(shù)據(jù)集.
WADL描述了RESTful Web服務系統(tǒng)所支持的所有資源及對這些資源所執(zhí)行的操作.用戶根據(jù)Web服務對應的WADL描述了解其包含的所有資源及服務調用方法.WADL描述文檔通常包括4個部分:資源集、資源連接關系、資源操作方法(對資源操作的HTTP方法)及資源表述(資源的MIME類型及其XML Schema).本節(jié)首先給出WADL描述擴展方法,即如何增加數(shù)據(jù)類型約束,然后利用等價類劃分及邊界分析、錯誤推測和隨機生成等方法,實現(xiàn)了基于約束關系的初始測試數(shù)據(jù)自動生成.
1.1 WADL中對數(shù)據(jù)類型約束的擴展
針對RESTful Web服務系統(tǒng)的測試,主要根據(jù)WADL中param元素的type屬性來生成測試數(shù)據(jù).該屬性雖然能夠描述參數(shù)的數(shù)據(jù)類型,但缺少對類型的約束,因而需要擴展WADL,增加類型約束,以便生成更為有效的測試數(shù)據(jù).由于type中的數(shù)據(jù)類型是在相應的XML Schema中描述的,因此需要在XML Schema上添加restriction元素,以精確描述數(shù)據(jù)類型的約束關系.XML Schema中的基本數(shù)據(jù)類型包括數(shù)值型(Int,Float,Double等)、字符串型(String)及布爾型(Boolean).不同數(shù)據(jù)類型所對應的約束不同.數(shù)值型約束描述了該類型數(shù)據(jù)的最大值和最小值;字符串型約束描述了字符串的精確長度或最大最小長度;枚舉型約束描述了一個由字符串型、布爾型或數(shù)值型元素所組成的元素集合.布爾型數(shù)據(jù)僅包含2個值,不需要添加額外的約束.
1.2 測試數(shù)據(jù)的生成策略
1.2.1 簡單類型測試數(shù)據(jù)
首先提取加在簡單數(shù)據(jù)類型上的約束關系;然后根據(jù)約束條件,利用等價類劃分及邊界分析、錯誤推測和隨機生成等方法來生成測試數(shù)據(jù).如果數(shù)據(jù)類型的約束條件不完整,則將該類型數(shù)據(jù)的默認取值范圍作為補充.對于數(shù)值型約束,令其最大、最小值分別為VMAX和VMIN,編譯器允許取值的上、下界分別為Bup和Bdown,則可生成的測試數(shù)據(jù)為rand(Bdown,VMIN),VMIN-1,VMIN,VMIN+1,rand(VMIN,VMAX),VMAX-1,VMAX,VMAX+1,rand(VMAX,Bup),0,-1等,其中rand函數(shù)隨機生成約束范圍內的數(shù)值.對于字符串型約束,令字符串的最小、最大長度分別為LMIN和LMAX,則生成的測試數(shù)據(jù)為randStr(LMIN-1),randStr(LMIN),randStr(LMIN+1),randStr(rand(LMIN,LMAX)),randStr(LMAX-1),randStr(LMAX),randStr(LMAX+1)、空串等,其中randStr函數(shù)隨機生成字符長度約束范圍內的字符串.對于布爾類型,測試數(shù)據(jù)為T和F,分別表示布爾類型的真值和假值.枚舉類型一般先選擇集合中的首尾2個元素,再在剩余數(shù)據(jù)中隨機選一個數(shù)據(jù).
1.2.2 復合類型測試數(shù)據(jù)
復合類型可基于簡單類型或已有復合類型嵌套構成,其中子類型元素的組合方式需要由次序指示器指定.次序指示器分為All,Choice和Sequence三種.其中,All指示器規(guī)定復合類型中所有子元素必須且僅出現(xiàn)一次,可以按照任何次序出現(xiàn),不必與XML Schema中的定義一致;Choice指示器規(guī)定在復合類型的全部子元素中僅能隨機出現(xiàn)一個;Sequence指示器規(guī)定復合類型中每一個元素必須出現(xiàn)一次,次序與XML Schema中規(guī)定的一樣.在復合型測試數(shù)據(jù)的生成中,先確定子類型元素的組合方式.若采用All指示器,先隨機生成一個子類型元素的序列,并為序列中的每一個子類型生成測試數(shù)據(jù)集,然后根據(jù)序列中元素的次序對子集計算笛卡爾積,從而得到復合類型的測試集.若采用Choice指示器,則在所有子類型中任意指定一個子類型元素,由此生成的測試數(shù)據(jù)集即為復合類型的測試數(shù)據(jù)集.若采用Sequence指示器,則為所有子元素逐一生成子測試數(shù)據(jù)集,然后根據(jù)XML Schema中規(guī)定的次序對子集計算笛卡爾積,從而得到復合類型的測試數(shù)據(jù)集.
1.3 測試數(shù)據(jù)生成算法
本文提出了一個自動生成簡單和復合類型測試數(shù)據(jù)的算法.
算法1 GenTestData輸入:參數(shù)P. 輸出:P的初始測試數(shù)據(jù)集Tinit.Tinit={}; IF(IsSimpleType(P)){Tp=GetType(P);Rd=InitialRegion(Tp);//返回類型在編譯中能處理的范圍Rs=GetRestriction(Tp);//獲取DataType定義的約束Rd=Rd∩CalRange(Rs);//計算在該約束下的取值區(qū)間 //采用等價類劃分及邊界分析、錯誤推測和隨機方法 //產生簡單數(shù)據(jù)類型的測試數(shù)據(jù)Tinit=GenForSimple(Rd);} ELSE {TD={};//保存每個子元素生成的測試數(shù)據(jù)集 //按照3種不同復合類型規(guī)則生成測試數(shù)據(jù) FOR each SubElement ofPTD=GenTestData(SubElement); IF (IsSequence(P))Tinit=GenSequenceData(TD); ELSE IF (IsAll(P))Tinit=GenAllData(TD); ELSE IF (IsChoice(P))Tinit=GenChoiceData(TD);}
測試數(shù)據(jù)生成過程中由All和Sequence指示器構成的復合類型數(shù)據(jù)都需要計算笛卡爾積,隨著子類型個數(shù)的不斷增加,最終產生的測試數(shù)據(jù)集的數(shù)據(jù)量會呈指數(shù)增長,且包含很多重復低效的冗余數(shù)據(jù).對測試數(shù)據(jù)進行篩選,可以消除大量低效冗余的數(shù)據(jù),精簡測試數(shù)據(jù)集,從而節(jié)約了測試時間和成本.本文利用變異測試技術,為WADL中數(shù)據(jù)類型增加約束條件,根據(jù)Web服務的特征設計變異算子,再將變異算子作用于被測Web服務的程序上得到變異體,通過運行變異體來篩選出無冗余且有效可用的測試數(shù)據(jù).
2.1 變異體生成
WADL體現(xiàn)了RESTful Web服務系統(tǒng)的內部邏輯功能,約束的變異等價于Web服務內部邏輯功能的變異.因此,有效可用的測試數(shù)據(jù)是指能夠殺死變異體的測試數(shù)據(jù),這些數(shù)據(jù)能夠識別Web服務內部邏輯功能錯誤.進行約束變異的目的是篩選出識別錯誤能力強(即殺死變異體多)的數(shù)據(jù),剔除重復冗余的數(shù)據(jù).
設計變異算子是變異測試技術的關鍵和基礎.在一般的變異測試執(zhí)行中,變異體的個數(shù)與程序代碼量的平方成正比,即使最簡單的一個程序也會產生大量的變異體,因此執(zhí)行和存儲變異體會耗費大量的內存計算資源.雖然約束變異測試的規(guī)模小于一般變異測試,但如果定義了大量低效的變異算子,仍然會產生數(shù)量巨大的變異體集合,浪費大量的計算資源.鑒于此,必須定義有效的變異算子來減少變異體的生成數(shù)量,從而降低測試開銷.針對RESTful Web服務系統(tǒng)的WADL約束特征,本文定義了7個相應的變異算子(見表1).
表1 擴展WADL的變異算子
下面舉例說明如何運用上述變異算子產生相應的約束變異體.例如,某Web服務方法的一個參數(shù)為x,其約束為Vmin=0,Vmax=30,則參數(shù)x的取值范圍為0 2.2 等價變異體檢測 影響變異測試效果的主要原因是等價變異體的存在.等價變異體不僅會降低變異測試的充分度,長期駐留內存還會耗費大量的計算資源.因此,必須剔除變異體集中的等價變異體,以提高測試效率和變異充分度.此外,手工檢測等價變異體耗時耗力且容易出錯,因此需要實現(xiàn)等價變異體的自動檢測.本文將基于約束的等價變異體檢測[10]應用于等價變異體的檢測中. 設M是約束C的一個變異體,測試數(shù)據(jù)d要將變異體殺死,必須滿足以下2個條件: 1) 必要性條件,即d在變異處使得M和C產生不同的狀態(tài).若狀態(tài)相同,由于M和C僅在變異處不相同,其他地方完全相同,則M和C的最終狀態(tài)必然也相同,那么該測試數(shù)據(jù)d無法殺死變異體M. 2) 可達性條件,即d在M上運行必須能執(zhí)行到變異處,并可以從該變異處執(zhí)行到程序結束.這是因為M和C僅在變異處不同,如果d不能執(zhí)行到變異處,最終狀態(tài)必然相同;此外,即使在變異處產生了不同狀態(tài),如果變異處到程序結束不可達,即不同狀態(tài)不能傳遞到程序結束,那么最終狀態(tài)也必然相同. 假設存在一個測試數(shù)據(jù)集S能夠同時滿足必要性和可達性條件.若S不為空集,那么變異體能夠被殺死;若S為空集,則變異體為等價變異體,在功能上等價于原始約束. 2.3 變異體聚類 運用變異算子會產生大量的變異體.雖然2.2節(jié)中已剔除了等價變異體,但變異體的數(shù)量仍然十分巨大,其中許多變異體具有相似的功能,無助于測試數(shù)據(jù)的篩選,故有必要精簡變異體集.在測試數(shù)據(jù)篩選過程中,需要將數(shù)量龐大的測試數(shù)據(jù)集輸入到變異體集上,變異體集的執(zhí)行會耗費大量的時間和計算機資源.為了減少變異測試的代價,需要在不影響檢測力度的情況下執(zhí)行更少的變異體,對變異集進行約簡.因此,本文采用了一種基于遺傳算法的聚類技術來實現(xiàn)變異體的約簡. K-means聚類算法的效果與聚類數(shù)目K相關,但K值較難確定,本文采用遺傳算法自適應地產生K值,并求得該K值下較好的聚類中心,以計算優(yōu)化的聚類結果.在基于遺傳算法的聚類技術中,令D為樣本數(shù)據(jù)的數(shù)量,則變異體由長度為D的2進制數(shù)字串來表示,染色體由長度為KD的2進制數(shù)字串來表示.適應度函數(shù)由每個變異體到對應聚類中心的距離和來表示,其值越小越好.隨機選擇k個變異體作為初始聚類中心,對其余變異體進行聚類處理,得到的結果即為種群的個體,每個個體的形成相當于當前K值下的一次K-means聚類.種群初始化后,通過不斷進化,得到當前k值下最好的聚類中心.上述算法思想可描述為如下的GenMutants算法. 算法2 GenMutants輸入:聚類數(shù)目K;初始染色體集數(shù)量MS;樣本數(shù)據(jù)集DS; 適應度距離閾值CS;初始變異體集合Minit. 輸出:約簡后的變異體集合Mopt. BEGIN: Schromes={};//染色體集Scur_opt_means={};//當代最優(yōu)的聚類中心 //染色體集初始化 FOR(i=1 toMS)Schromes=Schromes∪concat (EncOneMutant (DS),K,Minit); //產生最佳的染色體 DO {Schromes=Crossover (Schromes);Schromes=Mutation (Schromes);Scur_opt_means=Selection (fitness(Schromes)); Evolve_to_nextGen(); } WHILE (fitness(Scur_opt_means)!=0) //探測是否有更優(yōu)的染色體 IF (fitness(Scur_opt_means)-fitness(Spre_opt_means)>CS) {K=K+1;Spre_opt_means=Scur_opt_means; goto BEGIN; } ELSE {Vopt_clusters=Clustering_KMeans(K,Scur_opt_means);Mopt=RandomSelect(Vopt_clusters,Minit); } 2.4 數(shù)據(jù)篩選 測試數(shù)據(jù)殺死的變異體越多,識別錯誤的能力越強.本文基于貪心算法,提出了一個優(yōu)化篩選出有效可用且無冗余的測試數(shù)據(jù)算法OptmizeTestData. 算法3 OptmizeTestData輸入:初始測試數(shù)據(jù)集Tinit,變異體集合M1. 輸出:最終測試數(shù)據(jù)集Tfinal,被Tfinal殺死的變異體集合M2.S=GetSize(Tinit); FOR (q=1 toS) {Dq=GetData(Tinit,q);//從數(shù)據(jù)集Tinit中獲取第q個數(shù)據(jù) //在M1上運行Dq,返回被殺的變異體集合KMutantqKMutantq=MutationTest(Dq,M1); }Tfinal={};M2={}; DO { //從KMutant-M2集合里選擇殺死變異體個數(shù)最多的子集KMutantmax=MAX(KMutant-M2); //數(shù)據(jù)Dmax為殺死變異體最多的對應數(shù)據(jù)Tfinal=Tfinal∪Dmax;M2=M2∪KMutantmax; } WHILE (KMutantmaxis not Null) KMutant={KMutant1,KMutant2,…,KMutants}為當前Tfinal所能殺死的變異體集合.KMutant-M2表示從KMutant中每一個子集刪去M2中已被殺死的變異體元素,得到當前Tfinal尚不能殺死的變異體集合.經(jīng)過循環(huán)篩選便可得到優(yōu)化后的最終測試數(shù)據(jù)集.需要說明的是,算法OptmizeTestData并不是單純選擇那些殺死變異體最多的測試數(shù)據(jù).例如,測試數(shù)據(jù)T1能夠殺死變異體1,2,3,4,9,11;測試數(shù)據(jù)T2能夠殺死1,2,3,4,9;測試數(shù)據(jù)T3能夠殺死13,14,17.采用該算法最終選擇的測試數(shù)據(jù)是T1和T3,而非T1和T2.原因在于,雖然T2殺死變異體的個數(shù)比T3多,但對于任意一個T2殺死的變異體,T1都能將其殺死,而T3能殺死新的變異體,故T3的錯誤檢測能力強于T2. 本文以一個網(wǎng)上購物RESTful Web服務系統(tǒng)為應用實例,采用ATD4MW軟件來生成該服務的測試數(shù)據(jù).該Web服務系統(tǒng)包含3個資源:商品資源Pres、用戶資源Ures和購買服務資源Bres.通過UserRes資源來管理用戶帳戶,采用Pres資源的GetProduct方法函數(shù)檢索商品,利用Bres資源的BuyProcess方法函數(shù)購買商品.下文以BuyProcess方法為例,該方法的輸入數(shù)據(jù)為一組名為Product的復合類型,包括String類型的商品名稱Pname和Int類型的購買數(shù)量Pcount.擴展后復合類型的描述如下: 實驗執(zhí)行硬件為2.5 GHz i7處理器、4 GB內存.共設計如下3組實驗:① 購買1種商品;② 購買2種商品;③ 購買3種商品.購買1,2,3種商品分別需輸入2,4,6個參數(shù). 實驗后的測試生成效果見表2.由表可知,隨著輸入?yún)?shù)個數(shù)的增加,初始測試數(shù)據(jù)的個數(shù)呈指數(shù)增長,但采用本文提出的測試數(shù)據(jù)優(yōu)化篩選方法可以在保證測試數(shù)據(jù)可用且無冗余的基礎上極大地縮小測試數(shù)據(jù)集,淘汰掉絕大部分冗余數(shù)據(jù).同時,當測試數(shù)據(jù)量較大時,利用ATD4MW的分布式處理可以有效減短數(shù)據(jù)篩選時間. 表2 測試生成效果 等價變異檢測效果見表3.由表可知,隨著輸入?yún)?shù)個數(shù)的增加,變異充分度出現(xiàn)一定幅度的下降,下降的原因是產生了一定數(shù)量的等價變異體.等價變異體的存在不僅會降低變異測試的充分度,而且長期駐留內存還會耗費一定的計算資源和存儲資源,因此需要對等價變異體進行剔除,使變異充分度得到提升.但變異充分度未達到100%,原因可能是部分等價變異體沒有檢測到或由于測試數(shù)據(jù)不夠充分導致該被殺死的變異體沒有被殺死或誤認為等價變異體. 表3 變異充分度比較 % 隨著變異體個數(shù)的增加,聚類花費的時間也迅速增加.但由表4可知,經(jīng)過聚類后變異體個數(shù)減少,會直接導致變異測試的時間開銷大為降低,故為聚類操作花費的額外時間開銷是可接受的. 表4 變異體聚類效果 此外,本文還對GetProduct檢索商品方法完成了與上述BuyProcess方法相類似的測試數(shù)據(jù)生成及優(yōu)化過程,即設計出一組檢索1種商品的實驗,獲得初始測試數(shù)據(jù)58個、篩選后測試數(shù)據(jù)6個,變異充分度為100%.實驗結果證明了本文所提方法及支撐工具軟件的有效性和可用性. 1) 提出了一種基于變異測試技術的RESTful Web服務測試數(shù)據(jù)優(yōu)化生成方法,對服務WADL 描述增加數(shù)據(jù)類型約束,并對約束關系進行變異. 2) 采用聚類技術完成變異體集的約簡,并利用貪心算法對初始測試數(shù)據(jù)進行優(yōu)化篩選,從而可生成無冗余、有效可用的測試數(shù)據(jù)集,進而研發(fā)了基于Hadoop的測試數(shù)據(jù)自動生成支撐軟件ATD4MW,實現(xiàn)了針對RESTful Web服務的無冗余測試數(shù)據(jù)集的自動生成. 3) 利用所提的數(shù)據(jù)優(yōu)化生成方法及ATD4MW支撐軟件,在保證測試數(shù)據(jù)可用且無冗余的基礎上,能夠極大縮減測試數(shù)據(jù)集的規(guī)模和測試數(shù)據(jù)生成時間. References) [1]李剛, 孫紅梅, 李智, 等. 資源受限Web服務[J]. 計算機學報, 2010, 33(2): 193-207. DOI:10.3724/SP.J.1016.2010.00193. Li Gang, Sun Hongmei, Li Zhi, et al. Resource constrained web services[J].ChineseJournalofComputers, 2010, 33(2): 193-207. DOI:10.3724/SP.J.1016.2010.00193.(in Chinese) [2]姜瑛, 辛國茂, 單錦輝, 等. 一種Web服務的測試數(shù)據(jù)自動生成方法[J]. 計算機學報, 2005, 28(4): 568-577. DOI:10.3321/j.issn:0254-4164.2005.04.015. Jiang Ying, Xin Guomao, Shan Jinhui, et al. A method of automated test data generation for web service[J].ChineseJournalofComputers, 2005, 28(4): 568-577. DOI:10.3321/j.issn:0254-4164.2005.04.015.(in Chinese) [3]Vanderveen P, Janzen M, Tappenden A F. A web service test generator[C]//2014IEEEInternationalConferenceonSoftwareMaintenanceandEvolution. Victoria, Canada, 2014: 516-520. DOI:10.1109/icsme.2014.85. [4]Zhou L, Xu L, Xu B, et al. Generating test cases for composite web services by parsing XML documents and solving constraints [C]//2015IEEE39thAnnualComputerSoftwareandApplicationsConference. Taichung, China, 2015: 304-309. DOI:10.1109/compsac.2015.51. [5]許蕾, 李言輝, 陳林, 等. 一種面向用戶需求的Web服務測試方法[J]. 計算機學報, 2014, 37(3): 512-521. DOI:10.3724/SP.J.1016.2014.00512. Xu Lei, Li Yanhui, Chen Lin, et al. A testing method for web services focusing on user requirements[J].ChineseJournalofComputers, 2014, 37(3): 512-521. DOI:10.3724/SP.J.1016.2014.00512.(in Chinese) [6]Ji S, Li B, Zhang P. Test case selection for data flow based regression testing of BPEL composite services [C]//2016IEEEInternationalConferenceonServicesComputing(SCC). San Francisco,CA, USA, 2016: 547-554. DOI:10.1109/scc.2016.77. [7]Kao C H, Lin C C, Chen J N. Performance testing framework for REST-based web applications[C]//2013 13thInternationalConferenceonQualitySoftware. New York, USA, 2013: 349-354. DOI:10.1109/qsic.2013.32. [8]Mizouni R, Serhani M A, Dssouli R, et al. Performance evaluation of mobile web services[C]//2011IEEENinthEuropeanConferenceonWebServices. New Orleans, Louisiana, USA, 2011: 184-191. DOI:10.1109/ecows.2011.12. [9]Hadley M J. Web application description language (WADL)[EB/OL]. (2016-01-08)[2016-085-01]. https://wadl.java.net. [10]Offutt A J, Pan J. Detecting equivalent mutants and the feasible path problem[C]//11thAnnualConferenceonComputerAssurance. New York, USA, 1996: 224-236. Mutation testing based test data optimized generation method for RESTful web service Liu Jing Chen Wenjie (College of Computer Science, Inner Mongolia University, Hohhot 010021, China) To promote the efficiency and feasibility of test data generation for the REST(respresentational state transfer) based web service system, a mutation testing based test data optimized generation method is proposed. The web application description language(WADL) corresponding for the RESTful web service system is extended with data type constrains, and the elementary test data sets are generated according to these constrains. Mutants are then generated by mutation testing towards constrain relationship. The equivalent mutants are eliminated and the mutant set reduction is performed by using clustering technology. The elementary test data sets are optimally selected by using the greedy algorithm to generate non-redundant and feasible test data sets for the RESTful web service system. A supporting software for automatic test date generation for the RESTful web service systems is developed based on Hadoop platform technology. The test execution results show that the scale of test data sets and test generation time are greatly reduced with the guarantee of non-redundancy and availability of the test data. The automatic and optimal test data generation for RESTful web service systems is achieved and the test generation is improved. test data generation; RESTful web service; web application description language(WADL); mutation testing 10.3969/j.issn.1001-0505.2017.03.010 2016-10-05. 作者簡介: 劉靖(1981—),男,博士,副教授,liujing@imu.edu.cn. 國家自然科學基金資助項目(61262017, 61662051)、內蒙古自然科學基金資助項目(2015MS0611). 劉靖,陳文杰.基于變異測試的RESTful Web服務測試數(shù)據(jù)優(yōu)化生成方法[J].東南大學學報(自然科學版),2017,47(3):472-477. 10.3969/j.issn.1001-0505.2017.03.010. TP393 A 1001-0505(2017)03-0472-063 測試執(zhí)行實驗及效果分析
4 結論