一種基于抽象解釋技術的缺陷警報分組方法及裝置制造方法
【專利摘要】本發明公開了一種基于抽象解釋技術的缺陷警報分組方法,所述方法包括:獲取函數控制流圖上節點的抽象語義,并獲取函數控制流圖上所述節點的求精的抽象語義;當在所述節點上報告一個以上缺陷警報時,依據所述缺陷警報間的抽象依賴關系,對所述缺陷警報進行分組。本發明同時還公開了一種基于抽象解釋技術的缺陷警報分組裝置。采用本發明的技術方案,大大減少了部分缺陷警報的識別工作,提高了測試工作效率。
【專利說明】一種基于抽象解釋技術的缺陷警報分組方法及裝置
【技術領域】
[0001]本發明涉及計算機軟件測試技術,具體涉及一種基于抽象解釋技術的缺陷警報分組方法及裝置。
【背景技術】
[0002]缺陷檢測一般包括靜態缺陷檢測和人工審查兩個階段。靜態缺陷檢測工具能夠檢測軟件存在的缺陷,并報告相應的缺陷警報。針對靜態缺陷檢測工具所輸出的缺陷警報報告,開發人員需要通過人工審查來逐一判斷這一缺陷警報是否屬實,或者這一缺陷警報是否足夠重要以便需要開發人員修復。
[0003]大量的缺陷警報輸出,尤其是警報中的誤報以及不重要的警報所占的比例過多,就必然會導致開發人員耗費大量的精力去審查缺陷警報報告,進而降低了缺陷檢測工具的可用性。通常情況下開發人員有責任對缺陷警報進行評估以判定該警報是否中肯。然而,處理這些缺陷警報的速度通常并不是很高,根據國內多個行業的大型系統的測試經驗,一般每人每小時處理的缺陷警報在15至30個之間。如果一個靜態缺陷檢測工具針對某一軟件代碼報告了 6000個缺陷警報,每一個缺陷警報需要1.5分鐘的人工時間來審查,那么一個開發人員需要連續工作18.75天才能全部審查完畢(每天8小時工作),如此耗費了大量的時間和精力。
【發明內容】
[0004]為解決現有存在的技術問題,本發明實施例提供一種基于抽象解釋技術的缺陷警報分組方法及裝置,能夠減少部分缺陷警報的識別工作,提高測試工作效率。
[0005]為達到上述目的,本發明實施例的技術方案是這樣實現的:
[0006]本發明實施例提供了一種基于抽象解釋技術的缺陷警報分組方法,所述方法包括:
[0007]獲取函數控制流圖上節點的抽象語義,并獲取函數控制流圖上所述節點的求精的抽象語義;
[0008]當在所述節點上報告一個以上缺陷警報時,依據所述缺陷警報間的抽象依賴關系,對所述缺陷警報進行分組;
[0009]其中,所述缺陷警報間的抽象依賴關系為:當缺陷警報朽具體依賴于缺陷警報爐時,當所述缺陷警報灼在對應的抽象語義下被報告,而在對應的求精的抽象語義下沒有被報告時,則確定所述缺陷警報朽抽象依賴于所述缺陷警報<Pm ;
[0010]其中,所述缺陷警報具體依賴缺陷警報P為:當且僅當缺陷警報K不發生總能得出缺陷警報朽不發生,則確定所述缺陷警報P具體依賴于所述缺陷警報仏。
[0011]上述方案中,所述獲取函數控制流圖上所述節點及所述節點的前驅節點的求精的抽象語義,包括:[0012]當報告一個缺陷警報時,在所述缺陷警報所在節點上切除所述節點的錯誤狀態,獲得所述節點的狀態切片;
[0013]將所述節點的狀態切片作為所述抽象語義的外部約束信息,獲得所述節點的求精的抽象語義。
[0014]上述方案中,所述在所述缺陷警報所在節點上切除所述節點的錯誤狀態,獲得所述節點的狀態切片,包括:
[0015]當程序P的節點I上報告一個缺陷奶時,在所述節點I上切除所述缺陷灼對應的錯誤狀態后的狀態切片表 為'
【權利要求】
1.一種基于抽象解釋技術的缺陷警報分組方法,其特征在于,所述方法包括: 獲取函數控制流圖上節點的抽象語義,并獲取函數控制流圖上所述節點的求精的抽象語義; 當在所述節點上報告一個以上缺陷警報時,依據所述缺陷警報間的抽象依賴關系,對所述缺陷警報進行分組; 其中,所述缺陷警報間的抽象依賴關系為:當缺陷警報灼具體依賴于缺陷警報時,當所述缺陷警報死在對應的抽象語義下被報告,而在對應的求精的抽象語義下沒有被報告時,則確定所述缺陷警報死抽象依賴于所述缺陷警報(P 其中,所述缺陷警報氕具體依賴缺陷警報隊為:當且僅當缺陷警報P不發生總能得出缺陷警報死不發生,則確定所述缺陷警報代具體依賴于所述缺陷警報^。
2.根據權利要求1所述的方法,其特征在于,所述獲取函數控制流圖上所述節點及所述節點的前驅節點的求精的抽象語義,包括: 當報告一個缺陷警報時,在所述缺陷警報所在節點上切除所述節點的錯誤狀態,獲得所述節點的狀態切片; 將所述節點的狀態切片作為所述抽象語義的外部約束信息,獲得所述節點的求精的抽象語義。
3.根據權利要求2所述的方法,其特征在于,所述在所述缺陷警報所在節點上切除所述節點的錯誤狀態,獲得所述節點的狀態切片,包括: 當程序P的節點I上報告一個缺陷約時,在所述節點I上切除所述缺陷約對應的錯誤狀態后的狀態切片表示為=Τ(Ι)::η(φ,): 其中,Ω為所述缺陷扔所對應的具體錯誤狀態;Θ表示錯誤狀態的切除操作;f(0為程序P的節點I的具體語義; 獲得所述節點的狀態切片,所述狀態切片巧,的抽象語義表示為 其中,〃(Ω(的))為缺陷約所對應的可靠的抽象錯誤狀態;§.表示可靠的抽象的錯誤狀態的切除操作;fl/)力抽象域下所述程序P的抽象語義。
4.根據權利要求2所述的方法,其特征在于,所述將所述節點的狀態切片作為所述抽象語義的外部約束信息,獲得所述節點的求精的抽象語義,包括: 當輸入的程序點集合Lin為:Lin={l e L| 1:1nput (X1)}時,確定輸入函數δ表示為:SiL^P(Y); 其中,L表示所有程序點集合;Xl表示在程序點I處的變量X ; ¥為程序變量集合;pm表示所有變量的取值集合; 將缺陷警報所在的程序點的狀態切片作為程序抽象語義的外部約束信息,替換原有程序錯誤狀態,則所述輸入的節點集合Lin為:Lw ={/e L,;其中,卜為所有缺陷警報發生節點; 則缺陷蹤跡的求精語義&表示為:τψι =TpiOm^(O); 其中,I表示程序點;4(/)表示I點的錯誤狀態切片;~表示變量集合V下的具體語義函數; y表示求精操作; 當茍(/)是對&(7)的可靠抽象時,所述蹲(/)和今(O滿足如下表達式:{ρφ:\ρφω^δΤ(1)}^y(?^-{1)): 其中,Pn為切除錯誤狀態后的狀態切片;AM、表示在狀態切片中變量X的取值; (X)e &(/);[表示切除錯誤狀態后的狀態切片滿足映射函數δ ;&(/)表示程序點I的錯誤狀態切片;禮(O是對今(O的可靠抽象;7(茍(/))表示茍(O下的具體語義函數;£則表明語義可靠性; 所述缺陷蹤跡^的求精語義^的抽象語義表示為咬; 其中,是對的可靠抽象,即[£ rdfpf門咬).其中,Ifp^F1表示最小不動點語義表示錯誤點的抽象值;π表示抽象交運算。
5.根據權利要求1所述的方法,其特征在于,所述獲取函數控制流圖上節點的抽象語義,并獲取函數控制流圖上所述節點及所述節點的前驅節點的求精的抽象語義之后,所述方法還包括: 更新所有程序的求精的抽象狀態,具體包括:將獲取的每一個求精的抽象語義分別賦給對應節點的抽象語義,更新所有的求精的抽象狀態; 將所述節點的抽象語義分別賦給對應節點的程序抽象狀態,恢復原有函數抽象狀態取值。
6.根據權利要求1所述的方法,其特征在于,所述方法還包括: 根據當前缺陷警報的依賴關系,當確定所述缺陷警報為誤報時,確定所述另一個缺陷警報也為誤報; 當確定所述缺陷警報為真實時,確定所述另一個缺陷警報也為真實。
7.一種基于抽象解釋技術的缺陷警報分組裝置,其特征在于,所述裝置包括:獲取單元和分組單元;其中, 所述獲取單元,用于獲取函數控制流圖上節點的抽象語義,并獲取函數控制流圖上所述節點的求精的抽象語義; 所述分組單元,用于當在所述節點上報告一個以上缺陷警報時,依據所述缺陷警報間的抽象依賴關系,對所述缺陷警報進行分組; 其中,所述缺陷警報間的抽象依賴關系為:當缺陷警報代具體依賴于缺陷警報P時,當所述缺陷警報朽在對應的抽象語義下被報告,而在對應的求精的抽象語義下沒有被報告時,則確定所述缺陷警報φη抽象依賴于所述缺陷警報<pm;其中,所述缺陷警報代具體依賴缺陷警報K為:當且僅當缺陷警報^不發生總能得出缺陷警報朽不發生,則確定所述缺陷警報私具體依賴于所述缺陷警報氕。
8.根據權利要求7所述的裝置,其特征在于,所述裝置還包括狀態切片單元,用于當報告一個缺陷警報時,在所述缺陷警報所在節點上切除所述節點的錯誤狀態,獲得所述節點的狀態切片;將所述節點的狀態切片作為所述抽象語義的外部約束信息,獲得所述節點的求精的抽象語義。
9.根據權利要求8所述的裝置,其特征在于,所述狀態切片單元,具體用于當程序P的節點I上報告一個缺陷約時,切除所述缺陷約所對應的錯誤狀態后的狀態切片表示為:
10.根據權利要求8所述的裝置,其特征在于,所述狀態切片單元,具體還用于當輸入的節點集合Lin為:
11.根據權利要求7所述的裝置,其特征在于,所述裝置還包括更新單元,用于更新所有程序的求精的抽象狀態,具體包括:將獲取的每一個求精的抽象語義分別賦給對應節點的抽象語義,更新所有的求精的抽象狀態;將所述節點的抽象語義分別賦給對應節點的程序抽象狀態,恢復原有函數抽象狀態取值。
12.根據權利要求7所述的裝置,其特征在于,所述裝置還包括確定單元,用于根據當前缺陷警報的依賴關系,當確定所述缺陷警報為誤報時,確定所述另一個缺陷警報也為誤報;當確定所述缺陷警報為真實時,確定所述另一個缺陷警報也為真實。
【文檔編號】G06F11/36GK103678128SQ201310687844
【公開日】2014年3月26日 申請日期:2013年12月13日 優先權日:2013年12月13日
【發明者】金大海, 宮云戰, 黃俊飛, 王雅文, 張大林 申請人:北京郵電大學