Prioritizing Microservice Resiliency Tests via Depth-First Traversal
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Microservice-based applications face challenges in resiliency testing due to their dynamic and heterogeneous nature, with existing tools being unsuitable for web/mobile-focused applications, leading to insufficient and inefficient testing processes.
Innovation Solution
A system and method for prioritizing subgraphs of an API calling graph using a depth-first traversal and systematic resilience testing algorithm to reduce redundant testing, injecting faults into network communication channels to emulate failure modes, and annotating state transition graphs to identify critical API call subgraphs for efficient testing.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If comprehensive resiliency testing is performed on all API call subgraphs, then testing coverage is improved, but testing time and resource consumption increase significantly
Solution Approach 1:
The patent segments the API call graph into multiple subgraphs and further divides each subgraph into testable units based on depth-first traversal. This segmentation allows the testing system to focus on specific portions of the API call graph rather than treating it as a monolithic entity, thereby reducing the overall testing time while maintaining comprehensive coverage through systematic traversal of all segments.
Solution Approach 2:
The patent implements a prioritization mechanism that performs resiliency testing on high-priority subgraphs first based on failure impact analysis. By performing partial testing on the most critical subgraphs initially, the system achieves acceptable testing coverage within limited time frames, with the option to expand testing to lower-priority subgraphs if time permits.
2Reliability
If resiliency testing is performed on all parent application program interfaces, then testing completeness is improved, but redundant testing increases
Solution Approach 1:
The patent performs a preliminary depth-first traversal of the API call subgraph before executing resiliency tests. During this traversal, the system identifies and marks parent APIs that have already been tested, creating a preliminary record of tested components. This preliminary action prevents redundant testing by allowing the system to skip already-tested parent APIs during the actual resiliency testing phase.
Solution Approach 2:
The patent implements a feedback mechanism where the testing system tracks which parent APIs have been tested and uses this information to adjust the testing plan dynamically. When a parent API is tested as part of one subgraph, the feedback information is stored and used to prevent re-testing of the same parent API in other subgraphs, thereby eliminating redundant testing efforts and optimizing resource utilization.
3Measurement precision
If fault injection is performed to emulate failure modes, then resiliency testing accuracy is improved, but system complexity increases
Solution Approach 1:
The patent introduces an intermediary fault injection layer that sits between the test execution engine and the actual API call subgraphs. This intermediary component is responsible for injecting faults in controlled manners to emulate various failure modes. By using this intermediary layer, the system achieves high testing accuracy without directly modifying the complex API call subgraphs, thereby isolating the complexity within the fault injection mechanism itself.
Data Source
AI summary
Techniques for automated resiliency testing systems are provided. In one example, a computer-implemented method comprises traversing, by a system operatively coupled to a processor, an application program interface call subgraph of a microservices-based application in a depth first traversal. The computer-implemented method also comprises, during the traversing, performing, by the system, resiliency testing of parent application program interfaces of the application program interface call subgraph according to a systematic resilience testing algorithm that reduces and/or eliminates redundant resiliency testing of parent application program interfaces.


