Embedded Fault Injection Instruction Sets for Software Testing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Software testing, particularly exception path testing, is challenging due to complications in reproducing exception paths, which often require code modification and manual intervention, leading to difficult test script creation and maintenance, with testers lacking intimate knowledge of the technology and code, and developers lacking tools for automation.

Innovation Solution

A software manipulation framework that allows developers to embed instruction sets for simulating faults directly into software products, enabling test engineers to extract and compile these instructions into scripts, which are executed at runtime to induce specific error paths, reducing the need for manual script writing and maintaining fault injection routines.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If manual fault injection is used to test exception paths, then testing coverage is improved, but test script creation and maintenance complexity increases

Engineering Contradiction:
Improvetesting coverageVSAvoidtest script creation and maintenance
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system enables self-service fault injection by embedding instruction sets directly in the software code that can be automatically extracted and executed. Testers don't need to manually create complex injection scripts - the system automatically locates and executes the embedded instructions at specified runtime points, eliminating the need for complicated test script maintenance while maintaining comprehensive exception path coverage

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

Embedded instruction sets act as intermediaries between the testing framework and the software code. These instructions are embedded within the software during compilation but remain invisible during normal execution. When testing is needed, the framework extracts and executes these embedded instructions to inject faults, serving as a mediator that simplifies the testing process while maintaining precise control over exception path execution

Inventive Principle:
Principle #24Intermediary (Mediator)

2Measurement precision

If code modification is performed to induce faults, then fault simulation accuracy is improved, but software recompilation is required

Engineering Contradiction:
Improvefault simulation accuracyVSAvoidrecompilation time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

Fault injection instructions are embedded in the software code during the original compilation process, before testing begins. The instructions are prepared in advance and stored within the binary, so when testing is needed, the system simply extracts and executes these pre-prepared instructions without requiring any code modification or recompilation, thus maintaining high fault simulation accuracy while eliminating time loss

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system creates a copy of the fault injection functionality by embedding instruction sets that replicate the effect of code modification. Instead of actually modifying the source code and recompiling, the embedded instructions create a virtual copy of the modified state at runtime, achieving the same fault simulation accuracy without the overhead of recompilation

Inventive Principle:
Principle #26Copying

3Productivity

If embedded instruction sets are executed at runtime, then fault simulation efficiency is improved, but performance impact may occur

Engineering Contradiction:
Improvefault simulation efficiencyVSAvoidperformance impact
Core Design Contradiction:
ProductivityVSUse of energy by moving object

Solution Approach 1:

The system implements partial action by only extracting and executing embedded fault injection instructions when explicitly requested for testing purposes. During normal operation, these embedded instructions remain dormant and are not executed, minimizing performance impact. When testing is needed, only the specific instructions relevant to the test case are extracted and executed, not the entire instruction set, thus improving fault simulation efficiency while controlling performance overhead

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The embedded instruction sets are designed with local quality by making them context-specific and location-aware. Each instruction is embedded at a specific location in the code and only activated when the execution flow reaches that location during testing. This localized approach ensures that fault injection only occurs where and when needed, minimizing unnecessary performance impact while maintaining high simulation efficiency at the targeted locations

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10229029B2Embedded instruction sets for use in testing and error simulation of computing programs
Publication Date: 2019.03.12 ORACLE INT CORP
  • US10229029B2 patent drawing
  • US10229029B2 patent drawing
  • US10229029B2 patent drawing

AI summary

Systems and methods for allowing software developers and the like to embed various different types of code and/or data manipulations into a software product. The embedded code manipulation instructions may be accessed and executed by test engineers or other users to induce fault paths and the like in the software product at run-time for analyzing the software's response to the induced fault paths. For instance, a user application of a software manipulation framework may expose a list of all of the instruction sets to a test engineer or the like in conjunction with one or more testing procedures to be performed on the software. Unless accessed by the test engineer, all of the testing probes may be represented by noops or placeholders at runtime to limit performance impact on the software.