Font Size: a A A

Key Techniques Of Search-based Automatic Software Repair

Posted on:2018-07-21Degree:DoctorType:Dissertation
Country:ChinaCandidate:C WuFull Text:PDF
GTID:1318330539475102Subject:Computer application technology
Abstract/Summary:PDF Full Text Request
As a core issue of software engineering,software repair is a very expensive activity in software testing and maintenance.If software repair can be conducted automatically,it is certainly a cost-effective way in reducing the human effort and improving the software quality,so as to enhance the market competitiveness.Although there are many methods and techniques for automatic software repair,they are preliminary,and their efficiency and ability need to be improved.Combining existing techniques of software testing and maintenance,this dissertation applies search-based software engineering to automatic software repair,and proposes a framework for automatically repairing software.In the suggested framework,this issue focuses on following problems: fault localization,selective-form regression testing,automatic program repair,and regression testing.To solve the above problems,the corresponding search-based methods are proposed by using the specific domain knowledge of the problems.The main research achievements include:(1)For a software with open source code which is developed in different means and has a large scale of program,a variable granularity method of fault localization is proposed.In the method,the coarse granularity block is first constructed based on the program's structure information,and the program is partitioned into some block equivalent classes according to the executive relationship of blocks.Then,the block equivalence classes with the largest possibility of faults are first sought based on the suspiciousness score of a block equivalence class.Furtherly,the statement blocks which most likely contain faults are selected based on the suspiciousness score of a statement block belonging to the equivalence classes above.The proposed method reduces the number of statement blocks to be examined,which is beneficial to improving the efficiency of fault localization.(2)For the problem of selective retesting,a new method of path selection for test selection is proposed.On the premise of branch coverage criterion,first,taking a set consisting in several paths as the decision variable,the least number of paths,the largest number of covered branches,and the least number of uncovered paths as the objectives,a 3-objective optimization model for the problem of selecting paths is established.Then,a strategy of evaluating an individual based on the importance of an objective is designed when solving the above model using genetic algorithm.Finally,test data required to generate is determined according to the relation between existing test data and the selected paths.The selected paths based on the proposed method cover more branches and generate less number of test data.Conclusively,the proposed method cost less time.(3)For automatically repairing program,a multi-objective optimization model is built and an improved genetic programming method for generating an effective patch is offered.In the proposed method,the procedure of repairing program is divided into a multi-stage repair process for buggy entities based on the information of fault localization,and a multi-objective optimization model with constrains for repairing buggy entities is constructed by the consistent measurement and constraint function.Then,the proposed evaluating strategy is applied to guide the evolution process based on the existing methods of patch generation,and make efforts in reducing the execution times of test data so as to reduce the execution cost of the programs in repairing.The proposed method improves the efficiency of repairing program and the probability of obtaining a correct patch.(4)A new effective evolutionary generation approach of test data based on path correlation for regression testing is proposed.In the method,the target paths are sorted according to the correlation matrix between paths and nodes,and a novel mathematical model is built for generating regression test data that cover affected paths based on the matrix.Then,when solving the above model using genetic algorithms,test data that have traversed the existing target paths are coded and employed to replace a part of individuals of the current population.The proposed method can improve the efficiency of generating test data by making full use of existing test information.Results of this study not only provide a new idea for automatic software repair,but also enrich the theoretical knowledge of search-based software engineering,and improve the efficiency and ability of software repair from different aspects,thus ensured the quality of the software and improved software reliability,therefore,have important theoretical and practical values.
Keywords/Search Tags:automatic software repair, software testing and maintenance, searchbased software engineering, fault localization, regression testing
PDF Full Text Request
Related items