[發明專利]一種基于動態切片的輕量級錯誤定位技術實現方法有效
| 申請號: | 201510050259.1 | 申請日: | 2015-01-30 |
| 公開(公告)號: | CN104572474B | 公開(公告)日: | 2017-09-29 |
| 發明(設計)人: | 張迎周;滕慶亞;馬鳳嬌;居友道;徐曼青;高海燕;徐晨晨;閆麗 | 申請(專利權)人: | 南京郵電大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 南京知識律師事務所32207 | 代理人: | 汪旭東 |
| 地址: | 210046 江蘇省*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 動態 切片 輕量級 錯誤 定位 技術 實現 方法 | ||
技術領域
本發明涉及一種錯誤定位的方法,主要從動態切片的過程中提取有用信息,再用輕量級的方法分析,為程序員提供錯誤語句塊的可疑度排序,屬于軟件測試領域。
背景技術
軟件調試需要程序員進行大量的人機交互。故障定位是調試過程中最為耗時和費力的活動之一,它通過審查源程序語義和結構,結合分析程序的執行過程及結果,輔助開發人員找到軟件故障位置。研究人員提出了一系列自動化的故障定位方法,這些方法可分為靜態方法和動態方法。靜態方法利用程序的依賴關系、類型約束等信息來分析程序中的可能故障點;動態方法則通過測試程序,跟蹤程序的執行軌跡和覆蓋信息來進行故障定位。高效地定位軟件故障可減輕程序員手工排查程序語句的工作量,提升調試速度和效率。
錯誤定位的2個階段:1、找出值得被懷疑的語句2、從這些語句中再確定是否真正是錯誤語句。由第一階段:高懷疑度語句需要先于低懷疑度語句被檢查。由第二階段:我們假定只要被程序員檢查的有懷疑的語句都能找出其中的錯誤。錯誤定位方法繁多,但是歸根結底可以分為3種:
1、基于行為特征對比的方法。2、基礎程序狀態修改的方法。3、基于程序依賴關系的方法。
程序行為特征,也被稱為程序頻譜(program spectra),是程序執行特征的統計信息。
基礎程序狀態修改的方法通常在程序執行時,獲得并修改程序的狀態,然后觀察修改后的測試結果(成功/失敗),進而找出對測試結果有影響的語句。
基于程序依賴關系的方法,例如符號執行,與執行實際的目標程序不同它僅依賴程序的源代碼,以符號代替具體變量的值作為程序的輸入數據。這種方法側重于靜態分析。而切片等方法則側重于使用程序的動態依賴關系給出值得懷疑的語句的集合,這個集合除了包含錯誤語句外,還提供了一個供程序員理解的調試上下文。但通常這類集合也會包含一些冗余的語句,需要使用一些技術來化簡集合。
發明內容
技術問題:本發明的目的是提供一種基于動態切片的輕量級錯誤定位技術實現方法,目前現有的錯誤定位技術主要從靜態、動態和統計這3個方面單獨分析,錯位定位效率往往不能達到實際的要求。本發明利用程序切片中的動態切片方法,在取得程序切片之后先進行初步的切片分析,然后將結果送給輕量級錯誤定位模型,進行最后一步的統計分析,最后得出可疑度語句塊的排名,并且同時保證了高精度和低誤判率。
技術方案:本發明結合約束求解器,動態生成測試用例,再對程序進行動態切片和斷點分析,利用切片后的結果,進行可疑度排序,最終提高錯誤定位的效率。
該發明由5個模塊組成,其中,最頂層是測試用例生成模塊,主要負責測試用例的自動化生成。中間是程序狀態修改模塊,主要負責動態的改變謂詞的結果,以產生值得進行切片的關鍵謂詞。其次是斷點分析模塊、切片分析模塊和可疑度統計模塊。其中,斷點分析模塊主要負責分析程序崩潰的情況,對無法正常執行結束的程序進行分析,決定了這個發明的健壯性。切片分析模塊主要是對依賴圖進行動態切片,切片之后的結果以執行了程序哪幾行的形式反饋給用戶,用戶根據切片結果,對其進行初步分析。可疑度統計模塊主要負責計算每條可疑語句塊的可疑度。
有益效果:本發明在對源程序進行切片時,并非漫無目的的尋找切片興趣點,而是,通過先尋找程序中存在的謂詞,對其結果進行強制改變,從而使程序的執行結果發生變化,從而產生關鍵謂詞,再對關鍵謂詞進行切片,大大減少了切片的工作量。其次,本發明對程序不包含謂詞的情況也作了詳細的討論,并提出了一種2分斷點算法,精確的計算出程序崩潰時的切片語句,從而使得本發明適用于所有的程序。
精度高:基于程序頻譜的輕量級錯誤定位方法,往往不考慮程序執行的動態依賴關系,所以導致了最后的可疑度語句塊過于龐大。本發明優先對源程序進行切片,將有依賴關系包括控制依賴和數據依賴的語句塊篩選了出來,然后再進行輕量級分析的時候就不會產生太多的語句塊。
附圖說明
圖1是本發明方案的總體實施流程,包括5大模塊,測試用例生成模塊,程序狀態修改模塊,斷點分析模塊,切片分析模塊和可疑度分析模塊。
圖2是本發明的測試用例生成模塊,利用約束求解器生成測試用例并對其進行分類,最后送入程序狀態修改模塊。
圖3是本發明的程序狀態修改模塊,主要工作是進行謂詞分析和將部分沒有謂詞的程序送入斷點分析模塊。
圖4是本發明的斷點分析模塊,此模塊負責處理程序崩潰的情況。
圖5是本發明的切片分析模塊,負責生成源程序的切片結果,切片結果為執行過哪些和被切語句有關的語句。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京郵電大學,未經南京郵電大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510050259.1/2.html,轉載請聲明來源鉆瓜專利網。





