Fault-Enabled SDK Generation for Network Failure Testing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Testing applications for resilience against various types of faults has become complex due to the difficulty in simulating faults that occur in networked systems, especially in cloud environments, where developers lack comprehensive understanding of underlying infrastructure and shared resources, leading to challenges in isolating faults without affecting other software.

Innovation Solution

A fault-enabled software development kit (SDK) generator that automatically injects faults into the SDK based on API methods, simulating faults and logging error frequencies to enable controlled testing without modifying application code.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If developers manually inject faults in application program code, then testing coverage for known faults improves, but the complexity and time required for testing increases significantly

Engineering Contradiction:
Improvefault testing coverageVSAvoidtesting complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system enables self-service fault injection by allowing the application to automatically generate and inject faults into itself through the fault injection module, eliminating the need for developers to manually create fault scenarios in application code

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

A fault injection module is introduced as an intermediary component between the application and the testing framework, managing fault generation and injection automatically based on configuration parameters without requiring direct developer intervention in the application code

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If developers create separate application programs for testing, then fault simulation capability improves, but the maintenance burden and development time increase

Engineering Contradiction:
Improvefault simulation capabilityVSAvoiddevelopment efficiency
Core Design Contradiction:
Adaptability or versatilityVSEase of manufacture

Solution Approach 1:

The fault injection module is designed as a universal component that can be integrated into any application using the software framework, providing fault simulation capabilities across multiple applications without requiring separate testing programs for each

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The testing functionality is merged with the application framework by integrating the fault injection module directly into the software architecture, allowing testing capabilities to be combined with production code rather than requiring separate testing applications

Inventive Principle:
Principle #5Merging (Combining)

3Reliability

If faults are simulated in shared system resources, then comprehensive fault testing improves, but isolation of specific application faults becomes difficult

Engineering Contradiction:
Improvecomprehensive fault testingVSAvoidfault isolation difficulty
Core Design Contradiction:
ReliabilityVSDifficulty of detecting and measuring

Solution Approach 1:

The system segments fault injection capabilities by allowing configuration of specific fault types, locations, and parameters for each application, enabling isolated testing of individual faults even within shared system resources through targeted injection points

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS20250284620A1Generating fault conditions using a fault-enabled software development kit
Publication Date: 2025.09.11 MICROSOFT TECHNOLOGY LICENSING LLC
  • US20250284620A1 patent drawing
  • US20250284620A1 patent drawing
  • US20250284620A1 patent drawing

AI summary

Systems and methods are provided for automatically generating a fault-enabled software development kit (SDK) to test an application. The generating includes determining one or more faults based on codes associated with the SDK and a frequency of occurrences of faults while executing the SDK. A fault injector automatically injects the determined faults in select layers of code in the SDK and generates fault configuration data associated with the automatically injected faults in the SDK. The fault configuration data describes faults that have been injected in the fault-enabled SDK to test an application. The fault-enabled SDK tests the application without needs for modifying the application code for testing purposes. The fault-enabled SDK further provides types of faults that may be common in using the SDK without requiring application developers to have detailed understanding of internals of the SDK to test the application with simulated faults.