Een integratietest controleert of twee of meer onderdelen van een systeem correct werken als je ze aan elkaar koppelt. Elk stuk kan zijn eigen controles doorstaan, en toch falen zodra het data moet doorgeven aan het volgende stuk. Integratietests kijken juist naar die overdrachten.

Stel je voor dat je een meubel in elkaar zet uit twee dozen. Elke plank is op zich prima, maar de test die telt is of de schroeven uit doos A daadwerkelijk in de gaten van doos B passen. Een integratietest is die pasvormcheck voor software: stuurt de afrekenpagina het juiste totaal naar de betaaldienst, en slaat de database het op zoals de app verwacht? Hij zit één niveau boven een unittest, die maar één stuk bekijkt, en één niveau onder een end-to-end-test, die de hele route van een gebruiker doorloopt.

Veel echte bugs leven in deze naden. Twee onderdelen gedragen zich elk correct, maar ze zijn het oneens over een datumformaat of een ontbrekend veld, en alleen een test die ze samen draait brengt dat aan het licht.

Het schrijven kost wat voorbereiding. Een integratietest heeft vaak een echte database of een vervanger voor een externe dienst nodig, dus hij draait trager dan een unittest en kost meer moeite om stabiel te houden. De vuistregel is meestal: veel snelle unittests en een kleinere, goedgekozen set integratietests rond de koppelingen die er het meest toe doen, zoals betalingen of inloggen.

Daar verdienen ze hun plek. Je vangt de mismatches die unittests niet zien, zonder de trage, broze prijs te betalen van alles van begin tot eind testen.

Bij TopDevs schrijven we integratietests rond de koppelingen in je systeem, zodat we het weten op het moment dat twee componenten het oneens worden, nog voordat je gebruikers het merken.