[發明專利]一種基于測試用例構建決策樹的程序條件語句自動化修復系統及方法有效
| 申請號: | 201710769700.0 | 申請日: | 2017-08-31 |
| 公開(公告)號: | CN107577603B | 公開(公告)日: | 2019-11-12 |
| 發明(設計)人: | 劉譽臻;張震宇 | 申請(專利權)人: | 中國科學院軟件研究所 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京科迪生專利代理有限責任公司 11251 | 代理人: | 安麗 |
| 地址: | 100190 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 測試 構建 決策樹 程序 條件 語句 自動化 修復 系統 方法 | ||
本發明涉及一種基于測試用例構建決策樹的程序條件語句自動化修復系統及方法,針對程序的條件語句,從測試用例集的執行信息產生用于訓練的數據集,引入決策樹進行監督學習的方法產生補丁代碼進行修復,并且利用一定的搜索策略克服了錯誤的條件語句多次執行的困難。通過本發明進行自動化修復,可達到較高的修復成功率和較快的執行效率,同時學習訓練和生成補丁的核心模塊具有很高的通用性和魯棒性,能夠適用于多種程序語言和環境。
技術領域
本發明涉及一種基于測試用例構建決策樹的程序條件語句自動化修復系統及方法,屬于軟件測試與調試技術領域。
背景技術
軟件測試和調試是保證軟件質量的重要環節,也是最耗時和最困難的工作之一。對程序進行自動化的測試能夠有效提高軟件開發效率和質量,而對程序做自動化修復能夠在非常節約人力成本的情況下讓程序錯誤得到最大限度及時有效的修正。因此研究人員開始關注并提出了很多自動化生成補丁修復程序的思路與方法。
程序的自動化修復可以從很多角度展開,例如可以在源代碼級別或者中間代碼甚至可執行代碼級別,相應的也有靜態的修復和動態運行時進行修復,有針對特定類型錯誤的也有面向通用程序和通用錯誤的。目前較常用的分類是基于約束的程序修復與基于測試用例集的程序修復,本發明提出的方法屬于后者。基于測試用例的修復首要目標是在發現有失敗測試用例即發現了程序錯誤之后,對源代碼進行修改以使測試用例全部通過。其基本假設是測試用例相對足夠充分,且測試用例的產生遵循了一定的規則例如等價類劃分、邊界值、分支覆蓋等,這樣一套完善的測試用例集足夠將程序的預期行為都覆蓋到并且做出隱含的描述,因此通過了全部測試用例可以認為等價于在各種輸入下都可正常執行。
目前基于測試用例的自動化修復主要有基于搜索的方法、基于語義分析和約束求解的方法以及基于先驗知識和特征的方法等。這些方法仍往往面臨一些困難,例如搜索空間巨大和條件組合爆炸問題、約束求解器的性能和功能的限制以及修復方法的魯棒性和通用性問題等。
發明內容
本發明技術解決問題:克服現有技術的不足,提供一種基于測試用例構建決策樹的程序條件語句自動化修復系統及方法,通過本發明進行自動化修復,可達到較高的修復成功率和較快的執行效率,同時學習訓練和生成補丁的核心模塊具有很高的通用性和魯棒性,能夠適用于多種程序語言和環境。
本發明技術解決方案:一種基于測試用例構建決策樹的程序條件語句自動化修復系統,全自動的進行錯誤定位修復和驗證無需人工干預,無需任何先驗知識和人的經驗完全基于測試用例集的數據進行學習,對條件語句進行翻轉來獲得執行并獲得訓練數據集,利用決策樹進行訓練并產生修復代碼,利用決策樹的剪枝和訓練集搜索過濾算法。
所述系統包括:可疑條件語句定位模塊,程序預處理模塊,訓練數據收集模塊,模型學習和補丁生成模塊,補丁驗證和回歸測試模塊;其中:
可疑條件語句定位模塊:根據測試用例集,利用程序插樁工具,運用基于程序覆蓋的錯誤自動定位技術針對程序源代碼中的條件語句按照可疑度由高到低進行排序,順次作為可疑條件語句輸入后續模塊;
程序預處理模塊:對給定的可疑條件語句所在行,對條件表達式布爾值進行翻轉獲得程序原版本和變異版本程序,并收集在兩個版本程序,即程序原版本和變異版本程序的當前位置中可訪問到的程序變量列表,程序變量列表包括靜態變量,全局變量,局部變量,常數定義和函數參數;利用插樁工具插入獲取這些變量運行時狀態和條件表達式結果值的語句,得到插樁后的兩個版本程序源代碼供訓練數據收集模塊產生訓練數據集;
訓練數據收集模塊:對程序預處理模塊中所述兩個版本程序分別執行測試用例集,收集每個變量在兩個版本程序中執行每個測試用例的運行時值計入日志,過濾選取每個測試用例在兩個版本中僅有一個為成功另一為失敗的用例,并收集這些用例下兩版本程序中成功的一方所打印出的變量值作為訓練數據集;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院軟件研究所,未經中國科學院軟件研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710769700.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種可貼標取件的模內貼標系統
- 下一篇:一種平穩的高精度自動貼合標簽裝置





