Bird
Raised Fist0
Microservicessystem_design~5 mins

Contract testing (Pact) in Microservices - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is contract testing in microservices?
Contract testing ensures that two services (like a client and a server) agree on how they communicate. It checks the 'contract' or agreement between them to avoid integration errors.
Click to reveal answer
beginner
What role does Pact play in contract testing?
Pact is a tool that helps create and verify contracts between services. It lets the client define expectations and the server verify them, ensuring both sides match their communication.
Click to reveal answer
intermediate
How does Pact improve microservices integration?
Pact catches mismatches early by testing interactions before deployment. This reduces bugs caused by changes in one service breaking another, making integration safer and faster.
Click to reveal answer
intermediate
What are the main components of a Pact contract?
A Pact contract includes the expected requests from the client and the expected responses from the server. It describes the interaction details like HTTP method, path, headers, and body.
Click to reveal answer
intermediate
Why is contract testing preferred over end-to-end testing in microservices?
Contract testing is faster and more focused. It tests only the communication between two services, not the whole system, making it easier to find and fix issues early.
Click to reveal answer
What does a Pact contract primarily verify?
AThe database schema of a service
BThe communication agreement between client and server
CThe UI design of a web application
DThe deployment process of microservices
Who typically creates the Pact contract in contract testing?
AThe client service defining expected requests
BThe server service defining database schema
CThe operations team managing deployment
DThe UI designer creating mockups
What is a key benefit of using Pact in microservices?
AEarly detection of communication mismatches
BFaster UI rendering
CAutomated database backups
DImproved server hardware performance
Which of these is NOT part of a Pact contract?
AHeaders and body content
BExpected HTTP response details
CExpected HTTP request details
DUser interface layout
Why might contract testing be preferred over full end-to-end testing?
AIt tests the entire system including UI
BIt replaces unit testing
CIt is faster and isolates communication issues
DIt requires no test automation
Explain how Pact helps ensure reliable communication between microservices.
Think about how two friends agree on a plan before meeting.
You got /4 concepts.
    Describe the main differences between contract testing and end-to-end testing in microservices.
    Compare checking a single conversation versus watching a whole play.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of contract testing in microservices using Pact?
      easy
      A. To check database schema consistency
      B. To test the user interface of a microservice
      C. To verify that services agree on request and response formats
      D. To measure the performance of a microservice

      Solution

      1. Step 1: Understand contract testing role

        Contract testing ensures that two services agree on how they communicate, specifically the request and response formats.
      2. Step 2: Identify Pact's function

        Pact automates contract testing by creating and verifying these agreements between microservices.
      3. Final Answer:

        To verify that services agree on request and response formats -> Option C
      4. Quick Check:

        Contract testing = Verify service agreements [OK]
      Hint: Contract testing checks communication agreements, not UI or performance [OK]
      Common Mistakes:
      • Confusing contract testing with UI testing
      • Thinking contract testing checks database schemas
      • Assuming contract testing measures performance
      2. Which of the following is the correct Pact file format used to define a contract?
      easy
      A. JSON
      B. YAML
      C. XML
      D. CSV

      Solution

      1. Step 1: Identify Pact contract format

        Pact contracts are written in JSON format to describe interactions between services.
      2. Step 2: Eliminate other formats

        YAML, XML, and CSV are not used by Pact for contract files.
      3. Final Answer:

        JSON -> Option A
      4. Quick Check:

        Pact contract format = JSON [OK]
      Hint: Pact contracts are JSON files describing service interactions [OK]
      Common Mistakes:
      • Assuming Pact uses YAML or XML
      • Confusing data formats with contract formats
      • Thinking CSV can describe complex contracts
      3. Given the following Pact interaction snippet, what is the expected response status code?
      {"request": {"method": "GET", "path": "/users/123"}, "response": {"status": 200, "body": {"id": 123, "name": "Alice"}}}
      medium
      A. 404
      B. 200
      C. 500
      D. 302

      Solution

      1. Step 1: Read the response status in the Pact snippet

        The response object shows "status": 200, indicating a successful request.
      2. Step 2: Confirm status meaning

        Status 200 means OK, so the expected response code is 200.
      3. Final Answer:

        200 -> Option B
      4. Quick Check:

        Response status in Pact = 200 [OK]
      Hint: Look for "status" field in response to find expected code [OK]
      Common Mistakes:
      • Confusing request method with response status
      • Ignoring the status field in the response
      • Choosing common error codes instead of actual status
      4. A Pact test fails because the provider service returns an extra field not defined in the contract. What is the best way to fix this?
      medium
      A. Remove the extra field from the provider service response
      B. Ignore the extra field in the provider service
      C. Disable contract testing for this interaction
      D. Update the contract to include the extra field

      Solution

      1. Step 1: Understand contract strictness

        Pact expects the provider response to match the contract exactly, including fields.
      2. Step 2: Adjust contract or provider

        If the provider adds a new field, the contract must be updated to reflect this change to keep tests valid.
      3. Final Answer:

        Update the contract to include the extra field -> Option D
      4. Quick Check:

        Provider adds field -> update contract [OK]
      Hint: Keep contract and provider response in sync to pass tests [OK]
      Common Mistakes:
      • Ignoring extra fields without updating contract
      • Removing fields from provider causing data loss
      • Disabling tests instead of fixing contract
      5. You want to implement contract testing with Pact in a microservices system where multiple teams develop services independently. Which approach best ensures smooth integration?
      hard
      A. Each team publishes their Pact contracts to a shared broker for others to verify
      B. Teams test contracts only locally without sharing
      C. Use end-to-end tests only, skipping contract tests
      D. Manually review API changes without automated tests

      Solution

      1. Step 1: Identify best practice for contract sharing

        Using a shared Pact broker allows teams to publish and verify contracts centrally, enabling independent development with integration confidence.
      2. Step 2: Compare alternatives

        Local-only tests lack visibility; end-to-end tests are slower and less focused; manual reviews are error-prone.
      3. Final Answer:

        Each team publishes their Pact contracts to a shared broker for others to verify -> Option A
      4. Quick Check:

        Shared Pact broker = smooth integration [OK]
      Hint: Use shared Pact broker for contract visibility and verification [OK]
      Common Mistakes:
      • Skipping contract tests for only end-to-end tests
      • Not sharing contracts causing integration surprises
      • Relying on manual API reviews