亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于謂詞執(zhí)行信息分析的自適應(yīng)軟件缺陷定位方法

文檔序號(hào):6359500閱讀:276來源:國(guó)知局
專利名稱:一種基于謂詞執(zhí)行信息分析的自適應(yīng)軟件缺陷定位方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種加入特征選擇的軟件動(dòng)態(tài)缺陷定位方法,特別是涉及一種基于謂詞執(zhí)行信息分析的自適應(yīng)軟件缺陷定位方法。它是一種能夠根據(jù)程序中謂詞實(shí)際執(zhí)行情況自動(dòng)選擇所需謂詞執(zhí)行信息量的軟件缺陷定位方法。該方法屬于軟件測(cè)試技術(shù)領(lǐng)域。
背景技術(shù)
建立高可靠、零缺陷的軟件生產(chǎn)線,一直是軟件工業(yè)界和軟件工程學(xué)術(shù)研究機(jī)構(gòu)多年以來鍥而不舍的追求目標(biāo)。尤其是進(jìn)入20世紀(jì)90年代后,國(guó)外對(duì)軟件缺陷定位、軟件排錯(cuò)等自動(dòng)化調(diào)試技術(shù)研究的投入明顯加大,從不同角度對(duì)軟件缺陷定位等核心技術(shù)展開了深入研究,并陸續(xù)發(fā)表了一些研究成果,研制了一批新型的軟件調(diào)試和缺陷定位原型系統(tǒng)?,F(xiàn)有軟件缺陷定位方法(在本專利申請(qǐng)中,“方法”一詞與“算法”一詞可以互換)可分為五種(I)萊爾等人在“利用程序切片自動(dòng)定位程序故障”一文中提出的基于程序執(zhí)行切片的方法(詳見1987年《第二屆計(jì)算機(jī)與應(yīng)用國(guó)際會(huì)議》)。該方法通過構(gòu)造并對(duì)比程序成功和失敗運(yùn)行時(shí)的程序切片,來最大程度縮小需要檢查的范圍。這種方法適用于代碼規(guī)模不大、分支較少的情況;(2)瓊斯等人在“一種利用可視化信息的缺陷定位方法”一文中提出的基于可執(zhí)行語句的方法(詳見2002年《第二十四屆軟件工程國(guó)際會(huì)議》)。該方法收集程序在每個(gè)測(cè)試用例下的程序可執(zhí)行語句的執(zhí)行信息,并利用該執(zhí)行信息計(jì)算可執(zhí)行語句包含缺陷的可能性,以此來定位缺陷可能存在的位置。這種方法適用于測(cè)試用例容易獲得、程序運(yùn)行時(shí)間較短的情況;(3)里布里特等人在“一種可擴(kuò)展的基于統(tǒng)計(jì)學(xué)的故障隔離方法”一文中提出的基于謂詞的方法(詳見2005年《美國(guó)計(jì)算機(jī)學(xué)會(huì)〈編程語言的設(shè)計(jì)和實(shí)現(xiàn) > 會(huì)議》)。該方法通過對(duì)謂詞(謂詞是指程序中的條件判斷,例如if,for,while等條件。謂詞所在語句控制著程序中控制流的走向,對(duì)于程序能否正確執(zhí)行起著主導(dǎo)作用)進(jìn)行插樁而獲得謂詞的執(zhí)行信息,利用相關(guān)評(píng)價(jià)體系計(jì)算這些謂詞包含缺陷的可疑度,按照可疑度對(duì)謂詞進(jìn)行排序,并以最終排序作為定位缺陷位置的依據(jù);(4)希爾德布蘭德等人在“簡(jiǎn)化和隔離故障”一文中提出的基于程序模型(或狀態(tài))的方法(詳見2002年美國(guó)電氣電子工程師學(xué)會(huì)《軟件工程》雜志第28卷第2期)。該類方法對(duì)失敗執(zhí)行過程中某些變量在一些特殊節(jié)點(diǎn)處的值進(jìn)行記錄,構(gòu)建變量值的狀態(tài)轉(zhuǎn)換圖,通過修改其中某些變量值的方法來定位缺陷可能存在的位置;(5)白里安等人在“使用機(jī)器學(xué)習(xí)來支持Tarantula調(diào)試”一文中提出的基于機(jī)器學(xué)習(xí)的方法(詳見2007年《第十八屆美國(guó)電氣電子工程師學(xué)會(huì)軟件可靠性國(guó)際研討會(huì)》)。該類方法通過引入機(jī)器學(xué)習(xí)相關(guān)理論,以語句覆蓋率等信息作為輸入數(shù)據(jù),試圖通過學(xué)習(xí)或演繹推測(cè)出缺陷可能存在的位置?;谥^詞的方法要求插樁復(fù)雜度低(程序插樁在軟件測(cè)試中有廣泛的應(yīng)用,它通過向被測(cè)程序中插入新的操作語句以實(shí)現(xiàn)測(cè)試),處理數(shù)據(jù)少,定位效果好,現(xiàn)已成為研究熱點(diǎn)。但目前已有的一些算法均存在對(duì)謂詞執(zhí)行信息利用不足或過分利用的情況,無法取得較好的定位效果。為了避免出現(xiàn)上述問題,要求新方法能夠適應(yīng)程序中謂詞的實(shí)際執(zhí)行情況。因此有必要先對(duì)謂詞的執(zhí)行信息進(jìn)行預(yù)處理,以便確定算法對(duì)謂詞執(zhí)行信息的利用程度,使缺陷定位算法能夠充分利用謂詞的執(zhí)行信息獲得較好的定位效果,本發(fā)明正是基于這種考


