Interne workshop: Testen

Daar zit ik dan, alweer de tweede interne workshop te geven over testen om mijn collega’s te informeren en enthousiast te krijgen over (automatisch) testen. Een onderwerp dat ik niet alleen erg interessant vind maar ook belangrijk.

 

 

Testen

In andere sectoren is het de normaalste zaak van de wereld om na productie een checklist af te lopen en te controleren of alles werkt volgens de specificaties. Gelukkig is het in de ICT ook niet ongebruikelijk om dit te doen maar in de praktijk laat dit geregeld te wensen over. Bij oudere projecten is dit vaak zo gegroeid en er wordt ook geregeld als eerste op tests bezuinigd onder tijdsdruk.

Heel erg jammer natuurlijk! Op de korte termijn kan het inderdaad lijken alsof tests alleen maar tijd kosten en niets opleveren, maar op de lange termijn besparen tests juist tijd. Niet alleen om fouten (of ongewenste veranderingen in gedrag) snel aan het licht te krijgen. Het kan ook als een vorm van documentatie dienen en dat kan een nieuwe ontwikkelaar weer snel op weg helpen.

Daarnaast leven we in een tijd waarin er snel geschakeld moet kunnen worden na bijvoorbeeld het uitkomen van een lek in een software component van een derde partij. Wat is het fijn om in zo’n situatie na een aantal minuten te weten of alle (geautomatiseerde) tests slagen en zodoende genoeg vertrouwen geven om een nieuwe versie in productie op te leveren. Stel je voor dat dit met de hand moet worden gedaan terwijl de klok tikt en de omgeving onveilig is.

Kortom, iedereen snapt uiteindelijk wel dat geautomatiseerd testen een goed idee is. Toch blijkt de drempel vaak te hoog om er daadwerkelijk mee aan de slag te gaan. Dat is exact de reden waarom we bij Flusso een workshop testen hebben georganiseerd met de nadruk op integratietests. Er zijn zeker goede redenen om (ook) unit tests te schrijven, maar met name voor back-ends vindt ondergetekende het van belang om een systeem zo veel mogelijk te testen op de manier waarop het ook in productie wordt gebruikt. Dat wil zeggen inclusief de in productie gebruikte database oplossing en bijvoorbeeld een representatief ingericht IAM.

 

Testcontainers

De ster van de workshop was dan ook het testcontainers project. Hiermee wordt het heel makkelijk gemaakt om containers van onder andere databases, brokers en IAM oplossingen te gebruiken binnen integratietests. Dit werkt zowel op de machine van de ontwikkelaar als in een CI pipeline, zolang er maar een werkende Docker-installatie aanwezig is op het systeem. Testcontainers kunnen in combinatie met diverse talen en frameworks worden gebruikt. Tijdens de workshop stond vooral het gebruik in combinatie met Java en Spring Boot centraal. De integratie met Spring Boot zorgt bijvoorbeeld dat voor het draaien van de integratietiests de vereiste containers worden gestart en volledig up and running zijn. Waarna deze ook weer netjes worden afgesloten als de tests zijn afgerond.

 

Aan de slag

Na een korte presentatie over de theoretische aspecten van (integratie) testen met containers was het tijd om de handen vuil te maken. Sommige collega’s maakten dankbaar gebruik van mijn eigen Spring Boot voorbeeldproject en waren vooral aan het spelen met de inrichting die ik al gemaakt had. “Wat zou er gebeuren als ik deze regel aanpas” of “Even kijken of de test nog steeds slaagt als ik de return value aanpas”. Dit waren vooral collega’s die eigenlijk voor het eerst met zo’n framework in aanraking kwamen en die het spelenderwijs nog eigen moeten maken. Heel erg leuk om te zien en blij dat het aanslaat!

 

Daarnaast waren er ook collega’s die mijn kennis en ervaring wilden gebruiken om meteen de diepte in te gaan op hun klantproject. Helaas kost het inrichten van een goed testlandschap wel iets meer tijd dan de 2 uur die wij hadden maar de basis was gelegd en belangrijker nog, de kennis van de mogelijkheden is gedeeld. Waar nodig en mogelijk zal ik de komende periode langs de verschillende projecten gaan om mee te helpen aan de inrichting van het container landschap. Eenmaal goed ingesteld maakt dit het schrijven van integratietests een stuk simpeler en hebben we de drempel een stuk lager weten te krijgen.

Volgende stap? De test coverage omhoog te krijgen!

 

Klanten

Voor onze klanten is dit ook een enorm belangrijk onderwerp maar ook die boodschap landt niet altijd. Zoals eerder aangegeven wordt er op testen toch vaak bespaard terwijl het een cruciaal onderdeel is om goed grip op je landschap te krijgen en te behouden. Misschien moet ik een interessante workshop bedenken speciaal voor onze klanten… Daar ga ik eens over nadenken.

 

Sander

Meer weten?

Neem contact met mij op. Na een (telefonische) inventarisatie breng ik je in contact met een consultant die het best past bij je bedrijf.

Tom Oosterwijk Sales & Account manager