一種基于程序結(jié)構(gòu)影響感知的軟件錯誤定位方法
【專利摘要】本發(fā)明公開了一種基于程序結(jié)構(gòu)影響感知的軟件錯誤定位方法,步驟包括:提取程序集中各版本的程序語句的覆蓋信息—錯誤語句在所有失敗的程序執(zhí)行中運行的次數(shù)和語句在所有成功的程序執(zhí)行中運行的次數(shù),選擇某種可疑度函數(shù),計算錯誤語句的可疑度;統(tǒng)計程序錯誤版本中各語句的可疑度值;構(gòu)造程序結(jié)構(gòu)對當(dāng)前使用的錯誤定位方法的影響函數(shù),利用該影響函數(shù)對可疑度函數(shù)進(jìn)行校正和優(yōu)化;在程序后續(xù)版本的錯誤定位過程中,根據(jù)程序的每條語句的運行特征,利用上述校正和優(yōu)化之后的可疑度函數(shù),計算每條語句的可疑度,然后根據(jù)可疑值從大到小對語句進(jìn)行排序,根據(jù)此順序?qū)Τ绦蛘Z句逐條排查,定位程序中的錯誤。本發(fā)明提高了錯誤定位的準(zhǔn)確度。
【專利說明】一種基于程序結(jié)構(gòu)影響感知的軟件錯誤定位方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于程序結(jié)構(gòu)影響感知的軟件錯誤定位方法,屬于軟件測試技術(shù) 領(lǐng)域。
【背景技術(shù)】
[0002] 軟件在日常生活中的應(yīng)用越來越廣泛。隨著軟件功能和架構(gòu)的復(fù)雜化,想要在軟 件產(chǎn)品中徹底避免軟件錯誤的出現(xiàn),仍然是很困難的。軟件錯誤,即導(dǎo)致軟件實際運行的結(jié) 果和預(yù)期的運行結(jié)果不相符的那些因素,這些錯誤的存在,導(dǎo)致軟件相應(yīng)的功能喪失。軟件 調(diào)試是用于修改軟件錯誤的常用手段,是一項十分重要但又代價很大的工程,它通常包括 三個步驟:錯誤的定位、錯誤的修復(fù)和對錯誤修復(fù)后的再確認(rèn)。其中,錯誤的定位是最為重 要也是最為費時和費力的過程。
[0003] 語句級別的統(tǒng)計錯誤定位方法通過收集每條語句在程序執(zhí)行失敗或成功時的運 行信息來分析和評估該語句存在錯誤的可疑程度。舉例來說,若某條語句總是在失敗的程 序執(zhí)行中被運行,而從未在成功的程序執(zhí)行中被運行過,那么,它很可能是和軟件錯誤相關(guān) 的。在此類統(tǒng)計錯誤定位方法中,通常采用可疑度函數(shù)來評估語句存在錯誤的可能性。
[0004] 在進(jìn)行錯誤定位時,首先需要多次執(zhí)行程序,統(tǒng)計失敗測試用例的條數(shù)m和語句 Si的覆蓋次數(shù)failed(Si),以及成功測試用例的條數(shù)m'和語句的覆蓋S i次數(shù)passed(Si); 然后根據(jù)可疑度函數(shù)來評估每條語句存在錯誤的可能性,按照可疑值從大到小對語句進(jìn)行 排序;最后根據(jù)這個排序來逐個查找程序中的錯誤。對于目前的大部分可疑度函數(shù)(如 Tarantula、Jaccard、0chiai、0chiai2)而言,一條語句S i的可疑度Rt (Si)只與兩個變量有 關(guān)一一該語句在失敗的程序執(zhí)行中運行的次數(shù)failed(Si)和該語句在成功的程序執(zhí)行中 運行的次數(shù)passed (Si)。
[0005] 然而,單純地利用failed(Si)和passed(Si)來評估語句可疑度的方法與實際情況 相差甚遠(yuǎn),在進(jìn)行錯誤定位時,受程序結(jié)構(gòu)的影響,某些語句在計算可疑度值時總是具有較 高的可疑度值,而有些語句總是具有較低的可疑度值。這些都可能會造成軟件開發(fā)者反復(fù) 多次地查看正確的程序片段,反而漏掉了一些難以察覺的錯誤。目前這種錯誤定位的方法 很低,很難用于工業(yè)界。本發(fā)明考慮程序結(jié)構(gòu)對可疑度值的影響,以對初始的可疑度值進(jìn)行 校正和優(yōu)化,提供了 一種準(zhǔn)確度更高的錯誤定位方法。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明技術(shù)解決問題:克服現(xiàn)有技術(shù)的不足,提供一種基于程序結(jié)構(gòu)影響感知的 軟件錯誤定位方法,本發(fā)明考慮了實際編程中程序結(jié)構(gòu)對錯誤定位方法的影響,提出了一 個通用的錯誤定位校正和優(yōu)化策略,用以感知程序結(jié)構(gòu)對錯誤定位效果的影響并予以消 除,以至于可疑函數(shù)更加符合語言特性和實際情況,從而提高了錯誤定位的準(zhǔn)確度。
[0007] 本發(fā)明技術(shù)解決方案:一種基于程序結(jié)構(gòu)影響感知的軟件錯誤定位方法,統(tǒng)計在 軟件錯誤定位過程中程序?qū)嶓w的歷史可疑度值并進(jìn)行分析,構(gòu)造程序結(jié)構(gòu)對程序?qū)嶓w可疑 度值的影響函數(shù),進(jìn)而校正和優(yōu)化當(dāng)前的可疑度函數(shù),在后續(xù)錯誤定位過程中消除程序結(jié) 構(gòu)對錯誤定位效果的影響,使得可疑度函數(shù)更加遵循程序的語言特性,從而提高錯誤定位 的準(zhǔn)確度。
[0008] 具體實現(xiàn)步驟如下:
[0009] (1)提取程序集中各版本的程序語句的覆蓋信息,即錯誤語句在失敗的程序執(zhí)行 中運行的次數(shù)和語句在成功的程序執(zhí)行中運行的次數(shù);
[0010] (2)選擇某種可疑度函數(shù),計算錯誤語句的可疑度;
[0011] (3)統(tǒng)計程序錯誤版本中各語句的可疑度值,以估算程序結(jié)構(gòu)對錯誤定位方法的 影響;
[0012] (4)構(gòu)造程序結(jié)構(gòu)對當(dāng)前使用的錯誤定位方法的影響函數(shù),利用該影響函數(shù)對可 疑度函數(shù)進(jìn)行校正和優(yōu)化;
[0013] (5)在程序后續(xù)各版本的錯誤定位過程中,根據(jù)程序的每條語句的運行特征,利用 步驟(4)中所述的策略不斷校正和優(yōu)化可疑度函數(shù),然后計算每條語句的可疑度,然后根 據(jù)可疑值從大到小對語句進(jìn)行排序,根據(jù)此順序?qū)Τ绦蛘Z句逐條排查,定位程序中的錯誤。
[0014] 所述步驟(4)中使用簡單移動平均法來構(gòu)造程序結(jié)構(gòu)對錯誤定位方法的影響函 數(shù)。
[0015] 本發(fā)明不限定具體的錯誤定位方法,其他的錯誤定位方法也可以應(yīng)用;
[0016] 本發(fā)明不限定具體的估算方法,其它估算方法也可以應(yīng)用。
[0017] 本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于:
[0018](1)本發(fā)明應(yīng)用于軟件錯誤定位過程中,通過統(tǒng)計程序歷史錯誤版本中各語句的 可疑度值并進(jìn)行分析,估算程序結(jié)構(gòu)對語句可疑度值的影響函數(shù),進(jìn)而校正和優(yōu)化當(dāng)前的 可疑度函數(shù),在后續(xù)錯誤定位過程中消除程序結(jié)構(gòu)對錯誤定位效果的影響。
[0019] (2)本發(fā)明統(tǒng)計程序?qū)嶓w的歷史可疑度值,便于分析程序結(jié)構(gòu)對其影響。另外, 本發(fā)明通過簡單移動平均法得到程序結(jié)構(gòu)對可疑度函數(shù)的影響,用于校正和優(yōu)化可疑度函 數(shù),并生成最終的可疑度函數(shù),從而提高了軟件錯誤定位的準(zhǔn)確度。
【專利附圖】
【附圖說明】
[0020] 圖1為本發(fā)明方法的實現(xiàn)流程圖;
[0021] 圖2為基于程序結(jié)構(gòu)影響感知的軟件錯誤定位方法分別應(yīng)用于Tarantula與 Jaccard方法上的效果對比圖。
【具體實施方式】
[0022] 基于程序結(jié)構(gòu)影響感知的軟件錯誤定位方法的步驟主要為圖1所示的四個步驟, 第五個步驟是對于整個方法的優(yōu)化:
[0023] (1)提取該程序版本在執(zhí)行過程中的覆蓋信息,即程序語句在失敗的程序執(zhí)行中 運行的次數(shù)和語句在成功的程序執(zhí)行中運行的次數(shù);
[0024] (2)選擇某種可疑度函數(shù),如下所述的Tarantula和Jaccard可疑度計算函數(shù),來 計算錯誤語句的可疑度; CN104317707A 說明書 3/4 頁
[0025]
【權(quán)利要求】
1. 一種基于程序結(jié)構(gòu)影響感知的軟件錯誤定位方法,其特征在于實現(xiàn)步驟如下: (1) 提取程序集中各版本的程序語句的覆蓋信息,即錯誤語句在失敗的程序執(zhí)行中運 行的次數(shù)和語句在成功的程序執(zhí)行中運行的次數(shù); (2) 選擇某種可疑度函數(shù),計算錯誤語句的可疑度; (3) 統(tǒng)計程序錯誤版本中各語句的可疑度值,以估算程序結(jié)構(gòu)對錯誤定位方法的影 響; (4) 構(gòu)造程序結(jié)構(gòu)對當(dāng)前使用的錯誤定位方法的影響函數(shù),利用該影響函數(shù)對可疑度 函數(shù)進(jìn)行校正和優(yōu)化; (5) 在程序后續(xù)版本的錯誤定位過程中,根據(jù)程序的每條語句的運行特征,利用步驟 (4)中校正和優(yōu)化之后的可疑度函數(shù),計算每條語句的可疑度,然后根據(jù)可疑值從大到小對 語句進(jìn)行排序,根據(jù)此順序?qū)Τ绦蛘Z句逐條排查,定位程序中的錯誤。
2. 根據(jù)權(quán)利要求1所述的基于程序結(jié)構(gòu)影響感知的軟件錯誤定位方法,其特征在于: 所述步驟(4)中使用簡單移動平均法來構(gòu)造程序結(jié)構(gòu)對錯誤定位方法的影響函數(shù)。
【文檔編號】G06F11/36GK104317707SQ201410546645
【公開日】2015年1月28日 申請日期:2014年10月15日 優(yōu)先權(quán)日:2014年10月15日
【發(fā)明者】李恒, 張震宇, 劉暢 申請人:中國科學(xué)院軟件研究所