發(fā)明內(nèi)容
本發(fā)明一種基于謂詞執(zhí)行信息分析的自適應(yīng)軟件缺陷定位方法,其目的是克服現(xiàn)有方法中無法有效利用謂詞執(zhí)行信息的缺點(diǎn),提供一種能夠自適應(yīng)謂詞實(shí)際執(zhí)行情況的動(dòng)態(tài)缺陷定位方法。本發(fā)明一種基于謂詞執(zhí)行信息分析的自適應(yīng)軟件缺陷定位方法,其設(shè)計(jì)思想是對(duì)于樁點(diǎn)處的謂詞P,運(yùn)行待測(cè)程序的所有測(cè)試用例。對(duì)謂詞P的執(zhí)行信息進(jìn)行預(yù)處理(謂詞執(zhí)行信息是指在程序一次運(yùn)行中,謂詞的執(zhí)行次數(shù)以及每次的判斷結(jié)果),具體為統(tǒng)計(jì)謂詞P在程序運(yùn)行失敗時(shí)的執(zhí)行次數(shù),確定出現(xiàn)頻率最高的前N個(gè)(2 < N< 64取整數(shù))執(zhí)行次數(shù)。根據(jù)該信息帶入對(duì)應(yīng)的步驟計(jì)算謂詞P的缺陷關(guān)聯(lián)度,最后按照缺陷關(guān)聯(lián)度由大到小對(duì)程序中的所有謂詞進(jìn)行排序。P的缺陷關(guān)聯(lián)度越大,則認(rèn)為P以及與P有數(shù)據(jù)或控制關(guān)聯(lián)的程序代碼含有缺陷的概率越大,從而實(shí)現(xiàn)有效利用謂詞的執(zhí)行信息對(duì)缺陷進(jìn)行定位的目的。整個(gè)算法的基本思路如圖I所示。本發(fā)明一種基于謂詞執(zhí)行信息分析的自適應(yīng)軟件缺陷定位方法,該方法具體步驟如下步驟一對(duì)含缺陷的程序插樁。對(duì)程序中的分支和返回值if、while、for以及return語句中的謂詞進(jìn)行插樁,樁函數(shù)要求在程序運(yùn)行時(shí)輸出相應(yīng)的謂詞執(zhí)行信息。步驟二 加載程序的全部測(cè)試用例,運(yùn)行插有樁函數(shù)的待測(cè)程序。步驟三分別收集程序運(yùn)行成功和運(yùn)行失敗時(shí)樁函數(shù)的輸出信息。由于插樁程序設(shè)計(jì)的不同,樁函數(shù)輸出的謂詞執(zhí)行信息可分為兩類,分別如圖2和圖3所示。步驟四對(duì)每個(gè)謂詞在所有失敗測(cè)試用例下的執(zhí)行信息進(jìn)行預(yù)處理,該步驟分為三小步(一)利用樁函數(shù)的第二種類型輸出信息(如圖3所示),統(tǒng)計(jì)程序運(yùn)行失敗時(shí)的
(PlPn\
,-Λ-, /-Λ-,
ah ah an au aI5 aL ■■■ aL aL aL aL a\i 心錯(cuò)誤矩陣八尸;’··;,其中表示第k個(gè)
< <2 B <4 <5 < …C <2 <3 <4<6
a I
VJIJ
(I ^ m,m表示失敗測(cè)試用例總數(shù))失敗測(cè)試用例下,插樁謂詞i (I < i < n,n表示插樁謂詞總數(shù))輸出的第二種類型信息中的第j個(gè)(I < j < 6,j取整數(shù))數(shù)。( 二)在錯(cuò)誤矩陣A1中統(tǒng)計(jì)單個(gè)謂詞的執(zhí)行次數(shù)以及執(zhí)行次數(shù)出現(xiàn)頻率(在本專利中,頻率是指出現(xiàn)的次數(shù)),將執(zhí)行次數(shù)和相應(yīng)的執(zhí)行次數(shù)出現(xiàn)頻率按謂詞編號(hào)存儲(chǔ)在矩陣
權(quán)利要求
1.一種基于謂詞執(zhí)行信息分析的自適應(yīng)軟件缺陷定位方法,其特征在于該方法具體步驟如下 步驟一對(duì)含缺陷的程序插樁;對(duì)程序中的分支和返回值if、while、for以及return語句中的謂詞進(jìn)行插樁,樁函數(shù)要求在程序運(yùn)行時(shí)輸出相應(yīng)的謂詞執(zhí)行信息; 步驟二 加載程序的全部測(cè)試用例,運(yùn)行插有樁函數(shù)的待測(cè)程序;步驟三分別收集程序運(yùn)行成功和運(yùn)行失敗時(shí)樁函數(shù)的輸出信息;由于插樁程序設(shè)計(jì)的不同,樁函數(shù)輸出的謂詞執(zhí)行信息可分為兩類,一種是謂詞的編號(hào),謂詞在程序運(yùn)行時(shí)的執(zhí)行狀態(tài);另一種是用每6個(gè)數(shù)表示一個(gè)謂詞,其中第一個(gè)數(shù)表示該謂詞判斷為“真”的次數(shù),第二個(gè)數(shù)表示該謂詞判斷為“假”的次數(shù),第三個(gè)數(shù)表示該謂詞被執(zhí)行到的次數(shù);步驟四對(duì)每個(gè)謂詞在所有失敗測(cè)試用例下的執(zhí)行信息進(jìn)行預(yù)處理,該步驟分為三小 (一)利用樁函數(shù)的第二種類型輸出信息,統(tǒng)計(jì)程序運(yùn)行失敗時(shí)的錯(cuò)誤矩陣
全文摘要
一種基于謂詞執(zhí)行信息分析的自適應(yīng)軟件缺陷定位方法,它有七大步驟(1)對(duì)含缺陷的程序插樁;(2)加載程序的測(cè)試用例,運(yùn)行插有樁函數(shù)的程序;(3)分別收集程序運(yùn)行成功時(shí)和運(yùn)行失敗時(shí),樁函數(shù)的輸出信息;(4)對(duì)每個(gè)謂詞在所有失敗測(cè)試用例下的執(zhí)行信息進(jìn)行預(yù)處理;(5)計(jì)算謂詞P的缺陷關(guān)聯(lián)度;(6)重復(fù)第五步,計(jì)算所有謂詞缺陷關(guān)聯(lián)度,并按照從高到低將所有謂詞進(jìn)行排序;(7)根據(jù)第六步中的排序結(jié)果,對(duì)謂詞依序進(jìn)行查找,直到找到缺陷為止。本發(fā)明原理簡(jiǎn)單,容易實(shí)現(xiàn),能有效解決現(xiàn)有基于謂詞軟件動(dòng)態(tài)缺陷定位方法無法有效利用謂詞執(zhí)行信息的問題,從而克服了傳統(tǒng)方法的局限性,提高了定位效率。
文檔編號(hào)G06F11/36GK102622295SQ20121003795
公開日2012年8月1日 申請(qǐng)日期2012年2月17日 優(yōu)先權(quán)日2012年2月17日
發(fā)明者宮成, 李偉, 蔡開元, 鄭征, 郝鵬 申請(qǐng)人:北京航空航天大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1