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

基于測試結果調整語句出錯概率方法*

2014-03-23 06:03:12王蓁蓁
計算機工程與科學 2014年5期
關鍵詞:程序方法

王蓁蓁

(1.金陵科技學院信息技術學院,江蘇南京211169;2.江蘇省信息分析工程實驗室,江蘇南京211169)

1 引言

運用從軟件測試中獲得的信息自動確定錯誤位置是很重要的一種技術手段,有關方法可以統稱為TBFL(Testing-Based Fault Localization)方法[1~12]。

文獻[3]討論了六種涉及動態定位的TBFL方法:Dicing方法(Agrawl et al,1995)、TARANTULA方法(Jones et al,2002;Jones and Harrold 2005)、Nearest Neighbor Queries方法(Renieris and Reiss 2003)、CT(Cleve and Zeller 2005)、So-BER(Liu et al,2005)和Liblit05(liblit et al,2005),發現它們都忽略了實施相似性的測試用例可能產生的問題。同樣,文獻[6]也指出,相似性的測試用例可能會損害TBFL方法的功效。為了解決該問題,文獻[3]主要是運用模糊集合理論提出了SAFL(Similarity-Aware Fault Localization)方法。在測試實踐中,測試用例的相似性總是難以避免的,所以討論類似SAFL方法和尋找更有成效的錯誤定位方法是有價值的。

然而測試實踐里也存在這樣的問題,就是沒有充分利用原程序和測試用例本身所包含的信息去輔助測試結果尋找錯誤根源,這不僅是一種“資源浪費”,而且有時對程序中隱蔽錯誤的揭露“無能為力”,這特別表現在,當測試用例全部通過時,測試對程序中沒有被揭露出的錯誤就“無話可說”。為了解決這個問題,文獻[12]提出了一種新的基于隨機理論的TBFL方法,該方法對減少相似用例的傷害性方面也有成效。

文獻[12]認為軟件雖然是由高度負責和有豐富專業知識的程序員編寫的,但是由于軟件的復雜性和“非物質性”,一些“偶然”因素所導致的錯誤是無法避免的,所以將整個待測程序看成是一個隨機變量,把程序員或測試員在測試前關于程序中每個語句(或各個構件)出錯的可能性的估計抽象為該隨機變量的先驗分布。同樣,就測試用例捕捉程序的錯誤能力而言,也視測試用例集為另一個隨機變量,其分布就是它們的捕捉錯誤的能力的抽象表示。在這些信息的基礎上,綜合利用每個測試用例的測試結果類型(失敗或通過)和它們覆蓋語句的情況,對程序里每個語句的(先驗)概率作“綜合性”調整,調整后的概率稱為后驗概率,最后根據這個后驗概率對錯誤語句進行排序,為程序員尋找錯誤提供導向。

隨機TBFL算法可以用如圖1所示的流程圖(參見文獻[12]的圖3)表示(稍加改變)。

Figure 1 Flowchart of random TBFL algorithm圖1 隨機TBFL算法流程圖

圖1很好地闡述了文獻[12]提出的隨機TBFL算法的精神。算法細節請參見該文獻。文獻[12]指出,X的先驗分布是根據程序“樣式”分析得到的,測試集的(先驗)分布與設計測試用例的類型、意圖有關,它們分別與程序里語句的真實錯誤和測試用例具體實施結果無關,并且這些先驗知識即使粗糙,只要大體上“正確”,當它們和測試實踐產生的結果從微觀和宏觀兩個層次上進行關聯以后,就會對語句的錯誤定位有較大幫助。文獻[12]在一些具體實例上,把它和前述幾個方法進行對比,證實了這一點。

本文遵循文獻[12]的思路,但對其算法作了改進。主要思想是:首先把程序X的先驗分布從測試活動里“分離”出來,因為程序的先驗分布的不精確可能會影響“單純的”測試活動的結果,這種分離也符合當前流行的軟件測試的主流方向。其次,測試集T的先驗分布也從具體測試里分離出來,等到估計測試結果的影響時才加入考慮。其具體思想可用圖2表示。

