Microservices The Thoughtframeworks way!
We have a tradition for delivering trustworthy software on a regular, consistent basis & our service is par-excellence. In a world where technology and business are constantly evolving, we are adept at orienting ourselves by introducing new methodology in our core competence of the Quality Assurance Process
What is Microservices Testing
A solution to monolithic architecture’s scalability issues is Microservices Testing. The system is broken into small well defined services this makes way for the additional boundaries to be exposed that were previously hidden. These boundaries provide opportunities to employ microservices testing strategy. When combined they form a complete application/task. We foster our culture to prevent the release of faulty code by integrating testing into the development and release process.
Importance of Microservices Testing
What happens when you don’t do Microservices Testing?
Considering the large number of moving components,
Microservices design has numerous points of failure.
1. Errors and exceptions in the code.
3. Ineffective deployments.
5. The data center's failure.
7. Non availability of unit tests.
9. Interdependent Services
2. A new version of the code is available.
4. Malfunctioning hardware.
6. Poor Architecture.
8. Communicating across unstable network.
Microservices Testing Strategies
Microservices testing is built on a model of splitting of the smallest unit of business logic. These smallest units/services now communicate over a network. Therefore, unit testing validates each business logic/defined microservices.
The data exchange between the consumer and the client in a seamless manner (For Eg : The API Provider who sends the information and the client who receives the information) is called Contract Testing
The Quality Assurance team chooses an optimal solution depending on the end goal of the microservices and customer interface defined. Based on this the type of contract testing is selected.
- Integration Contract Testing
- Consumer-driven Contract Testing
Individual software modules are combined and tested as a group. This is done before Unit Testing.
E2E UI Testing (End-to-end Testing):
The TF's QA team tests the behaviours of multiple services that communicate with one another in a controlled environment.
I. Load Testing and Performance Testing
We ensure that the microservices support the SLAs (service level agreements), including the Load Test for the repurpose and performance of functional tests.
II. Resilience Testing
Applying stress on a software and observing its behaviour under controlled environment, the performance and the ability to function without core functions/data loss and how it recovers after unforeseen, uncontrollable events.
Microservices Testing Approach
5 Important Things we perform in Microservices Testing
1. In a microservices design, each service is tested as if it were a black box. As a result, we subject all of them to the same stringent test.
2. The fundamental links in the Microservice architecture are identified and tested.
3. We don't just test the happy path scenarios; because microservices can fail, it's critical to simulate failure scenarios in order to build resilience into your system.
4. Starting in development and proceeding through broader testing scopes, we test across phases using a diverse mix of testing approaches, increasing the likelihood that issues may surface.
5. On new code, we employ the "canary testing" technique to test on real users and ensure that all of the code is well-instrumented.
Microservices Testing Tools
- Apache JMeter
- Chaos Monkey
- Amazon Cloudwatch
The Thoughframeworkers and their experience in Microservices Testing
Adding value to Microservices testing requirements: