Interactive Software Repair via Human-Generated Test Oracles

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Automated software repair systems often produce incorrect repairs due to incomplete test suites, as they primarily check if the software program passes or fails test cases without ensuring the correctness of the repairs.

Innovation Solution

The integration of human-generated test oracles with automatically generated tests to create an augmented test suite, which interactsively identifies and corrects faults by generating and testing potential repairs, ensuring the software program meets the expected behavior.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If automated repair systems are used to identify and correct faults in software programs, then the productivity of fault correction is improved, but the reliability of the repairs deteriorates due to incomplete test suites

Engineering Contradiction:
Improvefault correction efficiencyVSAvoidrepair correctness
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent combines automated repair systems with human-generated test oracles to create a hybrid approach. The automated system generates potential repairs efficiently, while human experts provide high-quality test oracles to verify correctness, thus merging the speed of automation with the reliability of human judgment.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

Human-generated test oracles serve as an intermediary between the automated repair system and the final repaired software. These oracles act as a verification layer that mediates the acceptance of repairs, ensuring that automated repairs meet human-defined correctness criteria before being deployed.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If human-generated test oracles are added to automatically generated tests, then the reliability of repair verification is improved, but the device complexity increases

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

Solution Approach 1:

The test suite is segmented into two distinct components: automatically generated tests that check basic functionality and human-generated test oracles that verify correctness against expert knowledge. This segmentation allows each component to serve its specific purpose without overwhelming complexity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Rather than requiring complete human review of all tests, the system applies human-generated oracles selectively to the most critical verification points. This partial action approach provides sufficient reliability improvement without the excessive complexity of full manual testing.

Inventive Principle:
Principle #16Partial or excessive action

3Measurement precision

If the test suite is augmented with human-provided test oracles, then the measurement precision of repair correctness is improved, but the loss of time in test execution increases

Engineering Contradiction:
Improverepair correctness detectionVSAvoidtest execution time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

Human-generated test oracles are prepared in advance and integrated into the test suite before repair verification. This preliminary action allows the system to quickly execute pre-defined correctness checks without requiring time-consuming human review during the actual repair validation process.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The augmented test suite performs self-verification using the integrated human-generated oracles. Once the oracles are established, the system automatically executes them against potential repairs without requiring ongoing human intervention, thus maintaining high measurement precision while minimizing time loss.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS10268572B2Interactive software program repair
Publication Date: 2019.04.23 FUJITSU LTD
  • US10268572B2 patent drawing
  • US10268572B2 patent drawing
  • US10268572B2 patent drawing

AI summary

In some examples, a method to interactively repair a software program using one or more automatically generated tests with human-provided test oracles may include identifying a fault location in a software program, generating a potential repair at the fault location based on a repair candidate, automatically generating a first test to test the potential repair, and generating a first query for a first test oracle based on the first test. The method may also include obtaining a response to the first query from a human, generating a first human-provided test oracle based on the first query and the obtained response to the first query, augmenting a test suite to include the first automatically generated test with the first human-provided test oracle, and testing the potential repair using the augmented test suite including the first automatically generated test with the first human-provided test oracle.