本文的算法稱為基于測試結果的隨機TBFL方法,為了敘述簡潔,下文簡稱它為新方法。

Figure 2 Flowchart of random TBFL algorithm based on testing results圖2 基于測試結果的隨機TBFL方法流程圖

本文的其余部分組織如下:第2節給出新算法大致框架;第3節給出TBFL算法評價標準;第4節為實例分析;第5節為結論和展望。

2 基于測試結果隨機TBFL算法模型

2.1 程序隨機變量X

用X={x1,x2,…,xm}={xi|xi是程序語句,1≤i≤m}表示程序,它是語句的集合,其中語句xi的下標i可按程序的書寫方式編碼。假定程序是“精心”編碼的,即是由有責任心且有熟練技能的開發人員編寫的。然而由于各種各樣不可控制的因素的影響,程序發生錯誤仍然是難免的。把程序的錯誤歸咎到語句層次上,認為它的每個語句出錯是一種偶然現象。因此,視程序X為(出錯)隨機變量,用rk=P(xk出錯)表示語句xk出錯的概率。rk(k=1,2,…,m)是程序X隨機變量的先驗概率質量函數。可以根據開發人員的經驗、歷史資料分析各種語句類型通常犯錯誤的可能性,也就是根據程序X的“樣式”確定rk之值。當然不同的人可能有不同的估計值,然而即使這些估計值粗糙、不精確,只要大體上反映了程序編寫時的客觀情況,它們對于語句錯誤定位算法都是有用的。如果缺少這方面的資料,可以按照統計學上“同等無知”原則,令rk=1/m,k=1,2,…,m,其中m是程序X的語句總數。

2.2 測試隨機變量T

用T={t1,t2,…,tn}表示測試用例集,其中tj(j=1,2,…,n)表示測試用例,以下有時簡稱為用例。它們是用來對程序X進行測試的。設計測試用例的目的是想捕獲程序錯誤,它們捕獲錯誤的可能性也是隨機現象,可以根據測試人員的經驗和軟件測試理論確定每個用例捕獲錯誤的概率,用pi=P(ti發現錯誤)表示ti用例能檢測出錯誤的概率。若沒有這方面的資料,在算法里不妨假設pi=1/n,其中n是T中測試用例的總數,這也是統計學中“同等無知”原則的應用。

2.3 具體測試

用T測試X后,可以將T中用例分為兩類:Tp和Tf。Tp表示測試程序時沒有發現錯誤的所有用例組成的子集合,Tf表示測試程序時發現錯誤的所有測試用例組成的子集合。Tp和Tf中的用例分別稱為通過用例和失敗用例。每個用例覆蓋語句的具體信息也可從測試活動里提取出來。一般來說,從具體測試活動中可以得到上述兩類信息。

2.4 測試功效矩陣F

根據具體測試結果,構造測試用例集T的功效矩陣F。F是一個n×m階矩陣,列對應程序X

的語句,行對應測試集T里的用例。即第i行為:ti=ti1ti2ti3ti4…tim,i=1,2,…,n

其中,tij(j=1,2,…,m)表示第i個用例測試結果對語句xj出錯概率“純粹功效”。我們建議:

其中,i=1,2,…,n;j=1,2,…,m;c1、c2都是大于1的正數。

設計tij的思想是,如果ti是失敗用例,則它覆蓋語句應承擔較多責任。用α表示ti覆蓋的語句可能犯錯誤的概率,β表示ti未覆蓋的語句出錯的概率,令α=c1β,c1>1是合理的。于是,由αl+β(m-l)=1,α=c1β,可得:

若ti是通過用例,則它未覆蓋的語句對程序出錯應承擔較多責任。同樣,用α表示ti覆蓋的語句可能犯錯誤的概率,β表示ti未覆蓋的語句出錯的概率,這時令β=c2α,c2>1是合理的。于是,由αl+β(m-l)=1,α=c2β,可得:

