Automated Software Repair Using Augmented Test Oracles

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improvefault detection accuracyVSAvoidprocessing time
Core Design Contradiction:
Measurement precisionVSLoss of time

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.

Inventive Principle:
Principle #1Segmentation

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.

Inventive Principle:
Principle #3Local quality

2Reliability

If multiple test oracles are generated for each fault location, then repair verification accuracy improves, but system complexity increases

Engineering Contradiction:
Improverepair verification accuracyVSAvoidtest suite complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

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.

Inventive Principle:
Principle #10Preliminary action

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Measurement precision

If fault locations are identified in entire software programs, then comprehensive fault detection improves, but processing requirements increase

Engineering Contradiction:
Improvefault location accuracyVSAvoidcomputational resources
Core Design Contradiction:
Measurement precisionVSUse of energy by moving object

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.

Inventive Principle:
Principle #1Segmentation

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.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS10180897B2Automated software program repair
Publication Date: 2019.01.15 FUJITSU LTD
  • US10180897B2 patent drawing
  • US10180897B2 patent drawing
  • US10180897B2 patent drawing

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.