Consumer-Driven Contract Testing
In a landscape of hundreds of services deployed several times a day by many different teams, how do we know that when a change is deployed, services can still talk to each other and users are not affected negatively?
The most common approaches in the industry are end-to-end tests and mocks. End-to-end tests give us the highest level of confidence, but they are slow, brittle and hard to maintain over time. Mocks, however, are fast and simple, but don’t give us the confidence we need as we can’t guarantee that we are testing against the real things.
We need to find a better balance between confidence and speed. Luckily, there is a way.
Join us for a hands on interactive workshop where we will explore how to achieve that using a technique called Consumer-Driven Contract Testing.
WHAT IS CONSUMER-DRIVEN CONTRACT TESTING?
Consumer-driven contract testing is a technique used to make sure that services can evolve independently without breaking things for each other. The general idea is to have consumers define expectations on providers via contracts. The providers in turn make sure they never break those contracts and remain backwards compatible with their consumers.
Not least, it serves as a great communication tool which increases inter-team collaboration and gives insights to the providing teams on how their APIs are actually used.
AFTER THIS COURSE YOU WILL BE ABLE TO
- Reason about Contract Testing and how it compares to / complements other testing strategies
- Write Contract Tests
- Using REST
- Using a messaging broker
- Incorporate Contract Testing in your deployment pipeline
- Sharing contracts
- Verifying contracts
- Easily find the consumers of your applications
- Understand the Consumer-Driven approach to increase collaboration and minimize waste
- Introduce Consumer-Driven Contract Testing to your organization
This course is for developers, testers, architects or anyone with their fingers still in the code.
It will be most beneficial for the ones working in a microservices architecture, but nonetheless valuable for those who are in a rather monolithic world where there are only a few services communicating with each other.
A few days before the course starts, the code repositories will be shared and it is your responsibility to make sure you can build and run them prior to its start. The facilitators will be available for help if there would be any issues.
The code exercises will be in Java. Programming experience is needed, but proficiency in this language is not a must.
And of course, bring a nice attitude and an open mind!