孫昌愛(ài) 王 真 潘 琳
1(北京科技大學(xué)計(jì)算機(jī)與通信工程學(xué)院 北京 100083)2 (宇航智能控制技術(shù)重點(diǎn)實(shí)驗(yàn)室 北京 100854)
面向服務(wù)的架構(gòu)(service-oriented architecture, SOA)已經(jīng)成為分布式應(yīng)用程序的主要開(kāi)發(fā)范式[1].由于單一的Web服務(wù)提供的功能有限,無(wú)法滿足復(fù)雜需求,因此需要將多個(gè)服務(wù)組裝以實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)流程.WS-BPEL(business process execution language for Web service)是一種基于XML的服務(wù)組裝語(yǔ)言[2],可以將多個(gè)不同的Web服務(wù)編制起來(lái)實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)流程.由于被組裝的Web服務(wù)的動(dòng)態(tài)性、松耦合性、不確定性以及互聯(lián)網(wǎng)環(huán)境的開(kāi)放性,如何保證WS-BPEL程序的可靠性成為一個(gè)挑戰(zhàn)性問(wèn)題[3].
變異測(cè)試是一種基于故障的軟件測(cè)試技術(shù)[4],具有較強(qiáng)的故障檢測(cè)能力,廣泛用于評(píng)估測(cè)試用例集的完備性和測(cè)試技術(shù)的有效性[5].然而,由于變異測(cè)試產(chǎn)生的變異體數(shù)量龐大、等價(jià)變異體識(shí)別困難、缺乏相應(yīng)自動(dòng)化支持工具等原因,變異測(cè)試難以在實(shí)際中廣泛應(yīng)用.在WS-BPEL變異測(cè)試方面,人們提出面向WS-BPEL程序的變異算子[6],為WS-BPEL程序的變異測(cè)試提供基礎(chǔ)[7].在課題組前期研究工作中[8-10],我們提出了一種面向WS-BPEL程序的變異測(cè)試框架和支持工具,評(píng)估了變異算子的有效性和不同變異算子模擬的故障被檢測(cè)的難易程度,發(fā)現(xiàn)了部分變異算子之間的包含關(guān)系.
在前期工作基礎(chǔ)上,本文進(jìn)一步研究如何降低面向WS-BPEL程序的變異測(cè)試的開(kāi)銷(xiāo)問(wèn)題,從二階變異測(cè)試和變異算子優(yōu)先級(jí)2個(gè)方面探索面向WS-BPEL程序的變異測(cè)試優(yōu)化技術(shù).本文的主要貢獻(xiàn)有3個(gè)方面:
1) 提出了2種面向WS-BPEL程序的變異測(cè)試優(yōu)化技術(shù),即面向WS-BPEL程序的二階變異優(yōu)化技術(shù)和基于變異算子優(yōu)先級(jí)的優(yōu)化技術(shù).
2) 開(kāi)發(fā)了面向WS-BPEL程序的變異測(cè)試集成化支持工具μBPEL,支持WS-BPEL程序變異測(cè)試的全過(guò)程,同時(shí)支持本文提出的變異測(cè)試優(yōu)化技術(shù).
3) 使用6個(gè)WS-BPEL程序?qū)嵗?yàn)證并評(píng)估提出的優(yōu)化技術(shù)的有效性.
介紹變異測(cè)試優(yōu)化和WS-BPEL測(cè)試相關(guān)的研究工作.
變異測(cè)試是一種基于故障的軟件測(cè)試技術(shù)[4].對(duì)待測(cè)程序P植入符合語(yǔ)法規(guī)則的錯(cuò)誤,將錯(cuò)誤版本的程序稱(chēng)為變異體,植入的故障類(lèi)型稱(chēng)為變異算子.對(duì)于給定的變異體M,如果存在某個(gè)測(cè)試用例,使得P和M展現(xiàn)出不同的執(zhí)行行為(通常為不同輸出結(jié)果),則稱(chēng)這個(gè)變異體M被“殺死”.如果對(duì)于任意的測(cè)試用例,P和M的執(zhí)行結(jié)果均相同,則稱(chēng)該變異體M為等價(jià)變異體.
變異測(cè)試具有較強(qiáng)的故障檢測(cè)能力[5],可以產(chǎn)生較好的測(cè)試效果[11].然而,變異測(cè)試存在的主要不足有3個(gè)方面:1)變異體數(shù)量龐大導(dǎo)致的計(jì)算開(kāi)銷(xiāo);2)等價(jià)變異體識(shí)別困難;3)缺乏自動(dòng)化支持工具.人們主要從變異體選擇和變異體執(zhí)行2個(gè)角度研究變異測(cè)試的優(yōu)化技術(shù)[5].
變異體選擇優(yōu)化關(guān)注如何從生成的大量變異體中選擇出典型的變異體.Mathur和Wong[12]提出一種變異體隨機(jī)選擇方法,對(duì)Mothra系統(tǒng)中的22種變異算子產(chǎn)生的變異體,采用不同的比例隨機(jī)選擇變異體.該方法可以大幅度減少測(cè)試開(kāi)銷(xiāo),同時(shí)變異評(píng)分并沒(méi)有明顯降低.King和Offutt[13-14]提出了一種變異算子選擇方法,根據(jù)FORTRAN語(yǔ)言變異算子的測(cè)試有效性對(duì)其進(jìn)行選擇,采用選擇后的變異算子能產(chǎn)生數(shù)目較少且更難被殺死的變異體.Hussain[15]根據(jù)測(cè)試用例的檢測(cè)能力對(duì)所有變異體進(jìn)行聚類(lèi)分析,選擇出變異體.Langdon等人[16]應(yīng)用多目標(biāo)方法指導(dǎo)生成高階變異體,該方法可以有效地產(chǎn)生比一階變異體更難檢測(cè)的高階變異體,同時(shí)產(chǎn)生等價(jià)變異體的概率更小,減少了測(cè)試開(kāi)銷(xiāo).在前期工作中,我們提出一種路徑感知的變異體精簡(jiǎn)方法,利用程序的結(jié)構(gòu)信息設(shè)計(jì)變異體精簡(jiǎn)策略,有效地減少了變異測(cè)試的開(kāi)銷(xiāo)[17].在WS-BPEL程序的變異測(cè)試優(yōu)化技術(shù)方面,我們提出一種基于包含關(guān)系的變異算子優(yōu)化技術(shù)[10],分析WS-BPEL程序的變異算子產(chǎn)生的變異體檢測(cè)的包含關(guān)系,進(jìn)行變異算子約簡(jiǎn).
變異體執(zhí)行優(yōu)化關(guān)注減少變異體的執(zhí)行時(shí)間,主要包括變異體檢測(cè)優(yōu)化、變異體變異優(yōu)化和并行執(zhí)行變異體優(yōu)化方法[5].Krauser等人[18]提出一種基于SIMD(single instruction multiple data)計(jì)算機(jī)的并發(fā)執(zhí)行變異體方法.此方法對(duì)變異體的無(wú)變異部分執(zhí)行1次,變異的部分進(jìn)行并發(fā)執(zhí)行,有效地減少變異體執(zhí)行時(shí)間.
與傳統(tǒng)程序相比,WS-BPEL程序具有4個(gè)新特點(diǎn)[19]:1)WS-BPEL提供一種顯式的集成機(jī)制組裝Web服務(wù),而這樣的集成在傳統(tǒng)程序中是隱式;2)WS-BPEL程序的服務(wù)可以采用不同語(yǔ)言實(shí)現(xiàn),而傳統(tǒng)程序中的模塊通常由同一種語(yǔ)言實(shí)現(xiàn);3)WS-BPEL程序表示為XML文件,不同于傳統(tǒng)應(yīng)用程序;4)WS-BPEL通過(guò)流(flow)活動(dòng)支持并發(fā)機(jī)制、通過(guò)連接(link)支持同步機(jī)制.WS-BPEL程序的新特性,導(dǎo)致了WS-BPEL程序的故障類(lèi)型不同于傳統(tǒng)應(yīng)用程序.
人們提出了多種面向WS-BPEL程序的測(cè)試技術(shù).文獻(xiàn)[20]將基于WS-BPEL描述的Web服務(wù)組裝轉(zhuǎn)化為擴(kuò)展的著色Petri網(wǎng)(extended colored Petri net, ECPN),提出了一種基于ECPN控制流和數(shù)據(jù)流結(jié)合的測(cè)試方法.針對(duì)WS-BPEL程序的并發(fā)特點(diǎn),我們提出了一種面向場(chǎng)景的WS-BPEL測(cè)試用例生成方法[21],并開(kāi)發(fā)了相應(yīng)的支持工具[22].Lee和Offutt[23]探索了將變異測(cè)試應(yīng)用到Web服務(wù)測(cè)試中.Boonyakulsrirung等人[24]提出一種面向WS-BPEL的弱變異測(cè)試框架,通過(guò)犧牲變異得分來(lái)提高變異測(cè)試的效率.Estero-Botaro等人[7]使用遺傳算法來(lái)獲得變異體集合的子集,選擇出高質(zhì)量的變異體.
目前,人們已經(jīng)開(kāi)發(fā)了多個(gè)面向WS-BPEL程序的變異測(cè)試支持工具.Domínguez-Jiménez等人[25]開(kāi)發(fā)了WS-BPEL程序變異測(cè)試支持工具GAmera,支持變異體生成、測(cè)試用例執(zhí)行和測(cè)試結(jié)果統(tǒng)計(jì).Boonyakulsrirung和Suwannasart[26]開(kāi)發(fā)了WeMuTe,支持WS-BPEL程序的弱變異測(cè)試.在前期研究工作中,我們開(kāi)發(fā)了一個(gè)面向WS-BPEL程序的變異測(cè)試框架,并開(kāi)發(fā)相應(yīng)支持工具[8-9],支持變異體生成、變異測(cè)試的執(zhí)行及結(jié)果分析.
從二階變異測(cè)試和變異算子優(yōu)先級(jí)2個(gè)方面,分別提出了變異測(cè)試的優(yōu)化技術(shù)MuSOM和MuPri.
一種減少變異測(cè)試中變異體數(shù)量的方法是高階變異體優(yōu)化技術(shù),由高階變異體替代一階變異體進(jìn)行測(cè)試.一階變異體指對(duì)原始程序應(yīng)用一個(gè)變異算子且植入一處錯(cuò)誤生成的變異體;高階變異體指對(duì)原始程序植入多處錯(cuò)誤生成的變異體.一個(gè)高階變異體可以看成由多個(gè)一階變異體復(fù)合而成.高階變異體優(yōu)化技術(shù)的提出基于2個(gè)推測(cè)[5]:1)執(zhí)行一次M階變異體等同于執(zhí)行M個(gè)一階變異體;2)高階變異體比一階變異體產(chǎn)生等價(jià)變異體的概率小.基于這2個(gè)推測(cè)可以看出,高階變異體優(yōu)化技術(shù)主要是通過(guò)減少待執(zhí)行變異體數(shù)目和等價(jià)變異體識(shí)別開(kāi)銷(xiāo)來(lái)降低變異測(cè)試的開(kāi)銷(xiāo).
本文提出一種面向WS-BPEL程序的二階變異優(yōu)化技術(shù)(簡(jiǎn)稱(chēng)為MuSOM).二階變異體生成算法主要有3種,分別為L(zhǎng)astToFirst,DifferentOperators,RandomMix算法[27].其中LastToFirst算法通過(guò)首尾組合2個(gè)一階變異體的方式生成二階變異體,生成的二階變異體數(shù)量為一階變異體數(shù)量的一半;DifferentOperators算法通過(guò)組合不同變異算子生成的一階變異體生成二階變異體,生成的二階變異體數(shù)量不小于生成變異體最多的變異算子產(chǎn)生的一階變異體的數(shù)量;RandomMix算法隨機(jī)組合2個(gè)一階變異體生成二階變異體,生成的二階變異體數(shù)量為一階變異體數(shù)量的一半.3種算法的基本思想都是通過(guò)一階變異體組合生成二階變異體,但限制生成的二階變異體數(shù)量的策略不同.其中,LastToFirst算法和RandomMix算法生成的二階變異體數(shù)量相對(duì)確定(約為一階變異體數(shù)量的50%),而Different-Operators算法生成二階變異體數(shù)量不確定.本文研究的WS-BPEL程序可應(yīng)用的變異算子的種類(lèi)較少、不同變異算子生成的一階變異體數(shù)量不均衡,DifferentOperators算法不適用.RandomMix算法與LastToFirst算法相似,主要區(qū)別在于一階變異體的選擇次序.因此,本文采用LastToFirst算法生成二階變異體集合.
LastToFirst算法[27]按照首尾依次組合2個(gè)一階變異體的方式生成二階變異體,過(guò)程如圖1所示.其中,P指待測(cè)程序,M1至Mn代表待測(cè)程序P的一階變異體,M1,n及M2,n-1等代表通過(guò)首尾依次組合2個(gè)一階變異體生成的二階變異體.
Fig. 1 Procedure of LastToFirst algorithm圖1 LastToFirst 算法生成二階變異體過(guò)程
MuSOM描述的二階變異體生成步驟如下:
1) 根據(jù)給定WS-BPEL程序P生成一階變異體,得到的變異體集合表示為M1o={M1,M2,…,Mn}.我們按照一階變異體產(chǎn)生的順序?qū)ψ儺愺w命名并編號(hào)為1~n(n為一階變異體的總數(shù)).
2) 將M1o中的一階變異體首尾依次組合生成二階變異體,得到二階變異體集合為M2o={M1,n,M2,n-1,M3,n-2,…}.具體說(shuō)來(lái),將編號(hào)為1與編號(hào)為n的一階變異體組合得到二階變異體M1,n,編號(hào)為2與編號(hào)為n-1的一階變異體組合得到二階變異體M2,n-1,將編號(hào)為3與編號(hào)為n-2的一階變異體組合得到二階變異體M3,n-2,以此類(lèi)推,生成二階變異體集合.當(dāng)n為奇數(shù)時(shí),將一階變異體M(n+1)2與M(n+1)2+1組合生成二階變異體.
在變異測(cè)試中,有些變異算子生成的變異體可以被絕大多數(shù)測(cè)試用例檢測(cè)(“殺死”),有些算子生成的變異體只能被特殊的測(cè)試用例檢測(cè).若一些較難檢測(cè)的變異體都能被給定的測(cè)試用例集檢測(cè),那么該測(cè)試用例集也能檢測(cè)那些容易被測(cè)殺的變異體.基于以上猜想,我們從變異體執(zhí)行順序的角度,提出一種基于變異算子優(yōu)先級(jí)的變異測(cè)試優(yōu)化技術(shù),首先使用可以產(chǎn)生較難檢測(cè)變異體的變異算子,然后再使用產(chǎn)生較易檢測(cè)變異體的變異算子.
為了評(píng)價(jià)變異算子產(chǎn)生的變異體檢測(cè)的難易程度,引入變異算子質(zhì)量度量指標(biāo).這里約定P為待測(cè)的WS-BPEL程序;TS為測(cè)試用例集,TS={t1,t2,…,tn},其中ti為測(cè)試用例集中第i個(gè)測(cè)試用例,n為測(cè)試用例集的用例總數(shù);MO表示W(wǎng)S-BPEL的變異算子集合,MO={O1,O2,…,Ok},其中Oi表示第i個(gè)變異算子,k為變異算子總數(shù).
將變異算子質(zhì)量定義為
(1)
其中,NOi表示Oi變異算子產(chǎn)生的非等價(jià)變異體總數(shù).不難看出,上述定義可從故障檢測(cè)率(fault detection rate,FDR)推導(dǎo)而來(lái).故障檢測(cè)率FDR定義為測(cè)試用例檢測(cè)變異體的比例,廣泛用來(lái)衡量測(cè)試用例的故障檢測(cè)能力:
(2)
基于變異算子質(zhì)量定義,我們提出一種基于變異算子優(yōu)先級(jí)的優(yōu)化技術(shù)(簡(jiǎn)稱(chēng)為MuPri),通過(guò)衡量變異算子質(zhì)量,為變異算子分配測(cè)試優(yōu)先級(jí).具體過(guò)程為:首先,對(duì)大量的WS-BPEL程序進(jìn)行變異測(cè)試;然后,根據(jù)測(cè)試結(jié)果計(jì)算變異算子的質(zhì)量,按照質(zhì)量由高到低的順序?yàn)槠渑判?,質(zhì)量好的變異算子在變異測(cè)試中分配較高的優(yōu)先級(jí),質(zhì)量差的變異算子分配較低的優(yōu)先級(jí),即按照變異算子優(yōu)先級(jí)順序指導(dǎo)生成變異體集合.
算法1. 測(cè)試用例排序算法.
輸入:實(shí)例程序P、變異算子集合O、有序的測(cè)試用例集TS={t1,t2,…,tm};
輸出:排序后的測(cè)試用例集TS′.
① 從O中選擇適用于P的變異算子集合OP;
② 對(duì)OP中變異算子按算子質(zhì)量由高到低排序,得到變異算子序列OP:OP1,OP2,…,OPn;
③ 令i=1,TS′=?;
④ WHILEi≤nDO
⑤ 生成OPi的一階變異體集合MOi(P)={m1,m2,…,mk};
⑥ WHILEMOi(P)≠? DO
⑦ 添加一個(gè)測(cè)試用例t到TS′;
⑧ FOR ALLmj∈MOi(P) DO
⑨ 以t測(cè)試用例執(zhí)行mj;
⑩ IFmj被“殺死” THEN
MuPri技術(shù)不僅可以依據(jù)變異算子的優(yōu)先級(jí),優(yōu)先使用質(zhì)量好的變異算子生成變異體,提高變異體集質(zhì)量,還可以為測(cè)試用例集合排序,得到故障檢測(cè)效率更高的測(cè)試用例集,解決測(cè)試用例優(yōu)先級(jí)問(wèn)題.MuPri實(shí)現(xiàn)的測(cè)試用例排序的過(guò)程如算法1所示.
Fig. 2 Architecture of μBPEL圖2 μBPEL工具系統(tǒng)結(jié)構(gòu)圖
在前期工作中[8-9],我們開(kāi)發(fā)了一個(gè)面向WS-BPEL程序的變異測(cè)試支持工具μBPEL,支持變異體的生成、測(cè)試用例的執(zhí)行和測(cè)試結(jié)果驗(yàn)證.本文通過(guò)擴(kuò)展μBPEL進(jìn)一步支持本文提出的變異測(cè)試優(yōu)化技術(shù).圖2描述了μBPEL工具的系統(tǒng)結(jié)構(gòu).各個(gè)組件的功能描述如下:
1) 變異體生成.負(fù)責(zé)為待測(cè)WS-BPEL程序生成一階或二階變異體.
① WS-BPEL解析.解析WS-BPEL程序.
② 算子管理器.針對(duì)各種變異算子的匹配與操作,實(shí)現(xiàn)對(duì)相應(yīng)節(jié)點(diǎn)的變異處理.
③ XML文件讀/寫(xiě).負(fù)責(zé)WS-BPEL程序文件的讀入和變異體輸出.
④ 變異體生成.生成一階或二階變異體.
2) 變異體優(yōu)化.支持變異體隨機(jī)選擇優(yōu)化.
① 參數(shù)配置.接收用戶輸入的待優(yōu)化的變異體集合路徑和變異體精簡(jiǎn)比例.
② 變異體獲取.根據(jù)變異體精簡(jiǎn)比例,從變異體集合中隨機(jī)獲取相應(yīng)數(shù)目的變異體.
3) 測(cè)試用例生成.根據(jù)WS-BPEL原始文件,輸出期望的測(cè)試用例.課題組前期研發(fā)了2種測(cè)試用例生成工具[22],場(chǎng)景用例生成將WS-BPEL程序轉(zhuǎn)換為圖模型,基于給定的覆蓋準(zhǔn)則生成測(cè)試場(chǎng)景和數(shù)據(jù);隨機(jī)用例生成根據(jù)用戶輸入的約束條件,隨機(jī)生成滿足條件的測(cè)試用例.
4) 變異測(cè)試執(zhí)行.執(zhí)行測(cè)試用例并獲取輸出結(jié)果.
① 執(zhí)行環(huán)境配置.根據(jù)WS-BPEL的配置信息,獲取WS-BPEL服務(wù)的端口號(hào)和操作名稱(chēng)配置執(zhí)行環(huán)境.
② 程序選取.通過(guò)用戶輸入的文件路徑,依次獲取原始程序和變異體程序文件.
③ 用例讀取.讀入并解析相應(yīng)的測(cè)試用例文件,獲取用例輸入變量的類(lèi)型、數(shù)目、值及用例個(gè)數(shù)等信息.
④ 待測(cè)程序執(zhí)行.調(diào)用WS-BPEL引擎依次對(duì)原始程序和變異體執(zhí)行測(cè)試用例集并輸出結(jié)果.
5) 測(cè)試結(jié)果評(píng)估.負(fù)責(zé)對(duì)輸出結(jié)果進(jìn)行統(tǒng)計(jì)分析,由結(jié)果統(tǒng)計(jì)和報(bào)告獲取2個(gè)模塊組成.
① 結(jié)果統(tǒng)計(jì).對(duì)執(zhí)行相同測(cè)試用例的原始程序和變異體的輸出結(jié)果逐一進(jìn)行對(duì)比.若二者結(jié)果不同,表明該測(cè)試用例將變異體“殺死”,標(biāo)記為“T”;否則,記為“F”.依次記錄變異體被測(cè)殺的狀態(tài),并統(tǒng)計(jì)出針對(duì)變異體的每個(gè)測(cè)試用例集合的故障檢測(cè)率信息.
② 報(bào)告獲取.根據(jù)結(jié)果統(tǒng)計(jì)的輸出結(jié)果,計(jì)算
① http://www.activevos.com/developers/sample-apps
變異得分并生成報(bào)告,包括變異體數(shù)目、被殺死變異體數(shù)目和變異得分信息.
采用經(jīng)驗(yàn)研究驗(yàn)證與評(píng)估本文提出的面向WS-BPEL程序的變異測(cè)試優(yōu)化技術(shù)的有效性.
實(shí)驗(yàn)對(duì)象包括6個(gè)WS-BPEL程序?qū)嵗篠upplyChain實(shí)例[19](P1)、SmartShelf實(shí)例(P2)[19]、SupplyCustomer實(shí)例(P3)[2]、LoanApproval實(shí)例(P4)[2]、CarEstimate實(shí)例(P5)①和TravelAgency[28]實(shí)例(P6).表1總結(jié)這些程序?qū)嵗木唧w信息.
Table 1 WS-BPEL Programs表1 WS-BPEL程序?qū)嵗幕拘畔?/p>
本文使用變異得分(mutation score,MS)、故障檢測(cè)率FDR(見(jiàn)式(2))、測(cè)試用例序列檢測(cè)故障的平均百分比(average of the percentage of faults detected,APFD)這3個(gè)指標(biāo)度量變異測(cè)試優(yōu)化方法的有效性.
1) 變異得分MS.對(duì)于給定的測(cè)試用例集TS,殺死變異體數(shù)量與非等價(jià)變異體數(shù)量的比例[4],用來(lái)衡量測(cè)試用例集的充分程度.變異得分計(jì)算為
(3)
其中,P代表被測(cè)程序,Nk表示被殺死的變異體數(shù)量,Nm表示變異體總數(shù)量,Ne代表等價(jià)變異體的數(shù)量.變異得分越高,說(shuō)明測(cè)試用例集“殺死”的變異體越多,測(cè)試用例集越有效.
2) 測(cè)試用例序列檢測(cè)故障的平均百分比APFD.用于評(píng)價(jià)測(cè)試用例集的故障檢測(cè)效率,常用于衡量不同測(cè)試用例優(yōu)先級(jí)技術(shù)的排序效果[29].APFD的計(jì)算公式為
(4)
其中,TS表示具有特定序列的測(cè)試用例集,P表示待測(cè)程序,n表示測(cè)試用例的個(gè)數(shù),m表示被檢測(cè)故障的總數(shù),reveal(i,TS)表示最早檢測(cè)出第i個(gè)故障所執(zhí)行的測(cè)試用例的位置.APFD量化了測(cè)試用例序列的效率和效能,即APFD的數(shù)值越大,測(cè)試用例集故障檢測(cè)效率越高.本文采用APFD來(lái)度量序列化的測(cè)試用例的故障檢測(cè)效率.
討論與2種變異測(cè)試優(yōu)化技術(shù)評(píng)估相關(guān)的變異體生成和測(cè)試用例集.
1) 一階和二階變異體生成.針對(duì)表1中的WS-BPEL程序?qū)嵗捎帽疚拈_(kāi)發(fā)的μBPEL工具生成一階變異體集合(記為M1o)和二階變異體集合(記為M2o).表2總結(jié)了生成的一階變異體和二階變異體情況.
Table 2 First-Order and Second-Order Mutants ofWS-BPEL Programs
2) 測(cè)試用例生成.在前期工作中[10],我們采用等價(jià)類(lèi)劃分[30]、邊界值分析[30]、面向場(chǎng)景測(cè)試技術(shù)[22]和隨機(jī)測(cè)試技術(shù)[30]這4種技術(shù)生成測(cè)試用例.為了減少不同測(cè)試用例生成技術(shù)對(duì)變異測(cè)試結(jié)果的影響,最終生成5組測(cè)試用例集,分別記為T(mén)x,Ty,Tz,Tu,Tw,如表3所示.|Tx|,|Ty|,|Tz|,|Tu|,|Tw|表示W(wǎng)S-BPEL程序?qū)嵗龑?duì)應(yīng)的每組測(cè)試用例集的大小.需要指出的是,測(cè)試用例集的數(shù)量依賴于程序的規(guī)模和所使用的測(cè)試用例生成技術(shù).為了保證實(shí)驗(yàn)的公平性,本文采用這些測(cè)試用例集評(píng)估優(yōu)化技術(shù)的有效性.
Table 3 Test Suits of WS-BPEL Programs表3 WS-BPEL實(shí)例的測(cè)試用例集合
4.4.1 MuSOM技術(shù)評(píng)估結(jié)果
MuSOM技術(shù)有效性的評(píng)估過(guò)程描述如下:首先,采用測(cè)試用例集Tx對(duì)一階變異體集合M1o和二階變異體集合M2o進(jìn)行變異測(cè)試,得到能夠殺死所有變異體的測(cè)試用例集TC;然后,采用測(cè)試用例集TC對(duì)一階變異體集合M1o進(jìn)行變異測(cè)試,統(tǒng)計(jì)變異得分.
表4總結(jié)了生成的二階變異體集合中的等價(jià)變異體情況;圖3統(tǒng)計(jì)了一階變異體集合和二階變異體集合的變異得分情況.
Table 4 Equivalent Mutant of WS-BPEL Programs表4 WS-BPEL程序?qū)嵗牡葍r(jià)變異體情況
Fig. 3 Mutation score of WS-BPEL programs圖3 WS-BPEL程序的一階與二階變異體的變異得分
上述實(shí)驗(yàn)結(jié)果表明:
1) 在使用同樣數(shù)目和種類(lèi)的變異算子情況下,M2o集合數(shù)量約為M1o的一半,相對(duì)于一階變異測(cè)試,減少了約50%的待測(cè)變異體(如表2所示);M2o中的等價(jià)變異體數(shù)目(NE)總和為0,而M1o中存在48個(gè)等價(jià)變異體(如表4所示),主要原因是,與一階變異體相比,二階變異體中植入了多處錯(cuò)誤,降低了等價(jià)變異體的生成概率.由此可見(jiàn),MuSOM技術(shù)極大地減少了等價(jià)變異體的出現(xiàn)概率(一階變異測(cè)試中等價(jià)變異體約為28%),大幅度降低等價(jià)變異體識(shí)別帶來(lái)的計(jì)算開(kāi)銷(xiāo).
2) 在采用相同的測(cè)試用例集情況下,二階變異測(cè)試的變異得分均為100%,而一階變異測(cè)試的變異得分有所不同.其中,P3和P5實(shí)例中的變異得分為100%;P1和P6實(shí)例中的變異得分分別是97.1%和97.5%,接近于100%;P2和P4實(shí)例的變異得分分別是72.6%和73.1%.主要原因是,二階變異體中存在多處錯(cuò)誤,更容易被檢測(cè)出來(lái).相應(yīng)地,在相同測(cè)試用例集情況下,二階變異測(cè)試的變異得分高于一階變異測(cè)試.
綜上所述,相對(duì)于傳統(tǒng)的(一階)變異測(cè)試而言,二階變異測(cè)試技術(shù)可以減少約50%的變異體和減少約28%的等價(jià)變異體識(shí)別開(kāi)銷(xiāo),同時(shí)并沒(méi)有大幅度降低衡量測(cè)試用例集充分性的能力.
4.4.2 MuPri技術(shù)評(píng)估結(jié)果
MuPri技術(shù)依據(jù)變異算子質(zhì)量對(duì)測(cè)試用例集進(jìn)行排序.通過(guò)對(duì)比排序前后的測(cè)試用例集的APFD評(píng)估MuPri技術(shù)的有效性.具體步驟有3個(gè):
1) 變異算子優(yōu)先級(jí)排序.首先采用測(cè)試用例集Tx,Ty,Tz,Tu,Tw分別執(zhí)行實(shí)例程序和其一階變異體集合M1o,計(jì)算變異得分(MS)和故障檢測(cè)率(FDR).需要說(shuō)明的是,如下變異算子在實(shí)例程序中不適用:EAA,EEU,ELL,EMD,EMF,AFP,AIS,AWR,AJC,APM,APA,XMC,XMT,XTF,XER,XEE;變異算子ECC和EAP產(chǎn)生的均為等價(jià)變異體.限于篇幅,我們不列出每個(gè)變異算子的變異得分和故障檢測(cè)率(參考文獻(xiàn)[9]).
表5列出了可適用的變異算子優(yōu)先級(jí)排序結(jié)果.依據(jù)變異算子質(zhì)量Qo的平均值,對(duì)變異算子排序并分配優(yōu)先級(jí).優(yōu)先級(jí)的數(shù)值越小,表示該變異算子的優(yōu)先級(jí)越高.
Table 5 Priority of Mutation Operators表5 變異算子優(yōu)先級(jí)
2) 測(cè)試用例集排序.針對(duì)每個(gè)WS-BPEL程序P,首先得到變異得分100%的測(cè)試用例集TS,使用變異算子優(yōu)先級(jí)得到排序的測(cè)試用例集TS′,分別計(jì)算測(cè)試用例集TS和TS′的APFD值.以SupplyChain程序?yàn)槔?,?列出了適用的變異算子優(yōu)先級(jí)序列為:CDE→CCO→CDC→ERR→AIE→ASF→AEL→CFA→EIN→ASI→ACI.采用測(cè)試用例排序過(guò)程(算法1)對(duì)SupplyChain實(shí)例的測(cè)試用例集進(jìn)行排序,結(jié)果如表6所示.表6中,“√”表示測(cè)試用例集TS中第1個(gè)將該變異體“殺死”的用例.最終得到測(cè)試用例集TS的順序是“T1→T2→T3”.
Table 6 Results of Executing Test Suite (TS) on SupplyChain表6 SupplyChain程序執(zhí)行測(cè)試用例TS結(jié)果
Note:“√” means the first test case that kills the mutant.
使用排序后的測(cè)試用例集TS執(zhí)行沒(méi)有排序的變異體集合,結(jié)果如表7所示.其中“√”表示第1個(gè)將變異體“殺死”的測(cè)試用例,Location表示該用例在TS中的位置,“×”表示測(cè)試用例不能“殺死”變異體,“~”表示測(cè)試用例沒(méi)有執(zhí)行.最終計(jì)算得到APFD的值是74.5%.類(lèi)似地,我們可以得到其他WS-BPEL程序優(yōu)化前后的APFD值.
Table 7 Results of Mutation Testing表7 變異體測(cè)試結(jié)果
Notes:“√” means that the test case kills the mutant; “×” means that the test case cannot kill the mutant; “~” means that the test case is not executed to kill the mutant.
3) 比較排序前后測(cè)試用例集的有效性.表8列出了每個(gè)WS-BPEL程序的變異算子優(yōu)化前后的測(cè)試用例集的APFD.
Table 8 Comparison Between APFD of Original Test Suiteand that of Prioritized Test Suite Using MuPri
上述實(shí)驗(yàn)結(jié)果表明:使用MuPri優(yōu)化技術(shù)后得到的測(cè)試用例序列的APFD值都大于或等于優(yōu)化前的APFD值.MuPri優(yōu)化技術(shù)優(yōu)先使用較難被檢測(cè)的變異算子生成變異體,采用這樣的變異體集合為測(cè)試用例集排序,可以得到故障檢測(cè)效率更高的測(cè)試用例集.因此,MuPri技術(shù)通過(guò)對(duì)變異算子進(jìn)行優(yōu)先級(jí)排序提高了測(cè)試用例集的故障檢測(cè)效率.
本文針對(duì)WS-BPEL程序的變異測(cè)試開(kāi)銷(xiāo)大的問(wèn)題,提出了2種面向WS-BPEL程序的變異測(cè)試優(yōu)化技術(shù)MuSOM和MuPri.其中,MuSOM從變異體數(shù)量精簡(jiǎn)角度,將二階變異應(yīng)用WS-BPEL測(cè)試;MuPri提出了變異算子質(zhì)量的概念,通過(guò)度量變異算子優(yōu)先級(jí)指導(dǎo)變異體的使用順序.開(kāi)發(fā)了面向WS-BPEL程序的變異測(cè)試支持工具μBPEL,該工具實(shí)現(xiàn)了本文提出的優(yōu)化技術(shù),有助于對(duì)WS-BPEL程序進(jìn)行高效的變異測(cè)試.最后,采用6個(gè)WS-BPEL程序?qū)嵗?yàn)證并評(píng)估了提出的變異測(cè)試優(yōu)化技術(shù)的有效性.實(shí)驗(yàn)結(jié)果表明:本文提出的變異測(cè)試優(yōu)化技術(shù)極大地降低了WS-BPEL程序的變異測(cè)試開(kāi)銷(xiāo),提高了變異測(cè)試的效率.
未來(lái)將在2個(gè)方面進(jìn)一步開(kāi)展研究工作:1)與其他相關(guān)的優(yōu)化技術(shù)進(jìn)行比較,評(píng)估所提出的優(yōu)化技術(shù)的效率;2)擴(kuò)展驗(yàn)證的WS-BPEL程序集,特別地,目前的程序集適用的變異算子種類(lèi)較少,需要采用更大規(guī)模的實(shí)例程序?qū)?yōu)化技術(shù)進(jìn)行更全面的評(píng)估.