基於狀態依賴概率建模的軟體錯誤定位方法
2023-09-18 15:58:20
專利名稱:基於狀態依賴概率建模的軟體錯誤定位方法
技術領域:
本發明涉及電腦程式分析領域。
背景技術:
傳統的軟體錯誤定位方法大多採用設置斷點等人工分析的方法,人工定位錯誤不僅難度大,而且極其耗時。要準確定位軟體中的錯誤是極其困難的。當開發人員在程序執行過程中發現軟體錯誤時,一方面,要麼錯誤的症狀與導致錯誤的根源(程序代碼)可能相距甚遠,要麼很難產生完全一樣的輸入條件,使得「錯誤的現場」難以恢復,要麼錯誤時隱時現,甚至可能在另一個錯誤被修正後暫時消失,導致某些錯誤難以被及時捕捉,而另一方面,在一個大型軟體中一個錯誤的測試用例所覆蓋的語句數量又往往是非常龐大的,這就使得程序開發人員需要花費大量的時間和精力來查找和定位產生錯誤的程序代碼。軟體錯誤自動定位的目的就是通過計算機分析程序原始碼或程序運行過程中產生的運行時狀態,檢測程序中的異常情況,並將其獨立出來作為需要進一步調試的可疑代碼,從而將與軟體錯誤定位無關的代碼自動過濾掉,縮小錯誤代碼的搜索範圍,輔助開發人員快速有效地定位軟體錯誤。傳統的統計分析方法通常能揭示統計關聯(變量的聯合分布),而不能充分分析程序元素間的相互影響。當軟體錯誤涉及多個程序元素間複雜交互的情況下,可能定位不到錯誤語句。此外,現有方法通常只檢測可疑程序語句或謂詞,缺少對錯誤行為狀態的描述,需要由開發人員進一步判定是否存在錯誤。由於錯誤可能起源於失效點之前的任何位置,因此僅通過孤立的可疑語句或謂詞來理解軟體錯誤的產生原因是很困難的,也是不準確的。
發明內容
本發明是要解決傳統的軟體錯誤定位方法定位精度低的問題,而提供了基於狀態依賴概率建模的軟體錯誤定位方法。基於狀態依賴概率建模的軟體錯誤定位方法包括的具體步驟如下:步驟1:分別執行正確測試用例和錯誤測試用例,並分別對正確測試用例和錯誤測試用例建立狀態依賴概率模型;步驟2:在步驟I的基礎上,根據狀態依賴概率模型,計算每個節點的可疑度;步驟3:將錯誤定位信息按可疑度進行降序排列,可疑度高的節點認定為更有可能出錯的節點,即完成了對基於狀態依賴概率建模的軟體的錯誤進行定位。發明效果:本發明的基於狀態依賴概率建模的軟體錯誤定位方法,能夠有效定位與控制依賴相關的軟體錯誤。與錯誤定位方法SB1、SOBER、Tarantula相比,定位精度可提高10%以上,適用於大規模程序代碼的錯誤定位技術領域。本發明的基本思想是:節點的狀態依賴可以很好的表示節點的執行狀態以及節點在各狀態下的依賴關係,有助於進行錯誤定位。如果某個節點的狀態依賴關係在錯誤測試用例執行過程中出現的頻率較高,而在正確測試用例執行過程中出現的頻率較低或沒有出現,則該節點的狀態依賴關係很可能是錯誤的。根據這一思想計算各語句在各個狀態下的可疑度,進而有效定位軟體錯誤。
圖1是本發明的流程示意圖;圖2是具體實施方式
一中步驟I中建立狀態依賴概率模型示意圖;圖3是具體實施方式
一中程序控制流圖實例示意圖;圖4是具體實施方式
一中程序控制依賴路徑實例示意圖。
具體實施例方式具體實施方式
一:結合圖1 圖4說明本實施方式,本實施方式的基於狀態依賴概率建模的軟體錯誤定位方法包括的具體步驟如下:步驟1:分別執行正確測試用例和錯誤測試用例,並分別對正確測試用例和錯誤測試用例建立狀態依賴概率模型;步驟2:在步驟I的基礎上,根據狀態依賴概率模型,計算每個節點的可疑度;步驟3:將錯誤定位信息按可疑度進行降序排列,可疑度高的節點認定為更有可能出錯的節點,即完成了對基於狀態依賴概率建模的軟體的錯誤進行定位。本實施方式效果:本實施方式的基於狀態依賴概率建模的軟體錯誤定位方法,能夠有效定位與控制依賴相關的軟體錯誤。與錯誤定位方法SB1、SOBER、Tarantula相比,定位精度可提高10%以上,適用於大規模程序代碼的錯誤定位技術領域。本實施方式的基本思想是:節點的狀態依賴可以很好的表示節點的執行狀態以及節點在各狀態下的依賴關係,有助於進行錯誤定位。如果某個節點的狀態依賴關係在錯誤測試用例執行過程中出現的頻率較高,而在正確測試用例執行過程中出現的頻率較低或沒有出現,則該節點的狀態依賴關係很可能是錯誤的。根據這一思想計算各語句在各個狀態下的可疑度,進而有效定位軟體錯誤。
具體實施方式
二:本實施方式與具體實施方式
一不同的是:步驟I中的所述建立狀態依賴概率模型的方法具體為:A、首先為程序建立控制流圖,記錄語句間的控制依賴關係;B、然後通過運行測試用例,插裝捕獲節點的控制依賴軌跡,記錄每個節點的執行狀態;其中,所述每個節點,執行測試用例時,都具有執行和未被執行兩種狀態,而分支節點在被執行時,又分為true和false兩種狀態;C、最後根據測試用例執行結果,統計每個節點在各狀態的依賴概率;其中,所述每個節點被執行的概率記為P (node),對於分支節點在被執行概率的基礎上記錄狀態為true和 false 的概率,記為 P (node (true))和 P (node (false));所述每個節點,根據下式計算每個節點node被執行的概率P (node):
權利要求
1.基於狀態依賴概率建模的軟體錯誤定位方法,其特徵在於基於狀態依賴概率建模的軟體錯誤定位方法包括的具體步驟如下: 步驟1:分別執行正確測試用例和錯誤測試用例,並分別對正確測試用例和錯誤測試用例建立狀態依賴概率模型; 步驟2:在步驟I的基礎上,根據狀態依賴概率模型,計算每個節點的可疑度; 步驟3:將錯誤定位信息按可疑度進行降序排列,可疑度高的節點認定為更有可能出錯的節點,即完成了對基於狀態依賴概率建模的軟體的錯誤進行定位。
2.根據權利要求1所述的基於狀態依賴概率建模的軟體錯誤定位方法,其特徵在於步驟I中的所述建立狀態依賴概率模型的方法具體為: A、首先為程序建立控制流圖,記錄語句間的控制依賴關係; B、然後通過運行測試用例,插裝捕獲節點的控制依賴軌跡,記錄每個節點的執行狀態; 其中,所述每個節點,執行測試用例時,都具有執行和未被執行兩種狀態,而分支節點在被執行時,又分為true和false兩種狀態; C、最後根據測試用例執行結果,統計每個節點在各狀態的依賴概率;其中,所述每個節點被執行的概率記為P(node),對於分支節點在被執行概率的基礎上記錄狀態為true和false 的概率,記為 P (node (true))和 P (node (false)); 所述每個節點 ,根據下式計算每個節點node被執行的概率P (node): Pinode) = -n(no—)——X P(para(n0.)) (I》 n(para(node)) 其中,所述P(para(node))為節點node的父節點被執行的概率,n(node)為控制依賴路徑中節點node被執行的次數,n (para(node))為控制依賴路徑中節點node的其父節點被執行的次數; 所述分支節點,在被執行概率的基礎上計算節點狀態為true和false的概率,即P (node (true))和 P (node (false)):P (node) = P (node (true)) +P (node (false)) (2) 其中,所述 P_de(_)) = —P(node) =--X P(OOde) n(node)n(node(irue)) + n(node(fa!se)) 所述 P(—.:.n(!10—))x P(node)=——n(n0de(燦——X__ nf node)n(node(//7/L^)) + 所述n(node (true))為控制依賴路徑中節點node的執行狀態為true的次數,所述n(node (false))為控制依賴路徑中節點node的執行狀態為false的次數; D、建立狀態依賴概率模型: 程序代碼P的狀態依賴概率模型是一個三元組(C,S,R),它記錄了節點在不同狀態下的依賴概率,其中: 所述C = (N,E)是P的控制流圖,N為節點集合,E為控制依賴邊集合,表示程序的控制依賴信息; 所述S是節點到狀態的映射;所述R是節點各狀態的依賴概率,節點狀態依賴概率通過步驟B計算得到。
3.根據權利要求2所述的基於狀態依賴概率建模的軟體錯誤定位方法,其特徵在於步驟2中的所述計算每個節點被執行狀態的可疑度的方法,具體為: 所述每個節點,計算每個節點被執行狀態的可疑度suspicious_score:
4.根據權利要求3所述的基於狀態依賴概率建模的軟體錯誤定位方法,其特徵在於所述節點為對應於程序中的每條語句。
5.根據權利要求4所述的基於狀態依賴概率建模的軟體錯誤定位方法,其特徵在於所述分支節點為對應於程序中的選擇語句和循環語句。
全文摘要
基於狀態依賴概率建模的軟體錯誤定位方法,本發明涉及電腦程式分析領域。本發明是要解決傳統的軟體錯誤定位方法定位精度低的問題,而提供了基於狀態依賴概率建模的軟體錯誤定位方法。步驟1分別執行正確測試用例和錯誤測試用例,並分別對正確測試用例和錯誤測試用例建立狀態依賴概率模型;步驟2在步驟1的基礎上,根據狀態依賴概率模型,計算每個節點的可疑度;步驟3將錯誤定位信息按可疑度進行降序排列,可疑度高的節點認定為更有可能出錯的節點,即完成了對基於狀態依賴概率建模的軟體的錯誤進行定位。本發明應用於電腦程式分析領域。
文檔編號G06F11/36GK103150254SQ201310099998
公開日2013年6月12日 申請日期2013年3月26日 優先權日2013年3月26日
發明者蘇小紅, 龔丹丹, 王甜甜, 馬培軍, 王煜, 趙玲玲 申請人:哈爾濱工業大學