Consumer Driven Contract Testing Training

Leer testen tegen gevalideerde API contracts

In een architectuur met vele gedistribueerde services, is het in toenemende mate een uitdaging om de onderlinge werking van deze services te garanderen. Het inrichten van een testomgeving waar al deze services beschikbaar – en belangrijker nog, compatible – zijn, is een duur en arbeidsintensief proces. Het komt geregeld voor dat er wijzigingen worden gedaan die de tests breken; API changes die niet of onvoldoende zijn gecommuniceerd, conflicterende planningen, noem maar op.

Gelukkig is er een manier beschikbaar waarmee het mogelijk wordt om in isolatie tests te draaien tegen een applicatie, gebruikmakend van stubs van afhankelijke services. Dit kan nu al, maar waar consumer driven contract testing zijn waarde voornamelijk heeft is dat het gevalideerde stubs betreft, contracten die afgesloten zijn tussen afnemer (consumer) en leverancier (provider). Deze contracten worden aan de kant van de leverancier gevalideerd in tests tegen de service – waarbij gecontroleerd wordt of de in de stubs gedefinieerde request/response combinaties daadwerkelijk op die manier uit de service komen. Slaagt deze validatie, dan worden contracten gepubliceerd in een library en beschikbaar gemaakt via een repository manager.

De afnemer neemt een dependency op op deze library en kan vervolgens de applicatie testen tegen deze gevalideerde stubs er zo valideren of de applicatie nog steeds compatibel is met de in gebruik zijnde contracten. Daar waar dit proces breekt (zij het aan de kant van de consumer of de producer) is er direct inzicht in wie er betrokken zijn en wat de gevolgen zijn van deze wijzigingen. Maar het voornaamste voordeel van deze aanpak is wellicht toch het feit dat er geen run-time afhankelijkheden meer zijn tussen producer en consumer. Er kan dus in isolatie, tijdens iedere build worden gevalideerd of de applicaties nog steeds compatibel zijn.

Deze training richt zich op het inrichten van applicaties waarbij de contracten tussen een consumer en een provider kunnen worden opgesteld, laat zien hoe deze worden toegepast in tests en hoe te reageren op veranderingen in deze contracten. Hiervoor wordt gebruik gemaakt van Spring Cloud Contract, een op Spring gebaseerde implementatie van consumer driven contract testing.

Overzicht

Niveau
Gevorderd
Deelnemers
Tot 12 personen
Duur
Twee dagdelen – 8 uur
Kosten
Op aanvraag
Aanvangsdatum
Op aanvraag
Locatie
Op aanvraag
Taal
Engels, Nederlands
Lesmethode
Klassikaal
Voorkennis
Git
Java/Kotlin
Spring (Boot)
Benodigdheden
Laptop
IDE (Intellij, Eclipse)

Inhoud

Dagdeel 1
  • Introduction to consumer driven contract testing
  • Setting up producer application
    • Set up a new Spring boot application
    • Learn how to add Spring cloud contract dependencies
    • Learn how to configure the spring cloud contract plugin
    • Learn to define contracts for your endpoints
    • Learn to write contract verfier tests
  • Setting up consumer application
    • Set up a new Spring Boot application
    • Learn how to add Spring cloud contract dependencies
    • Learn how to add stub library dependencies
    • Learn how to configure tests to run with stubs loaded (using wiremock)
    • Learn how to write tests against producer verified contracts
Dagdeel 2
  • Testing applications with contracts
    • Learn how to define stubs for consumption
    • Learn how to verify stubs in the producer
    • Learn how to stucture the stub library for multiple consumers
    • Learn how to work with changes on the consumer side
    • Learn how to work with changes on the producer side
  • Working with contracts
    • Learn how to implementing behavior
    • Learn how to define wildcards
    • Learn how to use matchers
    • Learn how to deal with test failures due to changed contract

Waarom Sourcelabs?

Sourcelabs heeft jarenlange ervaring op het gebied van applicatieontwikkeling in servicegeoriënteerde omgevingen. Daarbij zijn wij geregeld tegen de problemen aangelopen die de kop op steken bij het werken in omgevingen met gedistribueerde logica. Het testen van dit soort applicaties in samenhang is arbeidsintensief en vereist veel goed overleg en afstemming. Consumer driven contract testing is een ideale manier om deze complexe activiteiten uit te voeren in een meer geïsoleerde setting, waardoor het testen van dit soort applicaties sterk vereenvoudigd kan worden.

Interesse?

Neem contact met ons op om deze training in te plannen, op locatie of bij ons op kantoor te Utrecht. Interesse in een specifiek onderdeel van deze training? Wij maken deze training op verzoek ook op maat.