專利名稱:基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)程序分析領(lǐng)域。
背景技術(shù):
隨著計(jì)算機(jī)軟件被廣泛應(yīng)用于經(jīng)濟(jì)、軍事、商業(yè)等各個(gè)領(lǐng)域中,其可靠性問題日益得到人們的廣泛重視。然而隨著軟件系統(tǒng)越來越復(fù)雜,軟件經(jīng)常不像人們預(yù)期的那樣運(yùn)行,換句話說,軟件不總是可靠地運(yùn)行,對(duì)計(jì)算機(jī)應(yīng)用系統(tǒng)帶來不利影響,甚至造成巨大的經(jīng)濟(jì)損失和災(zāi)難性的后果。因此,保證軟件的高質(zhì)量、高可靠性已成為系統(tǒng)開發(fā)和維護(hù)工作的一個(gè)不可或缺的重要方面。
導(dǎo)致軟件不可靠的一個(gè)主要原因是程序源代碼中的錯(cuò)誤。程序設(shè)計(jì)是一項(xiàng)復(fù)雜的活動(dòng),很難推導(dǎo)程序中所有可能的執(zhí)行路徑,以及預(yù)見可能影響程序或被程序影響的環(huán)境因素。即使程序看起來正確執(zhí)行,仍然可能存在極少情況下或特定條件滿足時(shí)的錯(cuò)誤。因此軟件錯(cuò)誤是目前亟需解決的一個(gè)問題。
軟件測(cè)試和調(diào)試是軟件開發(fā)過程中的重要階段,它們協(xié)同工作可以有效識(shí)別并消除軟件錯(cuò)誤:測(cè)試用于暴露軟件錯(cuò)誤,調(diào)試用于消除這些軟件錯(cuò)誤。然而軟件調(diào)試過程中消除軟件錯(cuò)誤的速度往往跟不上軟件測(cè)試過程中發(fā)現(xiàn)軟件錯(cuò)誤的速度。目前已有很多自動(dòng)化軟件測(cè)試工具,然而,軟件調(diào)試卻大多采用人工分析的方法,這是一項(xiàng)很困難并且耗時(shí)的任務(wù),因?yàn)?(1)首先要定位軟件中的錯(cuò)誤。在某些情況下,當(dāng)開發(fā)人員在程序執(zhí)行過程中發(fā)現(xiàn)軟件錯(cuò)誤時(shí),可能已經(jīng)離錯(cuò)誤點(diǎn)很遠(yuǎn)了,需要花費(fèi)大量的時(shí)間和精力來查找引起錯(cuò)誤產(chǎn)生的程序代碼。(2)其次要理解軟件錯(cuò)誤。定位軟件錯(cuò)誤僅僅是軟件調(diào)試第一步,接下來必須通過適當(dāng)?shù)匦薷某绦蛟创a來消除語句中的錯(cuò)誤。在有些情況下,如何適當(dāng)?shù)匦薷恼Z句不是很明顯,需要開發(fā)人員人工分析調(diào)試環(huán)境來理解為什么某個(gè)語句是錯(cuò)誤的,然后,尋找一種方法來修改代碼中的錯(cuò)誤,并且避免在修改過程中引入新的錯(cuò)誤。
如果能實(shí)現(xiàn)軟件自動(dòng)化調(diào)試,即由計(jì)算機(jī)自動(dòng)找到程序代碼中的錯(cuò)誤位置、分析錯(cuò)誤原因、進(jìn)而自動(dòng)糾正錯(cuò)誤,則可以更有效地確保軟件可靠性。軟件錯(cuò)誤自動(dòng)定位通過計(jì)算機(jī)來分析程序源代碼或運(yùn)行過程中產(chǎn)生的運(yùn)行時(shí)狀態(tài),計(jì)算并分析程序中的異常情況,并將其獨(dú)立出來作為可疑代碼。將與軟件錯(cuò)誤無關(guān)的代碼自動(dòng)過濾掉,僅保留需要進(jìn)一步調(diào)試的相關(guān)代碼,可以縮小錯(cuò)誤代碼搜索的范圍,來輔助開發(fā)人員更快地識(shí)別錯(cuò)誤語句,有效提高調(diào)試的效率。因此,本發(fā)明目旨在針對(duì)軟件可靠性實(shí)際應(yīng)用背景和需求,研究軟件錯(cuò)誤自動(dòng)定位,為軟件調(diào)試和軟件錯(cuò)誤修正奠定理論基礎(chǔ),提高軟件質(zhì)量、確保軟件高可靠性、提高軟件的可理解和可維護(hù)性。發(fā)明內(nèi)容
本發(fā)明是要解決傳統(tǒng)的軟件錯(cuò)誤定位方法定位精度低的問題,而提供了基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法。
基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法包括以下步驟:
步驟1:分別執(zhí)行正確測(cè)試用例和錯(cuò)誤測(cè)試用例,并分別對(duì)正確測(cè)試用例和錯(cuò)誤測(cè)試用例建立聯(lián)合依賴概率模型;
步驟2:在步驟I的基礎(chǔ)上,根據(jù)聯(lián)合依賴概率模型,計(jì)算每個(gè)節(jié)點(diǎn)的可疑度;
步驟3:將錯(cuò)誤定位信息按可疑度進(jìn)行降序排列,可疑度高的節(jié)點(diǎn)認(rèn)定為更有可能出錯(cuò)的節(jié)點(diǎn),即完成了對(duì)基于聯(lián)合依賴概率建模的軟件的錯(cuò)誤進(jìn)行定位。
發(fā)明效果:
本發(fā)明的基本思想是:節(jié)點(diǎn)的聯(lián)合依賴可以很好的表示在不同執(zhí)行狀態(tài)下節(jié)點(diǎn)與其父節(jié)點(diǎn)之間的數(shù)據(jù)依賴關(guān)系,有助于進(jìn)行錯(cuò)誤定位。如果某個(gè)節(jié)點(diǎn)的聯(lián)合依賴關(guān)系在錯(cuò)誤測(cè)試用例執(zhí)行過程中出現(xiàn)的頻率較高,而在正確測(cè)試用例執(zhí)行過程中出現(xiàn)的頻率較低或沒有出現(xiàn),則該節(jié)點(diǎn)的聯(lián)合依賴關(guān)系很可能是錯(cuò)誤的。根據(jù)這一思想計(jì)算各語句的聯(lián)合依賴關(guān)系的可疑度,進(jìn)而有效定位軟件錯(cuò)誤。
本發(fā)明的基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法,能夠有效定位與數(shù)據(jù)依賴相關(guān)的軟件錯(cuò)誤。與錯(cuò)誤定位方法SB1、SOBER、Tarantula相比,定位精度可提高15%以上,適用于大規(guī)模程序代碼的錯(cuò)誤定位技術(shù)領(lǐng)域。
圖1是本發(fā)明的方法的流程示意圖2是具體實(shí)施方式
一建立聯(lián)合依賴概率模型示意圖3是具體實(shí)施方式
一程序控制流圖和數(shù)據(jù)依賴圖實(shí)例示意圖4是具體實(shí)施方式
一程序控制依賴路徑和數(shù)據(jù)依賴路徑實(shí)例示意圖。
具體實(shí)施方式
具體實(shí)施方式
一:結(jié)合圖1 圖4說明本實(shí)施方式:本實(shí)施方式的基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法包括以下步驟:
步驟1:分別執(zhí)行正確測(cè)試用例和錯(cuò)誤測(cè)試用例,并分別對(duì)正確測(cè)試用例和錯(cuò)誤測(cè)試用例建立聯(lián)合依賴概率模型;
步驟2:在步驟I的基礎(chǔ)上,根據(jù)聯(lián)合依賴概率模型,計(jì)算每個(gè)節(jié)點(diǎn)的可疑度;
步驟3:將錯(cuò)誤定位信息按可疑度進(jìn)行降序排列,可疑度高的節(jié)點(diǎn)認(rèn)定為更有可能出錯(cuò)的節(jié)點(diǎn),即完成了對(duì)基于聯(lián)合依賴概率建模的軟件的錯(cuò)誤進(jìn)行定位。
本實(shí)施方式中,圖3左側(cè)上部分為程序void distance O,左側(cè)下部分為此程序所對(duì)應(yīng)的數(shù)據(jù)依賴圖,右側(cè)為此程序所對(duì)應(yīng)的控制流圖4左側(cè)為運(yùn)行的測(cè)試用例,中間部分為執(zhí)行測(cè)試用例時(shí)所獲得的控制依賴路徑,右側(cè)部分為執(zhí)行測(cè)試用例時(shí)所獲得的數(shù)據(jù)依賴路徑;例如,對(duì)于控制依賴路徑中的5 (true),表示節(jié)點(diǎn)5被執(zhí)行,且被執(zhí)行時(shí)的狀態(tài)為true ;對(duì)于數(shù)據(jù)依賴路徑中的5 (true,[dl (i),d2 (η)]),表示節(jié)點(diǎn)5被執(zhí)行時(shí),執(zhí)行狀態(tài)為true,數(shù)據(jù)依賴于節(jié)點(diǎn)I和節(jié)點(diǎn)2,且數(shù)據(jù)依賴變量分別為i和η ;
本實(shí)施方式步驟E中例如n(5(true, [dl (i), d2 (η)]))表示在數(shù)據(jù)依賴路徑中5 (true, [dl (i), d2 (η)])出現(xiàn)的次數(shù),η(5 (true))表示節(jié)點(diǎn)5的狀態(tài)為true出現(xiàn)的總次數(shù)。
本實(shí)施方式效果:
本實(shí)施方式的基本思想是:節(jié)點(diǎn)的聯(lián)合依賴可以很好的表示在不同執(zhí)行狀態(tài)下節(jié)點(diǎn)與其父節(jié)點(diǎn)之間的數(shù)據(jù)依賴關(guān)系,有助于進(jìn)行錯(cuò)誤定位。如果某個(gè)節(jié)點(diǎn)的聯(lián)合依賴關(guān)系在錯(cuò)誤測(cè)試用例執(zhí)行過程中出現(xiàn)的頻率較高,而在正確測(cè)試用例執(zhí)行過程中出現(xiàn)的頻率較低或沒有出現(xiàn),則該節(jié)點(diǎn)的聯(lián)合依賴關(guān)系很可能是錯(cuò)誤的。根據(jù)這一思想計(jì)算各語句的聯(lián)合依賴關(guān)系的可疑度,進(jìn)而有效定位軟件錯(cuò)誤。
本實(shí)施方式的基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法,能夠有效定位與數(shù)據(jù)依賴相關(guān)的軟件錯(cuò)誤。與錯(cuò)誤定位方法SB1、SOBER、Tarantula相比,定位精度可提高15%以上,適用于大規(guī)模程序代碼的錯(cuò)誤定位技術(shù)領(lǐng)域。
具體實(shí)施方式
二:本實(shí)施方式與具體實(shí)施方式
一不同的是:所述建立聯(lián)合依賴概率模型的方法具體為:
A、首先為程序建立控制流圖,然后記錄語句間的控制依賴關(guān)系;
B、再為程序建立數(shù)據(jù)依賴圖,然后分別記錄語句間的數(shù)據(jù)依賴關(guān)系;
C、然后通過運(yùn)行測(cè)試用例,插裝捕獲節(jié)點(diǎn)的控制依賴路徑和數(shù)據(jù)依賴路徑;
D、根據(jù)控制流圖和節(jié)點(diǎn)的控制依賴路徑,計(jì)算每個(gè)節(jié)點(diǎn)的狀態(tài)依賴概率;
其中,所述每個(gè)節(jié)點(diǎn)被執(zhí)行的概率記為P (node),對(duì)于分支節(jié)點(diǎn)在被執(zhí)行概率的基礎(chǔ)上記錄狀態(tài)為true和false的概率,記為P (node (true))和P (node (false));
所述每個(gè)節(jié)點(diǎn),根據(jù)下式計(jì)算節(jié)點(diǎn)node被執(zhí)行的概率P (node):
權(quán)利要求
1.基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法,其特征在于基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法包括以下步驟: 步驟1:分別執(zhí)行正確測(cè)試用例和錯(cuò)誤測(cè)試用例,并分別對(duì)正確測(cè)試用例和錯(cuò)誤測(cè)試用例建立聯(lián)合依賴概率模型; 步驟2:在步驟I的基礎(chǔ)上,根據(jù)聯(lián)合依賴概率模型,計(jì)算每個(gè)節(jié)點(diǎn)的可疑度; 步驟3:將錯(cuò)誤定位信息按可疑度進(jìn)行降序排列,可疑度高的節(jié)點(diǎn)認(rèn)定為更有可能出錯(cuò)的節(jié)點(diǎn),即完成了對(duì)基于聯(lián)合依賴概率建模的軟件的錯(cuò)誤進(jìn)行定位。
2.根據(jù)權(quán)利要求1所述的基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法,其特征在于所述建立聯(lián)合依賴概率模型的方法具體為: A、首先為程序建立控制流圖,然后記錄語句間的控制依賴關(guān)系; B、再為程序建立數(shù)據(jù)依賴圖,然后分別記錄語句間的數(shù)據(jù)依賴關(guān)系; C、然后通過運(yùn)行測(cè)試用例,插裝捕獲節(jié)點(diǎn)的控制依賴路徑和數(shù)據(jù)依賴路徑; D、根據(jù)控制流圖和節(jié)點(diǎn)的控制依賴路徑,計(jì)算每個(gè)節(jié)點(diǎn)的狀態(tài)依賴概率; 其中,所述每個(gè)節(jié)點(diǎn)被執(zhí)行的概率記為P (node),對(duì)于分支節(jié)點(diǎn)在被執(zhí)行概率的基礎(chǔ)上記錄狀態(tài)為 true 和 false 的概率,記為 P (node (true))和 P (node (false)); 所述每個(gè)節(jié)點(diǎn),根據(jù)下式計(jì)算節(jié)點(diǎn)node被執(zhí)行的概率P (node):
3.根據(jù)權(quán)利要求2所述的基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法,其特征在于所述計(jì)算每個(gè)節(jié)點(diǎn)被執(zhí)行狀態(tài)的可疑度的方法,具體為: 計(jì)算每個(gè)節(jié)點(diǎn)的聯(lián)合依賴關(guān)系的可疑度suspicious_score:
4.根據(jù)權(quán)利要求3所述的基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法,其特征在于所述節(jié)點(diǎn)對(duì)應(yīng)于程序中的每條語句。
5.根據(jù)權(quán)利要求4所述的基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法,其特征在于所述分支節(jié)點(diǎn)為對(duì)應(yīng)于 程序中的選擇和循環(huán)語句。
全文摘要
基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法,本發(fā)明涉及計(jì)算機(jī)程序分析領(lǐng)域。本發(fā)明是要解決傳統(tǒng)的軟件錯(cuò)誤定位方法定位精度低的問題,而提供了基于聯(lián)合依賴概率建模的軟件錯(cuò)誤定位方法。步驟1分別執(zhí)行正確測(cè)試用例和錯(cuò)誤測(cè)試用例,并分別對(duì)正確測(cè)試用例和錯(cuò)誤測(cè)試用例建立聯(lián)合依賴概率模型;步驟2在步驟1的基礎(chǔ)上,根據(jù)聯(lián)合依賴概率模型,計(jì)算每個(gè)節(jié)點(diǎn)的可疑度;步驟3將錯(cuò)誤定位信息按可疑度進(jìn)行降序排列,可疑度高的節(jié)點(diǎn)認(rèn)定為更有可能出錯(cuò)的節(jié)點(diǎn),即完成了對(duì)基于聯(lián)合依賴概率建模的軟件的錯(cuò)誤進(jìn)行定位。本發(fā)明應(yīng)用于計(jì)算機(jī)程序分析領(lǐng)域。
文檔編號(hào)G06F11/36GK103198016SQ20131009999
公開日2013年7月10日 申請(qǐng)日期2013年3月26日 優(yōu)先權(quán)日2013年3月26日
發(fā)明者蘇小紅, 龔丹丹, 馬培軍, 王甜甜, 趙玲玲, 王煜 申請(qǐng)人:哈爾濱工業(yè)大學(xué)