Context-Aware Fault Injection for Precise Software Testing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing fault-injection frameworks are limited in their ability to dynamically inject faults in complex software systems, particularly in cloud-based environments, lacking control over fault location and type, leading to ineffective testing of application logic.

Innovation Solution

A context-aware fault injection system that intercepts calls in a software component, uses historical data to determine fault locations and types, and selectively injects faults based on context information, allowing for controlled and flexible testing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If static fault-injection methods are used, then fault injection can be performed, but control over fault location and type is lost

Engineering Contradiction:
Improvefault injection capabilityVSAvoidfault location control
Core Design Contradiction:
Ease of operationVSMeasurement precision

Solution Approach 1:

The system transitions from static compile-time fault injection to dynamic runtime fault injection. The fault injection framework monitors execution context, call stacks, and system state to determine appropriate fault locations and types dynamically, allowing precise control over where and what faults are injected based on actual runtime conditions.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system uses feedback from execution context, historical fault data, and system state to make intelligent decisions about fault injection. By analyzing call stacks, component interactions, and previous fault patterns, the framework determines optimal fault locations and types that reflect real-world failure scenarios rather than random injections.

Inventive Principle:
Principle #23Feedback

2Ease of operation

If random low-level faults are injected, then fault injection can be performed, but effectiveness in testing application logic is reduced

Engineering Contradiction:
Improvefault injection capabilityVSAvoidtesting effectiveness
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

Instead of injecting uniform random faults, the system applies different fault types and injection strategies based on local context. Each fault injection decision considers the specific component, call stack, execution state, and historical data to select appropriate fault locations and types that are relevant to testing application logic and business rules.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The system dynamically changes fault parameters (location, type, severity) based on execution context and historical analysis. Rather than using fixed random parameters, the framework adjusts fault characteristics to match real-world failure patterns and target specific application logic paths that need validation.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If faults are injected repeatedly in the same code path, then fault injection can be performed, but coverage of other code paths is limited

Engineering Contradiction:
Improvefault injection efficiencyVSAvoidcode path coverage
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system implements periodic variation in fault injection targets by analyzing execution patterns and deliberately selecting different code paths across test iterations. Using call stack analysis and historical fault data, the framework ensures systematic coverage of multiple code paths rather than repeating injections in the same location, improving overall testing coverage.

Inventive Principle:
Principle #19Periodic action

Data Source

PatentUS20250298709A1Fault injection based on context information
Publication Date: 2025.09.25 ORACLE INT CORP
  • US20250298709A1 patent drawing
  • US20250298709A1 patent drawing
  • US20250298709A1 patent drawing

AI summary

A method can include intercepting a call invoked by a component-being-tested (CBT). The method can include determining context information for the call. The context information including information identifying a fault location associated with the call and information identifying arguments for the call. The method can include performing processing to determine whether to inject a fault at the fault location associated with the call, the processing comprising determining if a fault is to be injected for the call and the context information. The method can include, in response to determining that a fault is to be injected, identifying a particular fault to be injected and injecting the particular fault at the fault location during execution of the CBT. The method can include, in response to determining that a fault is not to be injected for the call, invoking a library implementation corresponding to the call during execution of the CBT.