I'm in charge of leading a QA Team and one of our tasks is to develop Automated Microservice Tests.
We've been successfully testing these Microservices for a year. In summary, our Testing Process is:
- Review the documentation
- Usually the Microservice output will vary accordingly to ~6 input combinations. We write the Specifications for those ~6 Test Scenarios
- Produce messages with our Test Data to the source Topics using a REST API
- The Microservices will consume and process these input messages, map the fields, aggregate/transform the data, perform calculations and produce the output messages
- Consume the messages from the output Topics using the REST API and perform the assertions
Additional info: The Developers are responsible for the Unit Tests. The QA Team is responsible for the Functional, Integrated, Performance and Exploratory Tests. Our Automated Tests are already integrated into the CI/CD Workflow.
However, the company is migrating from Docker to Kubernetes, we will use a different REST API, so the Tests will be refactored. For this reason, before refactoring the DevOps Team threw an idea around, what if we changed the Testing Paradigm and, instead of developing Automated Microservice Tests, the QA Team would develop "Testing Microservices"? These "Testing Microservices" would run in the Production Environment and validate all generated messages. In my opinion this goes against all good Testing Practices but I'd like to hear your opinion.
- Developing Microservices is a Development Task, not a QA Task
- Would we have twice as many Microservices in Production (it would make more sense to run these "Testing Microservices" in Staging but they said Production)? This would greatly degrade the performance of the server
- What's the point? I don't see any benefit in doing this, only drawbacks
Plus, our Automated Microservice Tests could also do this, we don't need to develop "Testing Microservices". But again, there are only disadvantages. Each Microservice generates tens of thousands of messages daily. Why would we perform tens of thousands of Requests to test each Microservice, when the Test Scenarios have already been identified and the output will vary accordingly to half a dozen input combinations? We can do the same task performing only 6 Requests, thus avoiding the degradation of the server's performance.