Practical contract testing with Pact

Contract testing is an approach that addresses the challenges of large-scale integration and E2E testing in distributed systems. It is not a new technique, in fact, it has been around for several years now, but unfortunately there aren't many good introductions, examples and use cases that clearly show the added value of contract testing, and how it can help speed up integration testing.

This course is designed to change that. Through hours of videos, quizzes and hands-on programming exercises, you will learn everything you need to know about contract testing, Pact and the tools in the Pact ecosystem.

So, what can you expect from this course? Here's the course outline for you:

Setting the stage (published)
  • The context for this course
  • The current testing process and its challenges
Contract testing - concepts (published)
  • What is a contract?
  • What is contract testing?
  • How is contract testing different from other approaches to integration testing?
  • How is contract testing different from schema validation?
  • Where does contract testing fit into your testing strategy?
  • Different approaches to contract testing
The Pact ecosystem (published)
  • Introducing Pact and the Pact ecosystem
  • Introducing the Pact CI/CD implementation guide
Generating consumer contracts (coming soon)
  • What goes into a consumer contract?
  • Preparing your machine for the hands-on exercises
  • Generating a consumer contract (Java)
  • Generating a consumer contract (JavaScript / TypeScript)
  • Defining provider states
  • Using Pact matchers
  • Dealing with optional fields
Publishing consumer contracts (coming soon)
  • Introducing the Pact Broker
  • Publishing our contracts using the Pact CLI tools
  • Publishing our contracts using the Pact Maven plugin
  • Versioning our contracts
  • Contract publication options
Verifying consumer contracts (coming soon)
  • Provider-side contract verification with Pact (Java)
  • Provider-side contract verification with Pact (JavaScript / TypeScript)
  • Contract verification options
Continuous Integration (coming soon)
  • Generate and publish consumer contracts in your pipeline
  • Verify contracts and publish verification results in your pipeline
  • Using webhooks
  • Dealing with pending pacts
can-i-deploy (coming soon)
  • What does can-i-deploy do?
  • Recording deployments
  • Checking for compatibility
  • Adding can-i-deploy to your PR pipeline
  • Adding can-i-deploy to your deployment pipeline
What happens when our software evolves? (coming soon)
  • Going through a consumer-side change
  • Going through a provider-side change
Challenges when implementing consumer-driven contract testing (coming soon)
  • Impact on teams and communication
  • Dealing with public APIs
  • Involving the whole team
Bidirectional contract testing - concepts (coming soon)
  • The bidirectional contract testing flow
  • Tools to support bidirectional contract testing
Bidirectional contract testing - an example (coming soon)
  • Generating and publishing consumer contracts (Java)
  • Generating and publishing consumer contracts (JavaScript / TypeScript)
  • Publishing provider contracts
  • Adding bidirectional contract testing to your Continuous Integration pipeline
Pact plugins (coming soon)
  • The Pact plugin framework
  • Writing and using Pact plugins
Measuring contract testing implementation success (coming soon)
  • Defining and using contract testing implementation metrics
Where to from here? (coming soon)
  • Additional resources

As you can see, there's something in there for everyone. The content for this course will be released incrementally during the remainder of the year, meaning that the full course is available in December of 2024.

Are you ready to learn about contract testing? Let's get started!


Your Instructor


Bas Dijkstra
Bas Dijkstra

Hey, my name is Bas Dijkstra, and I am an independent test automation consultant and trainer.

I have been active in the test automation field for some 18 years now, and have worked on software testing and automation solutions across a wide range of programming languages, frameworks and technology stacks.

I’ve delivered test automation training to dozens of companies and hundreds of conference attendees in the Netherlands as well as abroad, to excellent reviews.

You can find a complete overview of my professional life on my LinkedIn profile.

I’m also the developer of RestAssured.Net, a library that is meant to to make writing tests for HTTP APIs in C# a breeze.

I live in Amersfoort, The Netherlands, together with my wife and two sons. When I am not at work, I like to go outside for a run or a long bike ride, or to sit down and read a good book.


Frequently Asked Questions


When does the course start and finish?
The course starts now and never ends! It is a completely self-paced online course - you decide when you start and when you finish.
How long do I have access to the course?
How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.
What if I am unhappy with the course?
We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 30 days and we will give you a full refund.
Why is the course material not yet complete?
I am working hard to create the best possible course material for you. The content for this course will be released gradually throughout the year, and you'll be notified when new lessons are published. The complete course material will be available in December 2024. In return for your patience, I'm giving you access to the course for a reduced price. The earlier you enroll, the lower the price!
Are there any technical prerequisites?
Everything you'll need to complete the hands-on programming exercises will be introduced in the course videos, and detailed installation instructions will be provided, but here's a list: * A recent JDK (21 or newer) - if you want to do the exercises in Java * A recent Node.JS installation - if you want to do the exercises in JavaScript / TypeScript * An IDE of your choice * A free PactFlow account - this can be obtained from https://pactflow.io/try-for-free/ * The Pact CLI tools - you can get these from https://github.com/pact-foundation/pact_broker-client/releases

Get started now!