CN107643905A - 一种面向软件版本一致性缺陷的自动修复方法 - Google Patents
一种面向软件版本一致性缺陷的自动修复方法 Download PDFInfo
- Publication number
- CN107643905A CN107643905A CN201710848984.2A CN201710848984A CN107643905A CN 107643905 A CN107643905 A CN 107643905A CN 201710848984 A CN201710848984 A CN 201710848984A CN 107643905 A CN107643905 A CN 107643905A
- Authority
- CN
- China
- Prior art keywords
- bug
- version
- source code
- configuration
- software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种面向软件版本一致性缺陷的自动修复方法。本发明将bug描述、源代码、相关配置文件作为输入数据,并提取bug描述中的关键信息,用自然语言处理工具转化为特征向量,然后在bug的源代码中进行向前切片,再用基于统计计算的程序谱故障定位方法对源代码进行定位,再分析定位好的源代码与提取的信息对bug进行修复。本发明克服了对于软件产品版本问题的修复大多由开发人员手动修改与更新,耗时又耗力的缺陷。本发明实行程序语言版本问题修复和系统所属的配置版本问题修复,有效地提高软件维护的效率,减少了成本与人力。
Description
技术领域
本发明涉及软件缺陷修复领域,特别涉及一种面向软件版本一致性缺陷的自动修复方法。
背景技术
随着软件规模的日益增长,软件升级越来越频繁,程序bug是软件开发中不可避免的产物,其中软件版本不一致的问题越来越突出。其产生的原因可以追溯到软件开发的每个阶段,包括维护阶段,演化阶段等。为了尽快地修复软件bug,程序员必须花费大量的时间和精力查找导致软件失效的原因,并发布补丁。大量的历史数据表明,超过45%的软件开发成本用于定位和修复bug的过程中,且定位和修复程序bug是软件工程问题的核心内容。为了降低修复过程中的时间和人力成本,自动程序修复方法应运而生。
自动程序修复方法依据给定的程序问题,自动生成程序补丁,进而修复程序中的错误。修复中产生的程序补丁既可以自动添加到程序中,也可以用于指导开发者继续改进代码。根据自动程序修复方法的依据,产生了很多该领域的技术。
在本发明之前,这些技术没有从版本一致性角度来修复与版本相关的bug,目前软件产品不断的更新换代,对软件的编写语言和产品中的配置版本的要求不断提高,对于软件产品版本问题的修复大多由开发人员手动修改与更新,耗时又耗力。
随着软件产品的不断更新,软件版本问题越来越突出需要解决。基于面向版本一致性的自动修复方法从bug描述、bug源代码、bug所属系统的相关配置文件出发,将版本修复问题主要分为两类:修复程序语言版本和修复系统中的配置版本这两个问题。该方法从新的方向--软件产品中出现的版本不一致问题出发,对这些bug进行自动修复,减少开发人员的时间和精力。
发明内容
本发明的目的就在于克服上述缺陷,研制一种面向软件版本一致性缺陷的自动修复方法。
本发明的技术方案是:
一种面向版本一致性的自动修复方法,其主要技术特征在于如下步骤:
(1)对于一个与版本相关的bug,将该bug的描述,源代码以及包含版本号说明的相关配置文件作为本发明的输入数据;
(2)分析bug描述,提取关键信息,如配置名、文件名、变量名等,并将提取的关键信息用自然语言处理工具转化成特征向量;
(3)根据步骤(2)提取的关键信息,在bug的源代码中进行向前切片,再用基于统计计算的程序谱故障定位方法对源代码进行定位。
(4)分析已经定位的源代码上下文,这里分为两种修复可能:程序语言版本修复和配置版本修复;bug所属的系统的程序语言的版本出错,查看输入数据中的相关配置文件,读取配置文件,提取关键信息“versionName”对应的版本号,根据文件中配置的版本号进行修复;bug所属系统的其他配置版本出错:若bug描述中涉及到配置的局部变量在分配前引用,则将该配置变量设置为null,并修改配置的版本至最新;若bug描述涉及到配置的改进,则将该配置模块加载重定向到新版本;
(5)用测试用例对修复结束的软件进行测试;若测试成功,则修复成功,输出bug修复片段;若测试失败,则回到步骤(2)重新进行修复。
本发明的优点和效果在于从bug的版本问题出发,分析bug的描述和源代码,将版本问题的bug分为两类:程序语言版本问题修复和系统所属的配置版本问题修复,该方法可有效地提高软件维护的效率,减少了成本与人力。
主要有如下一些优点:
(1)本发明针对具体的软件版本缺陷提出了相应的技术方案,解决了这方面的问题,当前没有专门针对此类型的技术。
(2)该技术是完全自动化的修复,可以提高缺陷修复的效率。
(3)该技术能够解决大量的关于版本缺陷的软件问题,帮助开发人员减少时间和成本,同时扩展了缺陷自动修复的范围。
附图说明
图1——本发明基于版本一致性的自动修复的流程示意图。
图2——本发明程序错误定位流程示意图。
图3——本发明基于统计的程序谱定位图示意图。
具体实施方式
本发明的技术思路是:
本发明的方法是自动修复程序时,图1:将bug描述、源代码、相关配置文件作为输入数据,并提取bug描述中的关键信息,用自然语言处理工具转化为特征向量,然后在bug的源代码中进行向前切片,再用基于统计计算的程序谱故障定位方法对源代码进行定位,再分析定位好的源代码与提取的信息对bug进行修复。
下面具体说明本发明。
步骤如下:
(1)对于一个与版本相关的bug,将该bug的描述,源代码以及包含版本号说明的相关配置文件作为本发明的输入数据。例如bug 680871的描述是:“Force an early failurewhen check-sync-dirs.py use python2”,相关配置文件是autoconf.mk这个文件;bug1048270的描述是:“Blobber exception:″UnboundLocalError:local variable′blob_url′referenced before assignment″”等,将这些作为输入数据。
(2)分析bug描述,提取关键信息,如配置名、文件名、变量名等,并将提取的关键信息用自然语言处理工具转化成特征向量。例如:bug 680871的描述为“Force an earlyfailure when check-sync-dirs.py use python2”,提取的关键信息是:“check-sync-dirs.py”,“python”,“python2”;bug 1355015的描述为“Investigate why audiostreamfail to open the first time 3.5%of the time in 52”提取的关键信息是:audio stream。再把这些关键信息用自然语言工具转化为特征向量。
(3)根据步骤(2)提取的关键信息,整体程序定位流程图见图2:在bug的源代码中进行向前切片,再用基于统计计算的程序谱故障定位方法图3:用源代码通过的测试用例和未通过的测试用例在代码片段上进行测试,再用程序谱计算公式定位出怀疑率为前20%的程序语句,最后再定位出最终的语句。例如:bug 680871中,根据提取关键信息“check-sync-dirs.py”,“python”,用向前切片技术得到含有“check-sync-dirs.py”,“python”的语句,再用基于统计计算的程
序谱故障定位方法定位到源代码中的第281句:
“@$(python)$(TOPSRCDIR)/js/src/config/check-sync-dirs.py$(TOPSRCDIR)/js/src/bu ild$(TOPSRCDIR)/BUILD”。
步骤(3)中的程序谱计算公式为:
其中公式中的failed(s)和passed(s)分别表示语句失败执行和成功执行的次数,totalpassed和totalfailed分别表示测试通过和未通过的测试用例数。
(4)分析已经定位的源代码上下文,这里分为两种修复可能,图1:程序语言版本修复和配置版本修复。1.bug所属的系统的程序语言的版本出错,查看输入数据中的相关配置文件,读取配置文件,提取关键信息“versionName”对应的版本号,根据文件中配置的版本号进行修复;例如:bug 680871经过分析是程序语言版本出错,则查看autoconf.mk这个文件中配置的是哪一个Python版本,则将源代码中的Python修改为该版本。2.bug所属系统的其他配置版本出错:若bug描述中涉及到配置的局部变量在分配前引用,则将该配置变量设置为null,并修改配置的版本至最新;例如,bug 1048270,描述为“Blobber exception:″UnboundLocalError:local variable′blob_url′referenced before assignment″”,将blob_url设置为null,并将′blobuploader==1.2.1′改为′blobuploader==1.2.2′。再例如,bug 1355015经过分析是AUDIOSTREAM这个配置版本出错,则将该配置的版本号改为最新版本60。若bug描述涉及到配置的改进,则将该配置模块加载重定向到新版本。例如bug1312433的描述为“Improvements for balrog.submitter.api”涉及到配置的改进,则将模块加载重定向到新版本,安装为′balrogclient′,balrogclient==0.0.1。部分修复示意表如下:
(5)用测试用例对修复结束的软件进行测试。若通过测试用例,表示测试成功,则修复成功,输出bug修复片段;若未通过测试用例,表示测试失败,则回到步骤(2)重新进行修复。
Claims (1)
1.一种面向软件版本一致性缺陷的自动修复方法,其特征在于如下步骤:
(1)对于一个与版本相关的bug,将该bug的描述,源代码以及包含版本号说明的相关配置文件作为本发明的输入数据;
(2)分析bug描述,提取关键信息,如配置名、文件名、变量名等,并将提取的关键信息用自然语言处理工具转化成特征向量;
(3)根据步骤(2)提取的关键信息,在bug的源代码中进行向前切片,再用基于统计计算的程序谱故障定位方法对源代码进行定位。
(4)分析已经定位的源代码上下文,这里分为两种修复可能:程序语言版本修复和配置版本修复;bug所属的系统的程序语言的版本出错,查看输入数据中的相关配置文件,读取配置文件,提取关键信息“versionName”对应的版本号,根据文件中配置的版本号进行修复;bug所属系统的其他配置版本出错:若bug描述中涉及到配置的局部变量在分配前引用,则将该配置变量设置为null,并修改配置的版本至最新;若bug描述涉及到配置的改进,则将该配置模块加载重定向到新版本;
(5)用测试用例对修复结束的软件进行测试;若测试成功,则修复成功,输出bug修复片段;若测试失败,则回到步骤(2)重新进行修复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710848984.2A CN107643905B (zh) | 2017-09-13 | 2017-09-13 | 一种面向软件版本一致性缺陷的自动修复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710848984.2A CN107643905B (zh) | 2017-09-13 | 2017-09-13 | 一种面向软件版本一致性缺陷的自动修复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107643905A true CN107643905A (zh) | 2018-01-30 |
CN107643905B CN107643905B (zh) | 2021-01-12 |
Family
ID=61112123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710848984.2A Active CN107643905B (zh) | 2017-09-13 | 2017-09-13 | 一种面向软件版本一致性缺陷的自动修复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107643905B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918100A (zh) * | 2019-01-25 | 2019-06-21 | 扬州大学 | 一种面向版本缺陷的基于修复模式的修复推荐方法 |
CN113703824A (zh) * | 2021-08-26 | 2021-11-26 | 上海德拓信息技术股份有限公司 | 一种多项目软件质量修复方法与系统 |
CN115576851A (zh) * | 2022-11-21 | 2023-01-06 | 北京航空航天大学 | 一种结合动态切片的软件多故障聚类定位方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572474B (zh) * | 2015-01-30 | 2017-09-29 | 南京邮电大学 | 一种基于动态切片的轻量级错误定位技术实现方法 |
CN105608232B (zh) * | 2016-02-17 | 2019-01-15 | 扬州大学 | 一种基于图形数据库的bug知识建模方法 |
CN106095663B (zh) * | 2016-05-26 | 2017-06-27 | 西安交通大学 | 基于切片模型的程序回归错误定位方法 |
-
2017
- 2017-09-13 CN CN201710848984.2A patent/CN107643905B/zh active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918100A (zh) * | 2019-01-25 | 2019-06-21 | 扬州大学 | 一种面向版本缺陷的基于修复模式的修复推荐方法 |
CN109918100B (zh) * | 2019-01-25 | 2022-05-17 | 扬州大学 | 一种面向版本缺陷的基于修复模式的修复推荐方法 |
CN113703824A (zh) * | 2021-08-26 | 2021-11-26 | 上海德拓信息技术股份有限公司 | 一种多项目软件质量修复方法与系统 |
CN115576851A (zh) * | 2022-11-21 | 2023-01-06 | 北京航空航天大学 | 一种结合动态切片的软件多故障聚类定位方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107643905B (zh) | 2021-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9703694B2 (en) | Techniques for testing software | |
CN107643905A (zh) | 一种面向软件版本一致性缺陷的自动修复方法 | |
US20090204924A1 (en) | Method, system and computer program product for failure analysis implementing automated comparison of multiple reference models | |
CN105446878A (zh) | 一种持续的程序自动化测试方法 | |
US20070083859A1 (en) | Software manufacturing factory | |
CN101944059A (zh) | 计算机软件崩溃信息的自动分析方法和装置 | |
CN111488136A (zh) | 持续集成和持续交付方法、系统、设备及存储介质 | |
US9921905B2 (en) | Resource integrity during partial backout of application updates | |
CN112131116B (zh) | 一种嵌入式软件自动化回归测试方法 | |
CN110910081A (zh) | 基于实验室信息管理系统的工作流配置实现方法和系统 | |
CN109918100B (zh) | 一种面向版本缺陷的基于修复模式的修复推荐方法 | |
US20160085659A1 (en) | Base Line for Code Analysis | |
CN114647572A (zh) | 用于软件应用组件测试的方法和系统 | |
CN107480050B (zh) | 一种自动测试更新包的测试方法 | |
US20110145652A1 (en) | Computer-Implemented Systems And Methods For An Automated Application Interface | |
WO2017201853A1 (zh) | 基于切片模型的程序回归错误定位方法 | |
US20210110284A1 (en) | Method and system for automatic error diagnosis in a test environment | |
EP1868099A1 (en) | Bug management tool | |
JP2013218664A (ja) | ソフトウェア実行結果の成果物収集装置 | |
US11645045B2 (en) | Efficient defect location in new code versions | |
CN109451003B (zh) | 一种广告机自动解决系统问题缺陷的方法 | |
CN115470647A (zh) | 一种持续集成流水线的优化方法 | |
Callaghan et al. | Mining Bug Repositories for Multi-Fault Programs | |
US20130007528A1 (en) | Using reverse time for coverage analysis | |
CN112052175A (zh) | 一种自动化测试应用程序的方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |