Automated Software Repair Using Augmented Test Oracles
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Automated software repair systems often fail to effectively identify and correct faults in software programs, as they do not thoroughly test every aspect, leading to potential incorrect modifications that may not be detected during testing.
Innovation Solution
The method involves augmenting test suites with multiple test oracles based on observed software behavior at specific fault locations, running these augmented test suites with repair candidates, and prioritizing repairs based on the failure rates of the test oracles to improve the efficacy of automated software program repair.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If automated repair systems test every aspect of software programs, then repair accuracy improves, but processing time and computational resources increase significantly
Solution Approach 1:
The patent segments the testing process by dividing the software program into multiple units and identifying specific fault locations within those units. Test oracles are then generated specifically for these identified fault locations rather than testing the entire program, thereby reducing processing time while maintaining detection accuracy at critical points.
Solution Approach 2:
The patent applies local quality by concentrating testing resources on specific fault locations where defects are most likely to occur. Multiple test oracles are generated targeted at these specific locations, providing intensive local verification rather than uniform distributed testing, which optimizes the balance between detection accuracy and processing efficiency.
2Reliability
If multiple test oracles are generated for each fault location, then repair verification accuracy improves, but system complexity increases
Solution Approach 1:
The patent performs preliminary actions by first identifying fault locations in software units before generating test oracles. This preliminary fault location identification allows the system to create targeted test oracles only where needed, improving verification accuracy while avoiding the complexity of generating oracles for the entire program.
Solution Approach 2:
The patent introduces test oracles as intermediary components between the fault locations and the verification process. These oracles act as mediators that specifically check whether repairs at identified fault locations are correct, providing high verification accuracy without requiring complex comprehensive testing of the entire system.
3Measurement precision
If fault locations are identified in entire software programs, then comprehensive fault detection improves, but processing requirements increase
Solution Approach 1:
The patent segments the software program into multiple discrete units and performs fault location identification separately for each unit. This segmentation reduces the computational burden on any single processing operation while maintaining comprehensive fault detection across the entire program through the aggregation of results from all units.
Solution Approach 2:
The patent applies partial action by focusing computational resources on identifying fault locations only in units that are likely to contain faults or that are critical to system operation, rather than uniformly analyzing every line of code in the entire program. This approach maintains detection accuracy for critical faults while reducing overall processing requirements.
Data Source
AI summary
According to an aspect of an embodiment, a method may include identifying a fault location of a fault in a software program using a test suite. The method may further include implementing, in the software program, a repair candidate for the fault. In addition, the method may include augmenting the test suite with a plurality of test oracles that are based on observed behavior of the software program and that correspond to the fault location. Moreover, the method may include running the augmented test suite with respect to the software program with the implemented repair candidate. The method may also include prioritizing the repair candidate as a repair of the software program based on a failure rate of the plurality of test oracles with respect to running the augmented test suite.


