Microservices are becoming more prevalent. External behavior of an application depends on multiple services working together. Each service needs to be checked that it both provides the desired behavior as well as handles exceptions and error conditions, such as the inability to communicate with a dependency. Interactions between these services needs to be checked and monitored. Checking behavior does not stop at deployment but needs to continue after release. From a testing perspective, microservices can be viewed both as mini-applications with external behavior and as internal components. For applications, the externally facing triad (customer, developer, and tester) collaborates to create tests for behavior; for internal components, a different triad ( consumer, producer, and tester) generates these tests. To properly test microservices, we need to see, feel, touch, heal, and explore them. This parallels the facets of application testing.
See it: Tests need to be visible so that all members of the triad share the understanding of the behavior.
Feel It: Behavior for cross-functional (non-functional) aspects of microservices can be documented in tests.
Touch It: Testing for interactions of microservices can include injection or simulation of faults.
Heal It: Check that telemetry which records microservice interactions can be used to determine failure causes.
Explore It: Testing ought to go beyond just the behaviors described and include exploratory testing.
With so many aspects, testers need to work as collaborators in specification and tests, not just the test executors. The primary audience is for testers involved in microservices. However, it is also appropriate for any role which collaborates on the construction or delivery of these microservices.
• Create appropriate cross-functional behavior tests for microservices
• Determine a strategy to test microservice interactions
• Explore ways to test telemetry