為了計算簡單起見,下面算法皆采用c1=c2=2。即:

其中,i=1,2,…,n;j=1,2,…,m。

以公式(2)產生的tij(i=1,2,…,n;j=1,2,…,m)為元素的矩陣稱為(測試集)功效矩陣,記為:

2.5 修正系數

計算向量b=(b1b2…bm),其中bi表示對程序X第i個語句xi出錯概率進行調整的修正系數,其定義如下:

固定xi,我們知道tji是從用例tj的觀點看待語句xi出錯的可能性,而pj是用例tj捕獲錯誤的能力,因此對于語句xi而言,把t1i,t2i,…,tni按照p1,p2,…,pn加權求和得到xi出錯的修正系數是合理的。

今后稱向量b為修正向量,其中i=1,2,…,m,元素bi稱為xi的修正系數。

2.6 后驗概率

用向量f=(f1f2…fm)表示(準)隨機分布,其中fi定義如下:稱向量f為原程序X的(準)后驗概率分布。也可以將f“標準化”,即令a=f1+f2+…+fm,則由fi←fi/a得到的序列是“真正”概率分布,記如此分布的隨機變量為XT。

然而就對語句出錯的排序而言,未標準化的f和標準化后的f作用是一樣的,今后我們就用未標準化的f作為XT的(準)概率分布,并省略“準”字,它與標準化后的概率不難從上下文中分辨出來。

2.7 語句出錯排序

根據fi(i=1,2,…,m)的值,從大到小排序,如果有若干個值相等,則按它們相應的語句出現的次序排序(語句編號較小的排列在前),得到:

把式(6)中具有相等值的fij歸為一類,然后把fij換成對應的語句xij,這樣就把程序語句按出錯可能性從大到小排列成若干個等級。假如是k個等級,則寫成表格形式,如表1所示。

Table 1 Rank of faulty statements表1 出錯語句排列等級

程序員可以按照上面次序尋找出錯語句,一般地,找到真實錯誤以后,就重新用測試集T測試,若仍有失敗用例,再按表1(或者式(6))尋找下一個錯誤語句,……,如此進行下去,直到用例全部通過為止。當然中途也可以更改測試用例(增添或修改)。

3 TBFL算法評價標準

假如某個TBFL算法已把程序語句出錯可能性排列成類似于表1的等級,它也可看作是語句出錯可能性的排序式(6)。設程序X真實錯誤語句為xi,xi,…,xi,定義三個評價標準:12s

D1=真實錯誤語句出現在表1中的等級之和,

D2=真實錯誤語句出現在表1中的次序(即xi1次序為1,…,xim次序為m)之和,

若有兩個TBFL算法,可以分別計算它們相應的D1、D2、D3之值,一般地,D1與D2越小越好,D3越大越好,D1、D2之值越小越好是明顯的,而D3越大表示該TBFL算法辨別能力較強,區分語句的精度較高,所以相應的算法就比較優越。

4 實例分析

為了和Dicing方法、TARANTULA方法、SAFL方法以及文獻[12]提出的方法(下面簡稱Wang方法)作比較,我們采用的實例和文獻[12]中的實例一致。

本文主要用文獻[12]中圖1(該圖來源于文獻[3])里給出的程序和測試用例。為了閱讀方便,把它復制于下,在本文中標記為圖3。

在下面的討論中,稱圖3中的程序為程序I,該程序的錯誤語句是x2(x2應為:m=z)和x7(x7應為:m=x)。

把程序I中的錯誤語句x2:“m=x”改為正確語句x2:“m=z”,其余語句保留不變,稱這個變體為程序II。程序II中有一個錯誤語句x7(m=y)。

Figure 3 A faulty program and relative test cases圖3 錯誤程序和相關測試用例集信息

將程序I的x2(m=x)改為x2(m=z),x11(else if(x>z))改為x11(else if(x<z)),其余語句不變,稱這樣的變體為程序III。

