Prioritizing Microservice Resiliency Tests via Depth-First Traversal

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improvetesting coverageVSAvoidtesting time
Core Design Contradiction:
ReliabilityVSLoss of time

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.

Inventive Principle:
Principle #1Segmentation

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.

Inventive Principle:
Principle #16Partial or excessive action

2Reliability

If resiliency testing is performed on all parent application program interfaces, then testing completeness is improved, but redundant testing increases

Engineering Contradiction:
Improvetesting completenessVSAvoidtesting resources
Core Design Contradiction:
ReliabilityVSLoss of energy

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.

Inventive Principle:
Principle #10Preliminary action

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.

Inventive Principle:
Principle #23Feedback

3Measurement precision

If fault injection is performed to emulate failure modes, then resiliency testing accuracy is improved, but system complexity increases

Engineering Contradiction:
Improvetesting accuracyVSAvoidtesting system complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10169220B2Prioritizing resiliency tests of microservices
Publication Date: 2019.01.01 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10169220B2 patent drawing
  • US10169220B2 patent drawing
  • US10169220B2 patent drawing

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.