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

以布爾表達式的求值序列為謂詞單元的軟件錯誤定位方法

文檔序號:6356248閱讀:437來源:國知局
專利名稱:以布爾表達式的求值序列為謂詞單元的軟件錯誤定位方法
技術(shù)領(lǐng)域
本發(fā)明屬于軟件測試技術(shù)領(lǐng)域,涉及一種軟件錯誤定位方法,特別提供了一種以布爾表達式的求值序列為謂詞單元的軟件錯誤定位方法,可應(yīng)用于動態(tài)的軟件錯誤定位。
背景技術(shù)
為了修改軟件中存在的錯誤,對錯誤進行定位是必要的步驟之一。軟件測試中的錯誤定位是最困難、最耗時的任務(wù),使用一種自動化的錯誤定位技術(shù)來協(xié)助程序員找到錯誤是解決軟件測試問題的趨勢。學術(shù)界早在十年前已經(jīng)提出了自動化錯誤定位的概念。一種流行的方法是通過查找與程序執(zhí)行結(jié)果相關(guān)度高的程序語句來定位程序錯誤。這類方法稱為“語句級別的統(tǒng)計錯誤定位方法”,它關(guān)注的是程序語句在成功測試用例和失敗測試用例執(zhí)行中的執(zhí)行信息的差異。要應(yīng)用此類分析技術(shù),必須具備兩個關(guān)鍵因素(1) 一個(或一組)用于參考的程序執(zhí)行信息特征,用以提供分析語句可疑度的信息;( 一個評估函數(shù),用以衡量語句的可疑度。Jones等人于2002年基于此類方法進行了研究。還有一種方法是將特定的程序語句(例如布爾表達式)視作謂詞,將謂詞作為程序?qū)嶓w,進行可疑度評估。此類方法對比每個謂詞在成功測試用例執(zhí)行中的求值和在失敗測試用例執(zhí)行中的求值。二者的差別越大,說明這個謂詞與程序錯誤的相關(guān)度越高。按照謂詞可疑度對謂詞進行排序,就可以獲得與程序錯誤最相關(guān)的謂詞,把謂詞位置映射回程序中,就可以預測程序錯誤的位置。由于這種方法只需要對選定的謂詞的執(zhí)行信息進行采樣,而不必采集所有語句的執(zhí)行信息,所以可以減輕插樁對程序行為帶來的影響,降低采集執(zhí)行信息的復雜度,同時避免暴露太多的代碼,降低信息泄露的風險。這里,插樁是指程序插樁技術(shù),它在保證被測程序原有邏輯完整性的基礎(chǔ)上在程序中插入探針,通過探針的執(zhí)行捕獲程序運行數(shù)據(jù)。Liblit等人(2005年),柳超等人(2006年),Chi Iimbi等人(2009年)分別就此種方法提出了謂詞可疑度的評估函數(shù)。舉例來說,Liblit等人提出的CBI方法衡量謂詞在失敗測試用例中被評估成“true”的可能性,并與其整個測試用例集中的相應(yīng)可能性進行對比。柳超等人提出的SOBER方法通過對比一次執(zhí)行中謂詞被評估成“true”和“false”的比例——求值偏差——來預測和程序錯誤相關(guān)的謂詞(一個謂詞的求值偏差指的是在一次執(zhí)行中這個謂詞被評估成“true”的比例)。上述基于謂詞的統(tǒng)計錯誤定位技術(shù)雖然解決了收集所有語句執(zhí)行信息而造成的數(shù)據(jù)量龐大的問題,然而粒度較粗,并沒有充分利用能夠收集到的謂詞執(zhí)行信息。隨著軟件復雜度的增加,復合型布爾表達式經(jīng)常被用作謂詞,將組成復合表達式的原子型表達式 (如“a > 3&&b < 10”中的子句“a > 3”和“b < 10”)用作謂詞是很自然的想法。然而, 常見編程語言(例如C,C++,Java等)的短路求值機制使得對原子布爾表達式的求值變得困難。含有“&&”和“I I”操作符的操作數(shù)表達式,在進行求值時,只要最終的結(jié)果已經(jīng)可以確定是true或false,求值過程便告終止,這就稱之為短路求值。短路求值機制是關(guān)系操作符的重要屬性,也是確定編程語言中表達式求值的規(guī)則。舉例來說,在復合型布爾表達式“a
>3&&b < 10”中,當原子型布爾表達式“a > 3”求值為“false”時,對原子型布爾表達式 "b< 10”將不再求值,因為該復合型布爾表達式的求值已經(jīng)確定為“false”。因此,是否對每個原子型布爾表達式都進行求值是不可預測的。同時,由于存在有例如“P ! = 3&&p
>0”形式的復合型布爾表達式,對各個原子型布爾表達式進行強行求值也是不安全的。由于種種原因,將原子型布爾表達式直接用作謂詞變得不可行。基于謂詞的統(tǒng)計錯誤定位方法使用較粗粒度的信息,導致算法準確度降低,從而影響實用性,有必要尋找更細粒度的謂詞以解決這個問題。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)中存在的上述問題,提供一種以布爾表達式的求值序列為謂詞單元的軟件錯誤定位方法。本發(fā)明的方法,其步驟包括1、提取待測軟件程序中的各布爾表達式,得到其對應(yīng)的布爾表達式的求值序列;2、將上述布爾表達式的求值序列作為謂詞,收集各謂詞在程序執(zhí)行中的執(zhí)行信息,所述執(zhí)行信息包括執(zhí)行結(jié)果(true或false)和次數(shù);3、根據(jù)上述各謂詞的執(zhí)行信息,計算各謂詞的可疑度,根據(jù)可疑度確定與軟件錯誤相關(guān)的謂詞;4、根據(jù)上述與軟件錯誤相關(guān)的謂詞的位置定位軟件錯誤位置。本發(fā)明在含有缺陷的待測程序中自動尋找并提取布爾表達式,并插入樁函數(shù);加載測試用例并執(zhí)行待測程序,采集執(zhí)行時各個布爾表達式的求值序列信息。本發(fā)明利用短路求值方法得到上述各布爾表達式的求值序列。本發(fā)明使用CBI方法或SOBER方法計算上述謂詞的可疑度。上述布爾表達式包括復合型布爾表達式和原子布爾表達式。本發(fā)明按照高低對各謂詞的可疑度進行排序,以確定與軟件錯誤最相關(guān)的謂詞。本發(fā)明的特點在于(1)將求值序列作為謂詞單元本發(fā)明對使用的可疑度評估算法不做限定,在將求值序列作為謂詞后,可以將CBI 或SOBER中的任一種方法用于評估謂詞的可疑度。如表1列出了分別使用CBI和SOBER方法進行以求值序列為謂詞單元的可疑度評估方法。表 權(quán)利要求
1.一種以布爾表達式的求值序列為謂詞單元的軟件錯誤定位方法,其步驟包括1)提取待測軟件程序中的各布爾表達式,得到其對應(yīng)的布爾表達式的求值序列;2)將上述布爾表達式的求值序列作為謂詞,收集各謂詞在程序執(zhí)行中的信息;3)根據(jù)上述各謂詞的執(zhí)行信息,計算各謂詞的可疑度,根據(jù)可疑度確定與軟件錯誤相關(guān)的謂詞;4)根據(jù)上述與軟件錯誤相關(guān)的謂詞的位置定位軟件錯誤位置。
2.如權(quán)利要求1所述的方法,其特征在于,所述步驟1)為在含有缺陷的待測程序中自動尋找并提取布爾表達式,并插入樁函數(shù);加載測試用例并執(zhí)行待測程序,采集執(zhí)行時各個布爾表達式的求值序列信息。
3.如權(quán)利要求1或2所述的方法,其特征在于,采用短路求值方法得到上述各布爾表達式的求值序列。
4.如權(quán)利要求1所述的方法,其特征在于,所述步驟3)使用CBI方法計算上述謂詞的可疑度。
5.如權(quán)利要求1所述的方法,其特征在于,所述步驟3)使用或SOBER方法計算上述謂詞的可疑度。
6.如權(quán)利要求1所述的方法,其特征在于,所述布爾表達式包括復合型布爾表達式和原子布爾表達式。
7.如權(quán)利要求1所述的方法,其特征在于,所述步驟3)按照高低對各謂詞的可疑度進行排序,以確定與軟件錯誤最相關(guān)的謂詞。
8.如權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行信息包括執(zhí)行結(jié)果和次數(shù)。
全文摘要
本發(fā)明屬于軟件測試領(lǐng)域,涉及一種以布爾表達式的求值序列為謂詞單元的軟件錯誤定位方法,步驟包括提取待測軟件程序中的各布爾表達式,得到其對應(yīng)的布爾表達式的求值序列;將布爾表達式的求值序列作為謂詞,收集各謂詞在程序執(zhí)行中的執(zhí)行信息;根據(jù)各謂詞的執(zhí)行信息,計算各謂詞的可疑度,根據(jù)可疑度確定與軟件錯誤相關(guān)的謂詞;根據(jù)與軟件錯誤相關(guān)的謂詞的位置定位軟件錯誤位置。本發(fā)明使收集的謂詞信息更充分、粒度更細,更容易且更準確地找到與錯誤最相關(guān)的謂詞,從而提高了錯誤定位的準確度。
文檔編號G06F11/36GK102541741SQ20121000213
公開日2012年7月4日 申請日期2012年1月5日 優(yōu)先權(quán)日2012年1月5日
發(fā)明者張震宇, 高文超 申請人:中國科學院軟件研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1