將程序I的錯誤語句x7(m=y)改為正確語句x7(m=x),其余語句不變,稱這個變體為程序IV。

顯然上述四個程序的真實錯誤語句不盡相同,但它們“樣式”完全相同,所以估計每個語句出錯的(先驗)可能性是一樣的,它們都是“客觀”存在的。現在不管是哪個程序,我們都用X={x1,x2,…,x13}這個程序變量表示它,并且它的先驗分布為:

這個先驗分布是文獻[12]中采用的,關于它的詳情,請參看該文獻。在理論上,上述四個程序語句出錯情況是這個隨機變量X的四個“具體實現”。

在下面的討論中,稱圖3中的全部八個用例(即Test suite1+Test suite2)組成的測試集為T,其中前四個用例(即Test suite1)組成的測試集為T*。沿用文獻[12]中的術語,T為冗余測試集,T*為無冗余測試集。粗略地說,在文獻[12]中,術語冗余指用例覆蓋的語句至少幾乎是完全相同的。詳情請見文獻[12]。

測試隨機變量T的先驗分布為:

測試隨機變量T*的先驗分布為:

這些分布都是文獻[12]采用的,詳情也請參看文獻[12]。

例1 用T、T*兩測試集測試程序I。

用T測試集測試程序I,結果是:Tp={t3,t4,t5,t6,t7,t8},Tf={t1,t2},其覆蓋語句情況可從圖3中看出。

利用公式(2)計算功效矩陣F中的諸元素tij,i=1,2,…,n;j=1,2,…,m。由它們組成的測試功效矩陣F如下(為了清楚起見,列用語句xi標出,中間的虛線是為了區分Test suite1和Test suite2畫的):

由F矩陣和T的分布(式(9)),利用公式(4)計算修正系數如下:

如果令P=(p1p2…pn)為T測試集概率分布向量,則修正系數向量b=(b1b2…bm)可以由下面矩陣乘法得出:

由式(12)計算出的修正系數向量和X的先驗分布(式(8)),利用公式(5)即fi=biri(i=1,2,…,m),可以求出程序X的(未標準化的)后驗概率如下(其中因子N=1/220):

最后,根據fi的值,按從大到小排序,并根據表1劃分成等級排列如表2第二行(上面標號為等級標號)。

Table 2 Rank of statements of program I under test suite T and under test suite T*表2 程序I分別在測試集T和在測試集T*下的出錯語句排序

用測試集T*測試程序I,T*測試結果即為前面的Test suite1的測試結果。因此T*測試功效矩陣F*即由公式(11)中前四行(虛線以上部分)組成。設T*的先驗分布向量為P*,由式(10)得到,于是由T*測試得到的修正系數向量b*,可由式(12)即b*=P*·F*計算,再由b*和X的先驗分布(式(8)),利用公式(5)得到程序X的(未標準化的)后驗概率如下(具體計算步驟省略):

按照上面的值,把語句出錯可能性從大到小排成等級,見表2第三行。

現將本文算法(下面簡稱為新算法)與文獻[12]中的算法(記為Wang方法)以及Dicing方法、TARANTULA方法、SAFL方法進行比較,除了本文算法以外,其余算法的資料都摘自于文獻[12]。

關于可能出錯語句的(等級)排序:

分析式(13)中數據,正如文獻[12]指出,無論測試集是否冗余,Wang方法除了在T測試時,把正確語句x10排在錯誤語句x7前,與T*測試時“正確排序”有些差異以外,就這個具體例子而言,Wang方法比前幾種方法都優。同樣,從式(13)中也可看出,本文算法和Wang方法的排序在T下幾乎一樣,在T*下是完全一致。現在我們在T測試下,用式(7)給出的標準比較一下這兩個算法(回憶x2、x7有錯):

Wang:D1=1+3=4,D2=1+3=4,D3=7;

新算法:D1=1+3=4,D2=1+3=4,D3=9。

