Counterexample Test Generation for Incidental Invariant Removal

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Automatic likely invariant (LI)-detection tools falsely detect incidental invariants due to inadequate test suites, misleading software developers and hindering software development and maintenance.

Innovation Solution

A system and method that generates counterexample tests using fuzzing, program-analysis, and heuristic-search-based techniques to validate and remove incidental invariants from the list of likely invariants, providing a likelihood score for unbreakable invariants and ranking them for developer feedback.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If an LI-detection tool is used to infer dynamic properties from test executions, then the tool can help developers check testing sufficiency and generate dynamic assertions, but the tool falsely detects incidental invariants that mislead developers

Engineering Contradiction:
Improveaccuracy of invariant detectionVSAvoidfalse detection of incidental invariants
Core Design Contradiction:
ReliabilityVSObject-generated harmful factors

Solution Approach 1:

The system performs preliminary actions by generating counterexample tests before finalizing invariant detection results. The counterexample generation module creates tests specifically designed to break detected invariants, and if such counterexamples are found, the invariants are discarded before being presented to developers, thus preventing false detections from misleading them

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system converts the harmful effect of incidental invariants into a benefit by using the detected invariants as targets for counterexample generation. The false invariants that would normally mislead developers are instead used to generate counterexample tests, which then serve to validate and refine the invariant detection process, improving overall reliability

Inventive Principle:
Principle #22Blessing in disguise (Convert harm into benefit)

2Measurement precision

If a test suite is designed to cover specific patterns (e.g., age range 13-19), then the LI-detection tool can infer properties from observed executions, but the tool detects incidental invariants specific to that test suite rather than true system invariants

Engineering Contradiction:
Improveprecision of inferred propertiesVSAvoidgeneralizability of invariants
Core Design Contradiction:
Measurement precisionVSAdaptability or versatility

Solution Approach 1:

The system implements feedback by using the inferred invariants to guide counterexample test generation, which then feeds back into the invariant detection process. The counterexample results inform whether detected invariants are genuine or incidental, allowing the system to refine its detection accuracy and distinguish between test-specific patterns and true system invariants

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The system performs excessive action by generating multiple counterexample tests beyond what would be minimally required. This excessive testing approach ensures thorough validation of each detected invariant, allowing the system to confidently distinguish between incidental invariants tied to specific test patterns and true invariants that hold across diverse executions

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS11249888B1System and method for generating counterexample tests of incidental invariants
Publication Date: 2022.02.15 GENESEE VALLEY INNOVATIONS LLC
  • US11249888B1 patent drawing
  • US11249888B1 patent drawing
  • US11249888B1 patent drawing

AI summary

One embodiment provides a system and method for identifying invariants in a software system. During operation, the system executes a test suite comprising a plurality of tests associated with the software system to output a list of likely invariants in the software system, and performs a test-generation operation attempting to generate counterexample tests for the likely invariants. In response to a counterexample test being successfully generated for a first likely invariant, the system removes the first likely invariant from the list of likely invariants and adds the successfully generated counterexample test to the test suite.