In the world of automated testing there is never a shortage for new tools or techniques. The challenge is to effectively and efficiently pick the right tools or more importantly how to apply them in the right measure. This is especially true for microservices as they add their own own level of complexity and thus their own shades of pain.

In terms of test scope we are looking at the level of end-to-end tests or contract tests rather than unit, integration or component tests. For end-to-end tests we need to deploy multiple services together and then run at test against the services. Not only does this make diagnosing errors a lot harder but it also takes more time. Let’s take a step back and look at what we want to achieve in the first place:

  • We introduce a change to one of ours services
  • We want to deploy the service with the confidence of not breaking anything

Now if we want to deploy all services to test the first question is which versions of the other services should be deployed? The latest version, probably master or whatever is on production.