雖然它們的D1和D2都相同,但是本文的算法比Wang方法精細,所以本文算法較優。

例2 用T*測試集測試程序II

程序變量X和測試集T*變量的先驗分布同前,分別由式(8)、式(10)表示。用測試集T*測試程序II時,每個用例覆蓋語句的情況和前例中一樣,沒有變化,但t2在前例中是失敗用例,在本例中是通過用例,其他用例的結果類型未變,即在本例中Tf={t1},Tp={t2,t3,t4}。

利用測試資料,可以構造T*測試功效矩陣,然后算出修正系數,從而得到X的后驗分布(中間過程省略)fi值,由fi值可把程序語句依出錯可能性從大到小排成等級,并與Wang方法對比,如表3所示。

Table 3 Rank of program II’s statements under test suite T*and comparison with Wang approach表3 程序II在測試集T*下語句排序及和Wang方法對比

由于排序完全一樣,所以它們的功能在這個具體例子中是一樣的。

例3 用測試集T*測試程序III

程序變量X和測試集變量T*的分布同前,分別由式(8)、式(10)表示。用T*測試程序III,結果類型為:Tf={t1,t2,t3},Tp={t4}。至于覆蓋語句方面,t1、t4覆蓋的語句和它們在例1中覆蓋的語句情況一樣,t2、t3覆蓋語句情況有所變動,t2覆蓋x1x2x3x8x9x11x12x13;t3覆蓋x1x2x3x8x9x11x13,因此測試集T*的功效矩陣需要重新計算。具體計算省略,同樣修改系數和后驗概率的計算過程也省略,按照后驗概率的值,把程序III中的語句按出錯可能性大小排成等級并與Wang方法比較,如表4所示。

Table 4 Rank of program III’s statements under test suite T*and comparison with Wang approach表4 程序III在測試集T*下語句排序及和Wang方法對比

根據文獻[12]的分析,程序III有嚴重的邏輯錯誤,它是由于語句x11的錯誤選擇導致的,具體表現在x2語句的設置上,即程序流程中有的路徑要求語句x2為“m=z”,有的路徑要求語句x2為“m=x”。因此,程序III的錯誤語句可以歸結為x2、x7、x11、x12。詳細分析請見文獻[12]。

現在評價在這個具有隱蔽邏輯錯誤的程序上兩個算法的功效:

因為x2是個“設置語句”,要求程序員有較高的編程技巧,但是一旦檢查出x2語句在設置上的“邏輯”困境,就可以發現是語句x11的設計問題以及連帶產生的語句x12的錯誤,所以實質上是要考察x2、x7。然而就這種考察而言兩個算法的功效幾乎一致,如果就x2、x7、x12的考察而言(因為考察了這3個語句,肯定就會發現x11有錯),則兩個算法在它們的“線性”次序上完全一致。

例4 用例全部通過的測試

仍然考慮程序I,它有兩個錯誤語句x2、x7,程序變量X的先驗分布由式(8)表示。

現在用測試集To={o1,o2,o3,o4}對程序I進行測試,其中用例的設計為:o1={10,13,15},o2={8,6,4},o3={5,9,2},o4={17,19,2}。To的先驗分布為均勻分布,即P1=P2=P3=P4=1/4,也就是說每個用例捕獲錯誤的可能性相同。

用To測試發現它們都是通過用例。它們覆蓋語句情況是:o1覆蓋6個語句(x1,x2,x3,x4,x5,x13);o2覆蓋7個語句(x1,x2,x3,x8,x9,x10,x13);o3覆蓋8個語句(x1,x2,x3,x8,x9,x11,x12,x13),o4覆蓋情況和o1相同。

利用上述數據可以計算To測試功效矩陣、修正系數和后驗概率,具體計算省略,根據后驗概率把語句排序結果與Wang方法的結果并列如表5。

Table 5 Rank of program I’s statements when test cases are passed and comparison with Wang approach表5 程序I在測試用例全部通過情況下出錯語句排序及和Wang方法比較

