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.