Testing Microservices: fast and with confidence

A better testing strategy for distributed services

Stephan Jaensch

Distributed Systems Microservices Testing python

A main advantage of microservices is improved developer velocity. One roadblock to achieving it is giving developers the confidence that their changes are correct and safe, which is a challenging problem in such a distributed architecture. Typical approaches involve relying on automated end-to-end testing, which is costly to set up, develop tests for and run.

In this talk I will explore an approach to testing that does not require the presence of any external dependencies (not even "fake" or "test double" implementations of them), but provides many of the benefits of an end-to-end test. Come by to learn about how we can use a downstream service's API specification to make sure the system under test interacts with it in the correct way ("contract testing") - a key ingredient missing from most unit or integration test setups. We'll then go even further to cover testing scenarios that previously could only be covered with end-to-end tests: how to maintain and validate state of your downstream dependencies.

Type: Talk (30 mins); Python level: Intermediate; Domain level: Intermediate

Stephan Jaensch


I'm a tech lead at Yelp, working on the infrastructure for our backend services and business owner systems. My areas of interest include service-to-service communication, type annotations and testing. I'm one of the maintainers of the Python stack for Swagger / OpenAPI (bravado etc). In the past, I've worked on the backends of our Business Owner App as well as the Yelp app. I gave talks at the last four EuroPythons and I had a blast doing it.