顯然,無論采用哪個標準(D1、D2還是D3),本文算法都比Wang方法好!一般來說,測試員只能報告軟件缺陷存在,卻不能報告軟件缺陷不存在。通常的測試在所有用例都通過時,對于軟件缺陷都“無話可說”。因此,文獻[12]的算法和本文的算法在這種情況下更有價值,特別是在這個例子里,本文算法竟然把x2x7排在最前面,更使人相信新算法的優越性。

例5 先驗概率未知情況

取程序I,但程序變量X的先驗分布未知,這時令X服從均勻分布,即rk=1/13,k=1,2,…,13。取測試集T*,但測試集變量T*的先驗概率未知,這時令T*服從均勻分布,即pj=1/4,j=1,2,3,4。用測試集T*測試程序I,結果與例1中的測試結果完全相同。所以,這里測試集T*的功效矩陣與例1中用T*測試的功效矩陣相同。但修改系數,進而后驗概率的數值不同,計算方法同前,省略。

茲將Wang方法和本文算法在這個例子中關于語句出錯可能性從大到小排序,如表6所示。

Table 6 Rank of statements under unkonwn prior probability and comparison with Wang approach表6 先驗概率未知情況下出錯語句排序及與Wang方法比較

這兩個算法功效基本上相同,但是都不怎么好。正如文獻[12]指出,隨機算法的精神是挖掘程序中和測試集中包含的固有信息,并把它們摻合進具體測試實施中,才能發揮更大的功效。本文算法和文獻[12]算法都是隨機算法,只是利用先驗知識這個豐富“資源“的方法不同罷了。所以,當這些先驗知識缺乏時,功效降低甚至喪失,也就不難理解了。然而把這里的結果和式(13)比較就可以發現,在“最壞”(即沒有挖掘出程序和測試集里的信息)的情況下,本文算法也和上述三個方法相當,而且僅就錯誤語句x2來說,本文算法重視程度較遜于TARANTULA方法,但比Dicing方法、SAFL方法的重視程度高。

例6 測試用例設計較好的情況

在前面的實例中,對程序I等的測試所用的測試集,無論是T、T*還是To都設計得不好。現在根據軟件測試經驗,應該設計用例集,使得它們執行時能覆蓋程序I(等程序)的每一條路徑。為此引入新的測試集:

其中,e1={6,7,9},即輸入x=6,y=7,z=9,e2={8,7,9},e3={10,7,9},e4={11,10,7},e5={9,10,7},e6={8,10,9}。因為程序I和它的變體都是求三個輸入整數中的中位數,而三個數按“小、中、大”不同方式排列共有六種排列,所以如上設計的測試用例集可以通過程序I等程序的每條路徑,它是比較好的用例設計。當然,對于現在討論的程序來說,設計好的測試集至少還應該包括輸入的三個數中有若干個相等的用例,以及比較大的整數用例,關于后者并不是本質問題,至于前者,由于前面的測試集T、T*都包含了這種用例。我們已經看到算法對這些用例的適應程度,所以為了說明問題,設計了T′。

下面用T′測試程序I、程序II和程序IV,無論用T′測試哪個程序,根據設計它的意圖來看,每個用例捕獲錯誤的可能性相同,即pi=P(ei)=1/6,i=1,2,…,6。注意T′的均勻分布是“客觀”的先驗分布,并不是由于“同等無知”得到的。

由于算法與上面一樣,因此計算過程省略不寫。只把在T′測試下,新算法和文獻[12]中算法對語句排序的結果對比列出,如表7~表9所示。

Table 7 Rank of program I’s statements under test suite T′and comparison with Wang approach表7 用T′測試程序I語句可能出錯排序及和Wang方法比較

兩個算法排序完全一致,且把有錯語句x2、x7排在前兩位,但新算法D3=9比Wang方法D3=7大,所以更精細。

Table 8 Rank of program II’s statements under test suite T′and comparison with Wang approach表8 用T′測試程序II語句可能出錯排序及和Wang方法比較

