遲洋 蘇小紅 王甜甜
摘要:軟件調(diào)試橫跨整個(gè)軟件開發(fā)周期,而錯誤定位是軟件調(diào)試中最困難、最耗時(shí)的任務(wù)之一。針對軟件自動化調(diào)試的需求和應(yīng)用背景,本文介紹了變異分析以及錯誤定位相關(guān)的國內(nèi)外研究現(xiàn)狀,選擇了具有較高的錯誤定位精度的基于變異分析的軟件錯誤定位方法進(jìn)行研究,并對已有的基于變異分析的軟件錯誤定位方法做出了分析和比較。最后,對未來的研究方向進(jìn)行了展望。
關(guān)鍵詞: 軟件調(diào)試; 變異分析; 錯誤定位
中圖分類號: TP311
文獻(xiàn)標(biāo)志碼: A
文章編號: 2095-2163(2017)05-0157-05
Abstract: Software debugging is across the entire software development cycle, and faultlocalization is one of the most difficult and timeconsuming task in software debugging. For automatic software debugging requirements and application background, this paper analyses the research status of mutation analysis and fault location in China and abroad; after that, chooses to study the mutaitonbased fault localization as it has higher fault location accuracy. Then the paper makes the detailed analyses and comparisons on previous researches of mutaitonbased fault localization. At last, the paper looks into the research priorities in future.
Keywords: software debugging; mutation analysis; fault localization[HK][HJ]
0 引言
錯誤定位是指有效識別導(dǎo)致程序測試執(zhí)行失敗的缺陷或問題,以定位軟件中的錯誤代碼為目的,可通過在待測程序上運(yùn)行合適的測試用例,分析并定位錯誤語句。這一過程通常需要人為理解待測程序的復(fù)雜的內(nèi)部邏輯,以及辨識通過和失敗的測試之間的不同原因,因此錯誤定位技術(shù)是軟件調(diào)試中最具挑戰(zhàn)性與開拓性,且對操作人員要求達(dá)到高等技能水平的任務(wù)之一。由于人為進(jìn)行錯誤定位開銷巨大[1],自動化、高效可靠、且精準(zhǔn)可達(dá)的錯誤定位方法研究工作則具有重大的理論意義和實(shí)用價(jià)值。
然而,雖然軟件測試是減少軟件錯誤、提高軟件質(zhì)量的一種重要手段,但是因?yàn)槌绦蛑械哪承┱Z句或分支僅在一些極端情況或滿足特定條件時(shí)才能執(zhí)行,同時(shí)某些影響程序的環(huán)境因素又往往是不可預(yù)見的,所以完備的測試幾乎是不可能的,也是不現(xiàn)實(shí)的。隨著軟件規(guī)模越來越大、邏輯越來越復(fù)雜,測試有時(shí)很難覆蓋程序中所有可能的執(zhí)行分支,以致幾乎不可能在程序測試過程中發(fā)現(xiàn)所有的問題。另外,雖然目前已有很多自動化軟件測試工具,軟件調(diào)試卻大多采用設(shè)置斷點(diǎn)等人工分析的方法,人工定位錯誤不僅極其耗時(shí),而要準(zhǔn)確定位軟件中的錯誤則更是需要對其現(xiàn)存各種困難的長足突破。因此,如何有效檢測并快速準(zhǔn)確地定位軟件錯誤,即已成為目前亟需解決的一個(gè)重要的科學(xué)問題。
[JP2]迄今為止,已有很多不同的軟件錯誤定位方法,例如基于語句覆蓋的方法、基于程序狀態(tài)的方法和基于程序依賴關(guān)系的方法等等。其中,基于語句覆蓋的錯誤定位方法[1](Coverage-based Fault Location, CBFL)得到了廣泛的研究,該方法通過在待測程序上運(yùn)行一個(gè)測試套件,程序譜,也就是研究項(xiàng)目實(shí)體(程序語句[2-4]或程序分支[5])的覆蓋情況,以及記錄測試用例執(zhí)行結(jié)果(成功,或失?。?。這種錯誤定位技術(shù)根據(jù)覆蓋情況可為每個(gè)實(shí)體計(jì)算可疑度作為其可能是一個(gè)錯誤的衡定依據(jù)。實(shí)體可疑度從高到低排序形成一個(gè)列表從而提供給開發(fā)人員用于定位錯誤實(shí)體?;诔绦蜃V(語句覆蓋)的錯誤定位方法研究主要集中在設(shè)計(jì)新的可疑度計(jì)算公式[6-9],進(jìn)行公式最優(yōu)化的理論分析和公式的層次結(jié)構(gòu)的分析[10-12]等方面。然而,這里所指的程序譜,僅僅是待測程序控制流和測試用例執(zhí)行結(jié)果的結(jié)合,由于高度依賴測試用例在程序語句上的覆蓋信息,對其準(zhǔn)確性也存在著一定質(zhì)疑[13]。隨著錯誤定位研究的不斷發(fā)展,提高錯誤定位的精度吸引了廣泛的關(guān)注。因此,如何在已有的錯誤定位方法的基礎(chǔ)上,尋找一種新的精確而穩(wěn)定的錯誤定位方法輔助開發(fā)人員尋找軟件錯誤并對錯誤進(jìn)行修復(fù),不僅僅是一個(gè)值得研究的問題,同時(shí)更對于提高軟件質(zhì)量、降低軟件維護(hù)的成本、縮減人為開銷、實(shí)現(xiàn)軟件的自動化調(diào)試與維護(hù),具有至關(guān)重要的科學(xué)意義和使用價(jià)值。
[JP2]考慮到測試和錯誤定位,超過二十年的變異測試領(lǐng)域的研究和實(shí)驗(yàn)表明,通過在程序上使用變異算子模擬人為錯誤,相比于傳統(tǒng)的測試選擇標(biāo)準(zhǔn)(如基于代碼覆蓋)可以有效檢測未知的、真實(shí)的錯誤,這種方法因此而被稱為基于變異分析的錯誤定位方法[14](Mutation-based Fault Location, MBFL)。該方法通過變異體模擬人為錯誤,并通過其執(zhí)行結(jié)果利用公式揭示出來以達(dá)到錯誤定位的目的,能夠更為準(zhǔn)確地定位出程序的錯誤語句。這一方法也為錯誤定位領(lǐng)域提供了一個(gè)良好的開端方向,對錯誤定位領(lǐng)域的發(fā)展必將發(fā)揮預(yù)期理想的推動作用。
本文通過對已有文獻(xiàn)成果的研究和分析,總結(jié)了變異分析以及錯誤定位相關(guān)的國內(nèi)外研究現(xiàn)狀,并對已有的基于變異分析的軟件錯誤定位方法做出了分析和比較。最后,對未來的研究方向進(jìn)行了展望。endprint
[BT4]1軟件錯誤定位方法的研究
[HT5”SS][ST5”BZ]
[JP2]由于自動化錯誤定位技術(shù)具有重要的科學(xué)意義和研究價(jià)值,人們在錯誤定位領(lǐng)域開展了大量的研究。主要的方法包括,基于程序狀態(tài)修改的方法[15-16]、基于程序依賴分析的方法[17]、基于程序切片的方法[18]以及基于語句覆蓋的方法[1]等。在此,針對各類方法,將逐一給出實(shí)現(xiàn)原理概述如下。
首先,基于程序狀態(tài)修改的方法就是通過修改狀態(tài)識別程序錯誤,定位效果較好,但由于其復(fù)雜度較高,對于較大規(guī)模的程序定位效率并不理想,且對程序狀態(tài)進(jìn)行修改,[JP3]容易導(dǎo)致無法預(yù)估的后果,如程序崩潰或陷入死循環(huán)等,錯誤定位的效果并不穩(wěn)定,因而該方法在近幾年涌現(xiàn)的研究成果頗為少見。
其次,基于程序依賴分析的方法是使用程序?qū)嶓w間的依賴關(guān)系,給出可疑語句的集合并形成可供程序員理解的調(diào)試上下文。這類方法考慮了程序?qū)嶓w間的相互影響和依賴關(guān)系,在理論上更為全面、也更深入,定位效果堪稱良好。但該方法計(jì)算復(fù)雜度結(jié)果居高,且開銷巨大,同時(shí)調(diào)試信息通常又會過于繁瑣,包含冗余,增加了定位的難度。
接著,基于程序切片的方法通過將程序劃分簡化成程序切片,將定位的范圍縮小到切片級別,該方法定位較為準(zhǔn)確,所需測試用例較少,但無法提供程序語句可疑程度的描述,且在大量的程序切片中觀察程序行為的開銷較大,時(shí)間和空間復(fù)雜度均會較高。
最后,基于語句覆蓋的方法主要是分析程序執(zhí)行時(shí)每條語句的覆蓋信息,根據(jù)成功和失敗測試用例對程序語句的覆蓋情況利用公式計(jì)算可疑度,如Jones和Harrold[2,19]提出的Tarantula方法、Abreu[20]等提出的Ochiai方法以及Jaccard
基于語句覆蓋的錯誤定位方法依賴待測程序控制流和測試用例的覆蓋信息,易于實(shí)現(xiàn)且容易理解,往往能夠得到理想的結(jié)果。但該方法未考慮到程序控制流對程序的影響,對于謂詞類型的錯誤不能達(dá)到有效定位;同時(shí),因其未能處理巧合正確性的測試用例,使得定位的有效性和穩(wěn)定性必將會受到影響。[JP3]此外,由于過分依賴測試用例在程序語句上的覆蓋信息,所有在同一個(gè)基本塊中的語句會共享相同的覆蓋信息,相同的排名。這即會使得錯誤定位的精確度發(fā)生降低,程序員需要檢查的語句數(shù)量也隨之增多,因此其定位效果并不恒穩(wěn)于理想狀態(tài)。
為了解決上述問題,人們提出了將變異分析與錯誤定位相結(jié)合的基于變異分析的錯誤定位方法。
2變異分析相關(guān)研究
變異分析產(chǎn)生于上世紀(jì)70年代[24],是指對程序源代碼執(zhí)行變異操作生成變異體,簡單實(shí)例如圖1所示,然后將測試用例在變異體上執(zhí)行,獲得執(zhí)行結(jié)果信息,最后結(jié)合程序結(jié)構(gòu)進(jìn)行分析。程序的變異可分為一階變異和高階變異,分別是指對程序設(shè)計(jì)一處和多處變異產(chǎn)生變異體。
變異分析最早用于變異測試,變異測試概念由DeMillo等[24]在文章中首次提出,是一種通過修改程序源碼模擬程序錯誤檢驗(yàn)測試用例有效性的軟件測試方法。該方法可以有效挖掘發(fā)現(xiàn)測試集的缺陷和不足,測試用例殺死變異體的數(shù)量就將反映測試用例對程序變異的敏感程度,敏感程度越高,測試用例質(zhì)量越高。變異測試的例子如圖2所示。相關(guān)的方法還包括Nica等[25]的研究,在其研究中,變異體被用于產(chǎn)生測試用例,測試套件因此而會擴(kuò)大,擴(kuò)大后的測試套件即可用于執(zhí)行基于模型的錯誤診斷。
而后,變異分析也被用于錯誤修正,Debroy和Wong [26]提出了使用變異體來自動修復(fù)程序錯誤。該方法的基本思路是,利用基于語句覆蓋的錯誤定位技術(shù)對程序錯誤進(jìn)行定位,而后對擁有最高可疑度的錯誤語句引入變異,檢查一個(gè)錯誤
語句的變異體是否能夠使所有測試用例都成功,即變異體是[CM)]否能修復(fù)錯誤。假如所有測試均顯現(xiàn)了成功,變異體就可稱為是錯誤程序的一個(gè)可能的修復(fù)。
3已有的基于變異分析的錯誤定位方法
使用變異體幫助軟件錯誤定位過程的想法第一次在Papadakis和Le-Traon[27]的錯誤定位研究中提出,稱為基于變異分析的錯誤定位方法(Mutation-based Fault Location, MBFL),并開發(fā)出工具M(jìn)etallaxis-FL。該方法主要依賴變異體間的相似性來探測未知錯誤。其總體思路是,對待測程序進(jìn)行變異處理生成變異體,執(zhí)行測試用例,將執(zhí)行結(jié)果與源程序測試結(jié)果構(gòu)建特征比較,獲得變異體可疑度,揭示與變異體在相同位置的程序語句的可疑度,判斷錯誤語句的可能位置。
基于變異分析的錯誤定位方法舉例如圖3所示,圖中“√”表示變異體被測試用例殺死,F(xiàn)-Cov項(xiàng)中“X”表示被失敗測試用例覆蓋,“P,F(xiàn)”表示成功和失敗測試用例,“#P,#F”分別表示殺死變異體的成功和失敗測試用例數(shù)量,“M-Sup,S-Sup”表示變異體和語句的可疑度,“Rank”為語句可疑度排名。待測程序的錯誤為(Line7: m=x -> m=y),Mutation列給出了各目標(biāo)語句的不同變異體(一階變異后的完整程序),這些變異體依次執(zhí)行6個(gè)測試用例得出是否被殺死的結(jié)果,統(tǒng)計(jì)每個(gè)變異體被失敗測試用例殺死的次數(shù)failed(e)、被成功測試用例殺死的次數(shù)passed(e)和總的失敗測試用例數(shù)量totfailed這3個(gè)數(shù)據(jù)帶入Ochiai公式計(jì)算每個(gè)變異體的可疑度,語句的變異體中可疑度最高的值作為語句的可疑度,并排序。此時(shí),根據(jù)Ochiai公式,Line7的變異體可疑度是0.71,排名最高,與實(shí)際錯誤語句位置吻合。
Papadakis等[27]使用Siemens套件作為評測數(shù)據(jù)集,實(shí)驗(yàn)結(jié)果表明,Metallaxis-FL能夠精確有效地進(jìn)行錯誤定位,且明顯優(yōu)于其他基于語句覆蓋的錯誤定位工具。使用該方法實(shí)現(xiàn)錯誤定位不會導(dǎo)致有多條語句出現(xiàn)相同的排名,而且Metallaxis-FL擁有捕獲數(shù)據(jù)流信息的能力,能區(qū)分屬于同一基本塊的程序語句,因此這一方法不依賴于程序結(jié)構(gòu)。錯誤定位過程是在測試過程之后,使其能夠充分利用測試過程的信息。此外,等價(jià)變異體也不會對錯誤定位造成影響。使用這一方法計(jì)算程序語句可疑度比以往的基于覆蓋的錯誤定位方法更加精確,但缺點(diǎn)卻是變異體數(shù)量過多,執(zhí)行開銷較大。endprint
另一方面,類似地,Zhang等[4]使用變異分析來鑒別程序員提交的一系列源代碼庫中的包含錯誤的代碼:該方法是基于同一個(gè)位置的變異可能會導(dǎo)致相似的行為并產(chǎn)生相似的結(jié)果這一思想。這一思想為MBFL的發(fā)展提供了方向,具有重大意義。但程序變異會產(chǎn)生大量的變異體,這將使得變異體的執(zhí)行開銷巨大,錯誤定位效率低。
受程序自動修復(fù)技術(shù)的啟發(fā),Seikhyeon[28]等提出了一種基于變異分析的錯誤定位技術(shù)(MUtation-baSEd fault localization technique, MUSE),由于測試用例具有探測錯誤的能力,因此變異分析對錯誤定位也可提供積極作用,MUSE通過變異體模擬不同的程序行為,并提出了揭示這些變異體之間不同的度量,根據(jù)這一度量計(jì)算語句包含錯誤的概率。此外,研究還設(shè)計(jì)了一種錯誤定位方法的評估策略LIL,通過LIL分?jǐn)?shù)更好地評估錯誤定位方法的有效性。評測時(shí),使用的實(shí)驗(yàn)測試數(shù)據(jù)是Unix程序,包括flex、grep、gzip、sed、space,結(jié)果表明,MUSE的表現(xiàn)要勝過Op2、Tarantula、Ochiai等 CBFL度量[10]。雖然MUSE與MBFL一樣都是采用了變異算子來影響程序行為,但MBFL更多地主要是集中在通過測試套件執(zhí)行變異體來展現(xiàn)類似的程序行為,因此MBFL與MUSE并不完全相同。由于變異算子具有顯著的多樣性,基于變異分析的方法如MUSE的缺點(diǎn)則是不能像CBFL那樣自然地產(chǎn)生理論分析[11]。
近來,Gong P等[29]提出使用一種動態(tài)變異執(zhí)行策略來降低MBFL的執(zhí)行開銷,該方法首先變異程序語句生成有效變異體,然后在變異體上啟動實(shí)現(xiàn)測試用例時(shí),為了降低在大量變異體上執(zhí)行測試用例的開銷,采用了由變異體執(zhí)行優(yōu)化(Mutation Execution Optimization Strategy,MEO)和測試用例執(zhí)行優(yōu)化(Test Cases Execution Optimization Strategy,TEO)這2種優(yōu)化構(gòu)成的變異執(zhí)行策略。MEO的思想是基于語句所有變異體中的最大可疑度值被分配為該語句的可疑度值,因此只需要得到最高可疑度,盡量減少會得到較低可疑度的執(zhí)行即可。TEO的思想是可殺死語句s的一個(gè)變異體的測試用例可能也會殺死s的其他變異體。記錄測試用例t殺死變異體的情況history,優(yōu)先執(zhí)行能殺死更多變異體的測試用例,可以削減不必要的測試用例在變異體上的運(yùn)轉(zhuǎn)流程。相關(guān)的實(shí)驗(yàn)測試數(shù)據(jù)集為Siemens測試套件,結(jié)果表明,這一優(yōu)化策略能有效降低開銷且不損失精度。
[BT4]4研究展望
從目前已有的研究來看,雖然基于變異分析的錯誤定位方法定位錯誤的精度較高,但由于在計(jì)算語句可疑度之前,要執(zhí)行大量的測試用例和變異體,因此變異分析成本是相當(dāng)巨大的。為此預(yù)計(jì)在今后的一段時(shí)間內(nèi),如何有效降低這一開銷是研究該錯誤定位方法的主要問題。降低變異分析成本可以通過以下3個(gè)方面得到控制與實(shí)現(xiàn):
1)減少變異體數(shù)量。目前普遍使用的方法是變異體抽樣,通過隨機(jī)選擇的方法選擇變異體,這一方法簡便快捷,但可能會降低錯誤定位精度;還可以采用選擇變異,可通過啟發(fā)式學(xué)習(xí)程序錯誤版本建立模型針對程序結(jié)構(gòu)特征選擇有效的變異體,或根據(jù)變異體的變異得分優(yōu)選變異體;或者使用高階變異,產(chǎn)生出融合多處變異的變異體以減少變異體數(shù)量。
2)去除冗余測試用例。由于Siemens套件等測試數(shù)據(jù)集中包含大量的測試用例,這些測試用例可能不會全部為錯誤定位做出貢獻(xiàn),因此分析針對不同的程序錯誤,選擇不同的測試用例,去除那些不容易揭露錯誤的測試用例以減少測試用例的數(shù)量。
3)減少執(zhí)行開銷。設(shè)計(jì)算法優(yōu)化執(zhí)行以減少不必要的開銷,或是采用弱編譯的方法提高程序批量執(zhí)行的速度以達(dá)到運(yùn)行時(shí)間上的優(yōu)化;或者使用變異體模式進(jìn)行變異分析,使用程序圖式編碼將變異體劃分成一元程序,其編譯和運(yùn)行速度將大大提高。
5結(jié)束語
本文綜述了近年來錯誤定位領(lǐng)域以及變異分析領(lǐng)域的主要研究方法,重點(diǎn)介紹了幾個(gè)基于變異分析的錯誤定位方法的優(yōu)缺點(diǎn)以及目前面臨的主要問題,最后從3個(gè)方面展望了未來的研究重點(diǎn)。
參考文獻(xiàn)
WONG W E, DEBROY V. A Survey of Software Fault Localization[R]. Dallas: University of Texas, 2009.
[2] JONES J A, HARROLD M J. Empirical evaluation of the tarantula automatic faultlocalization technique[C]Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering. Long Beach, California: ACM, 2005: 273-282.
[3] ABREU R, ZOETEWEIJ P, GEMUND A J C V. An evaluation of similarity coefficients for software fault localization[C]Pacific Rim International Symposium on Dependable Computing. Melbourne, Victoria, Australia: IEEE, 2007:39-46.
[4] ZHANG L, ZHANG L, KHURSHID S. Injecting mechanical faults to localize developer faults for evolving software[J]. Acm Sigplan Notices, 2013, 48(10):765-784.endprint
[5] MASRI W. Fault localization based on information flow coverage[J]. Software Testing Verification & Reliability, 2010, 20(2):121-147.
[6] [JP3]DALLMEIER V, LINDIG C, ZELLER A. Lightweight bug localization[JP] with AMPLE[C] International Workshop on Automated Debugging, Aadebug 2005. Monterey, California, USA:ACM, 2005:99-104.
[7] JONES J A, HARROLD M J, STASKO J T. Visualization for fault localization[C] Proceedings of Icse Workshop on Software Visualization. Toronto, Ont., Canada:IEEE, 2001:71-75.
[8] WONG W E, QI Y, ZHAO L, et al. Effective fault localization using code coverage[C] International Computer Software & Applications Conference. Beijing, China: IEEE, 2007:449-456.
[9] [JP3]YOO S. Evolving human competitive spectrabased fault localisation[JP] techniques[C] International Conference on Search Based Software Engineering. Riva Del Garda, Italy: Springer-Verlag, 2012:244-258.
[10]NAISH L, HUA J L, RAMAMOHANARAO K. A model for spectrabased software diagnosis[J]. Acm Transactions on Software Engineering & Methodology,2011, 20(3):563-574.
[11]XIE X, CHEN T Y, KUO F C, et al. A theoretical analysis of the risk evaluation formulas for spectrumbased fault localization[J]. Acm Transactions on Software Engineering & Methodology, 2013, 22(4):402-418.
[12]XIE X, KUO F C, CHEN T Y,et al. Provably Optimal and HumanCompetitive Results in SBSE for Spectrum Based Fault Localisation[M] RUHE G, ZHANG Yuanyuan. Search Based Software Engineering. Berlin/Heidelberg: SpringerVerlag, 2013:224-238.
[13]PARNIN C, ORSO A. Are automated debugging techniques actually helping programmers?[C] International Symposium on Software Testing and Analysis. London: ACM, 2011:199-209.
[14]ANDREWS J H, BRIAND L C, LABICHE Y, et al. Using mutation analysis for assessing and comparing testing coverage criteria[J]. IEEE Transactions on Software Engineering, 2006, 32(8):608-624.
[15]CLEVE H, ZELLER A. Locating causes of program failures[C]Proceedings of the 27th international conference on Software engineering. St. Louis, MO, USA: ACM, 2005: 342-451.
[16]CHANG C H, PAIGE R. From regular expressions to DFA's using compressed NFA's[M]APOSTOLICO A, CROCHEMORE M, GALIL Z, et al. Combinational Pattern Matching. Berlin/Heidelberg: Springer-Verlag, 1992:90-110.
[17]BAAH G K, PODGURSKI A, HARROLD M J. The probabilistic program dependence graph and its application to fault diagnosis[J]. Software Engineering, IEEE Transactions on, 2010, 36(4): 528-545.endprint
[18]STERLING C D, OLSSON R A. Automated bug isolation via program chipping[C] International Symposium on Automated AnalysisDriven Debugging. California: ACM Press, 2005:1061-1086.
[19]JONES J A, HARROLD M J, STASKO J. Visualization of test information to assist fault localization[C] Proceedings of the 24th International Conference on Software Engineering. Orlando: IEEE Computer Society, 2002:467-477.
[20]ABREU R, ZOETEWEIJ P, GEMUND A J C V. On the accuracy of spectrumbased fault localization[C] Testing: Academic and Industrial Conference Practice and Research TechniquesMutation 2007. Windsor: TAICPARTMutation, 2007:89-98.
[21]REPS T, BALL T, DAS M, et al. The use of program profiling for software maintenance with applications to the year 2000 problem[M] JAZAYERI M, SCHAUER H. Software EngineeringESEC/FSE′97. Berlin/Heidelberg:Springer, 1997:432-449.
[22]SANTELICES R, JONES J, YU Y, et al. Lightweight faultlocalization using multiple coverage types[C] International Conference on Software Engineering. Auckland: IEEE/ACM, 2009:56-66.
[23]YOO S, HARMAN M, CLARK D. Fault localization prioritization: Comparing informationtheoretic and coveragebased approaches[J]. Acm Transactions on Software Engineering & Methodology, 2013, 22(3):96.
[24]DEMILLO R A, LIPTON R J, SAYWARD F G. Hints on test data selection: help for the practicing programmer[J]. Computer, 1978, 11(4):34-41.
[25]NICA M, NICA S, WOTAWA F. On the use of mutations and testing for debugging[J]. Software Practice & Experience, 2013, 43(9):1121-1142.
[26]DEBROY V, WONG W E. Using mutation to automatically suggest fixes for faulty programs[C] International Conference on Software Testing, Verification and Validation. Paris, France: ICST, 2010:65-74.
[27]PAPADAKIS M, TRAON Y L. Metallaxis-FL: mutationbased fault localization[J]. Software Testing Verification & Reliability, 2015, 25(5/7):605-628.
[28]MOON S, KIM Y, KIM M, et al. Ask the mutants: mutating faulty programs for fault localization[C] IEEE International Conference on Software Testing, Verification, and Validation. Cleveland: IEEE Computer Society, 2014:153-162.
[29]GONG P, ZHAO R, LI Z. Faster mutationbased fault localization with a novel mutation execution strategy[C] IEEE Eighth International Conference on Software Testing, Verification and Validation Workshops. Graz: IEEE, 2015:1-10.
[30]MASRI W. Fault localization based on information flow coverage[J]. Software Testing Verification & Reliability, 2010, 20(2):121-147.endprint