Continuous Testing for Distributed Microservices
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In microservice architectures, the complexity of testing and the risk of introducing breaking changes during code updates pose challenges, as traditional testing methods fail to validate the integration of multiple microservices effectively, leading to potential software failures and increased complexity in continuous delivery pipelines.
Innovation Solution
A continuous testing method that incorporates a pre-merge commit test to validate end-to-end transactions across all applicable microservices, identifying errors and preventing breaking changes by sending notifications and refusing code merges until clean test results are achieved, thereby ensuring functional integrity before deployment.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If traditional testing methods are used for microservices, then individual service testing is simple, but integration validation and breaking change detection are insufficient
Solution Approach 1:
The patent implements preliminary action by executing test transaction routines before code merging occurs. The system automatically runs integration tests against all microservices to validate connections and detect breaking changes before the code is deployed to production, preventing failures before they impact the system.
Solution Approach 2:
The patent implements feedback by providing real-time test results to code developers through notifications. When test transaction routines detect errors in code changes, the system automatically sends feedback to developers, enabling rapid iteration and correction of breaking changes without manual intervention.
2Reliability
If continuous delivery pipelines are created for each development team, then development autonomy is maintained, but overall system connection validation is insufficient
Solution Approach 1:
The patent merges individual team testing pipelines into a unified system-wide validation process. The test transaction routine executes across all microservices in the distributed system, combining team-level testing with system-level integration validation to ensure end-to-end functionality.
Solution Approach 2:
The patent creates a universal testing framework that serves multiple functions: validating individual microservice connections, detecting breaking changes across services, and ensuring system-wide integration. This single test transaction routine handles all validation needs for code merging.
3Productivity
If code updates are made frequently to improve agility, then delivery speed increases, but risk of introducing breaking changes increases
Solution Approach 1:
The system performs preliminary testing before code merging by automatically executing test transaction routines that validate all microservice connections. This preliminary validation step ensures that frequent code updates do not introduce breaking changes, maintaining reliability while preserving delivery speed.
Solution Approach 2:
The system provides immediate feedback to developers through notifications when test transaction routines detect errors. This rapid feedback loop enables developers to correct breaking changes quickly, maintaining high delivery speed while ensuring code quality and system stability.
Data Source
AI summary
A method is configured to perform a continuous software testing. A processor receives, from a code developer computer, a request to commit a code portion for a microservice to a code repository including a source code for a plurality of microservices. The processor executes, using the source code into which the code portion is incorporated, a test transaction routine including tests respectively associated with the plurality of microservices. The processor determines if an error occurred in response to the executing the test transaction routine. If no error occurred, the code portion is committed to the code repository, and, if an error occurred, the code portion is not committed to the code repository.