除了排在前兩位的x2、x7的次序不同外,其他次序完全一樣,就錯誤語句x7的排列而言,Wang方法好,就排列的精細而言,新算法為好。

Table 9 Rank of program IV’s statements under test suite T′and comparison with Wang approach表9用T′測試程序IV語句可能出錯排序及和Wang方法比較

兩個算法的排序完全一致且把錯誤語句x2排在第一位,但是新算法顯然比Wang方法精細。

5 結束語

就我們所知,文獻[12]為TBFL方法引入了一個新類型,其精神是用隨機理論考察軟件測試問題。本文對文獻[12]中的算法做了一點改進。正如引言里所說,主要是把程序X的先驗分布和測試集T的先驗分布從測試活動中分離出來,這種分離是有好處的。因為測試活動和它的結果都是“客觀”的,它是這種類型算法中的科學成分,而程序變量X和測試集變量T的先驗分布是“主觀”的,它是這種類型算法里的藝術成份。文獻[13]認為,在最嚴格的數學學科里,數學思維也包含這兩種成份。另外,文獻[14]用樸素模糊邏輯闡述了許多中醫問題,說明了定性推理的重要性以及它和邏輯(或說是定量)推理的關系。可以認為X和T的先驗分布這個藝術部分屬于定性推理,這一點可以從它們分別是從分析程序“樣式”和設計用例的“意圖”得到的看出。現在我們的算法把文獻[12]算法中包含的科學(邏輯)成份和藝術(定性)成份分離,就可以讓測試結果交給不同的人處理,不同的人可以根據他們的經驗對這些客觀資料作創造性處理。如果若干個測試員或程序員平行處理這些測試結果,就可能會得到不同的排序情況,綜合他們的結論,對修正較大較重要的軟件缺陷是有益的。這和許多醫學專家會診一個疑難病癥,對醫療是有幫助的一樣。

本文提出的算法只是對文獻[12]引入的隨機TBFL方法的一種改進,今后,我們將努力開發新的隨機TBFL方法,并將其應用到實際的測試活動中去。

致謝:衷心感謝徐寶文教授、邢漢承教授、周毓明教授對本文工作的支持。審稿人對本文提出了有價值的修改意見,在此表示衷心感謝!

[1] Agrawal H,Horgan J,London S,et al.Fault localization using execution slices and dataflow tests[C]∥Proc of the 6th International Symposium on Software Reliability Engineering,1995:143-151.

[2] Cleve H,Zeller A.Locating causes of program failures[C]∥Proc of the 27th International Conference on Software Engineering,2005:342-351.

[3] Hao D,Zhang L,Pan Y,et al.On similarity-awareness in testing-based fault localization[J].Automated Software Engineering,2008,15(2):207-249.

[4] Kyriazis A,Mathioudakis K.Enhance of fault localization using probabilistic fusion with gas path analysis algorithms[J].Journal of Engineering for Gas Turbines and Power,2009,131(5):51601-51609.

[5] Jones J A,Harrold M J,Stasko J.Visualization of test information to assist fault localization[C]∥Proc of the 24th International Conference on Software Engineering,2002:467-477.

[6] Jones J A,Harrold M J.Empirical evaluation of the tarantula automatic fault-localization technique[C]∥Proc of the 20th IEEE/ACM International Conference on Automated Software Engineering,2005:273-282.

[7] Liblit B,Naik M,Zheng A X,et al.Scalable statistical bug isolation[C]∥Proc of the ACM SIGPLAN Conference on Programming Language Design and Implementation(PLDI),2005:15-16.

[8] Schach S R.Object-oriented classical software engineering[M].Beijing:China Machine Press,2007.

[9] Liu C,Yan X,Fei L,et al.SOBER:Statistical model-based bug localization[C]∥Proc of the 13th ACM SIGSOFT Symposium on Foundations of Software Engineering,2005:286-295.

