[發明專利]基于切片模型的程序回歸錯誤定位方法有效
| 申請號: | 201610368555.0 | 申請日: | 2016-05-26 |
| 公開(公告)號: | CN106095663B | 公開(公告)日: | 2017-06-27 |
| 發明(設計)人: | 劉烴;陳澤華;王海軍;鄭慶華;管曉宏;朱海萍 | 申請(專利權)人: | 西安交通大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 西安通大專利代理有限責任公司61200 | 代理人: | 陸萬壽 |
| 地址: | 710049 陜*** | 國省代碼: | 陜西;61 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 切片 模型 程序 回歸 錯誤 定位 方法 | ||
1.基于切片模型的程序回歸錯誤定位方法,其特征在于,包括以下步驟:
S1)、根據輸入的兩個版本待測程序,計算出兩個版本程序源代碼的不同之處,根據源代碼的不同對兩個版本程序的源代碼重排,使得相同的源代碼有相同的行號,不同的源代碼與空行對應;
S2)、用兩個經過源代碼重排后的程序執行會導致修改版本程序執行失敗的測試案例,并提取兩個版本程序的執行軌跡、語句包含的變量值以及語句的依賴關系;
S3)、將執行軌跡組織成樹形結構,樹的每個節點是一個函數執行序列;調用軌跡函數體語句對應方法,對步驟S2)中提取到的兩版本程序的執行軌跡進行對應;
S4)、根據源代碼的不同、軌跡對應結果以及語句包含的變量值,將軌跡中的語句分為四類:修改導致不同的語句、流不同的語句、值不同的語句以及一致的語句;
S5)、以新版本程序執行失敗點為起點開始對回歸錯誤的產生進行切片分析,將失敗點語句加入切片分析隊列;
S6)、判斷切片分析隊列是否為空,若為空則跳轉至步驟S9),否則跳轉至步驟S7);
S7)、取出切片分析隊列首端語句,并判斷首端語句是否需要進行切片分析,若不需進行分析則跳轉至步驟S6),否則跳轉至步驟S8);
S8)、將當前分析語句加入回歸錯誤切片,并根據步驟S4)中語句分類將其需要進行切片分析的依賴語句及對應語句加入切片分析隊列,結束后跳轉至步驟S6);
S9)、輸出回歸錯誤切片;
步驟S4)中分類流程包括以下步驟:
S401)、判斷軌跡中的語句是否已全部分類,若已全部分類則跳轉至步驟S407),否則跳轉至步驟S402);
S402)、迭代取出軌跡中未分類的語句,對其進行分類;
S403)、根據源代碼的分類,判斷該語句是否為修改的語句,若為修改的語句則標記為修改導致不同的語句并跳轉至步驟S401),否則跳轉至步驟S404);
S404)、根據軌跡對應結果,判斷該語句是否有對應語句,若沒有對應語句則將該語句標記為流不同的語句并跳轉至步驟S401),否則跳轉至步驟S405);
S405)、根據語句包含的變量值信息,判斷該語句與對應語句中包含的變量值是否相同,如果至少包含一個變量值不相同則將該語句標記為值不同的語句并跳轉至步驟S401),否則跳轉至步驟S406);
S406)、將該語句標記為一致的語句并跳轉至步驟S401);
S407)、軌跡中的語句分類結束,返回。
2.根據權利要求1所述的基于切片模型的程序回歸錯誤定位方法,其特征在于,步驟S1)中源代碼重排的過程包括以下步驟:
S101)、根據兩個版本程序的源代碼,計算出兩個版本程序源代碼的不同;
S102)、根據計算出的兩個版本程序源代碼的不同之處,將兩個版本程序源代碼中的每條語句分為兩類:完全相同的語句、修改的語句;
S103)、在不改變程序語句執行順序的基礎上,對兩個版本程序的源代碼進行重排,使完全相同的語句具有相同的行號,修改的語句與空行對應;
S104)、輸出源代碼重排之后的兩個版本待測程序源代碼作為新的待測程序。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西安交通大學,未經西安交通大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610368555.0/1.html,轉載請聲明來源鉆瓜專利網。





