Fault-Enabled SDK Generation for Network Failure Testing
Find Innovative SolutionsGenerate 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
Engineering 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
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
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
2Adaptability or versatility
If developers create separate application programs for testing, then fault simulation capability improves, but the maintenance burden and development time increase
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
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
3Reliability
If faults are simulated in shared system resources, then comprehensive fault testing improves, but isolation of specific application faults becomes difficult
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
Data Source
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.