[10] Renieris M,Reiss S P.Fault localization with nearest neighbor queries[C]∥Proc of the 18th International Conference on Automated Software Engineering,2003:30-39.

[11] Zeller A.Isolating cause-effect chains from computer programs[C]∥Proc of the 10th ACM SIGFOFT Symposium on Foundations of Software Engineering,2002:1-10.

[12] Wang Zhen-zhen,Xu Bao-wen,Zhou Yu-ming,et al.New random testing-based fault localization approach[J].Computer Science,2013,40(1):5-14.(in Chinese)

[13] Wang Jian-wu.Introduction to mathematical thinking method[M].Hefei:Anhui Education Press,1996.(in Chinese)[14] Wang Zhen-zhen.Construction of knowledge database of na?ve fuzzy description logic and na?ve reasoning[J].Applied Science and Technology,2012,39(6):18-29.(in Chinese)

附中文參考文獻:

[12] 王蓁蓁,徐寶文,周毓明,等.一種隨機TBFL方法[J].計算機科學,2013,40(1):5-14.

[13] 王健吾.數學思維方法引論[M].第1版.合肥:安徽教育出版社,1996.

[14] 王蓁蓁.樸素模糊描述邏輯知識庫構造及其樸素推理[J].應用科技,2012,39(6):18-29.

猜你喜歡
程序方法
學習方法
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 视频一本大道香蕉久在线播放| www.youjizz.com久久| 中文毛片无遮挡播放免费| 国产人成乱码视频免费观看| 欧美色视频日本| 国产v精品成人免费视频71pao| 日韩中文精品亚洲第三区| 亚洲综合婷婷激情| 欧美日韩va| 免费在线a视频| 99精品影院| 精品视频一区在线观看| 激情无码视频在线看| 日韩欧美色综合| 丁香六月激情婷婷| 亚洲人成日本在线观看| 免费看黄片一区二区三区| 中文字幕人成乱码熟女免费| 多人乱p欧美在线观看| av尤物免费在线观看| 999福利激情视频 | 亚洲高清中文字幕在线看不卡| 日韩美毛片| 亚洲国产精品美女| 国产av剧情无码精品色午夜| 亚洲色图欧美一区| 国产午夜一级毛片| 无码日韩精品91超碰| 久久无码高潮喷水| www.日韩三级| 国产第八页| 亚洲开心婷婷中文字幕| 夜夜操狠狠操| 天天干天天色综合网| 欧美福利在线观看| 在线精品自拍| 欧美日韩一区二区在线免费观看| 国产精品无码翘臀在线看纯欲| 国产一级精品毛片基地| 强奷白丝美女在线观看| 亚洲乱码精品久久久久..| 国产精品久久久免费视频| 在线观看国产黄色| 久久国产精品影院| 日本爱爱精品一区二区| 国产午夜小视频| 一级片一区| 国产毛片片精品天天看视频| 日本亚洲国产一区二区三区| 中文国产成人久久精品小说| 亚洲欧美成人在线视频| 色综合a怡红院怡红院首页| 男人的天堂久久精品激情| 手机永久AV在线播放| 国产人在线成免费视频| 国产精品视频999| 国产亚洲美日韩AV中文字幕无码成人| 午夜视频在线观看免费网站| 99久久亚洲综合精品TS| 亚洲swag精品自拍一区| 国产精品流白浆在线观看| 色婷婷狠狠干| 一级黄色网站在线免费看| 欧美日韩中文国产va另类| 老司机精品久久| 乱人伦视频中文字幕在线| 日韩不卡高清视频| 日本午夜网站| 性视频一区| 久久综合伊人77777| 亚洲国产精品人久久电影| 四虎永久免费地址| 久久成人18免费| 中文字幕久久亚洲一区| 伊人久久青草青青综合| 久久青草热| 一级毛片免费高清视频| 69av免费视频| 一级片一区| 婷婷综合在线观看丁香| 中国黄色一级视频| 免费国产福利|