Automatische tests worden ingedeeld in unit (eenheid), integratie (integratie) en end-to-end (E2E) om de systeemcontrole op verschillende niveaus te dekken.
Achtergrond: Deze indeling ontstond uit de noodzaak om applicaties zowel in delen als in hun geheel te testen. Daarom worden de testlagen onderscheiden:
Probleem: Fouten ontstaan vaak niet alleen in de logica van een specifieke methode, maar ook op de raakvlakken van componenten of bij de "echte" uitvoering van het hele systeem met externe diensten. Als alles in één hoop wordt gegooid, is het moeilijk om snel een bug te lokaliseren of te begrijpen waar deze precies is ontstaan.
Oplossing:
Het is van vitaal belang om de testtypen te onderscheiden om:
Belangrijke kenmerken:
Kun je integratietests beschouwen als "gewone" grote unit-tests?
Nee, integratietests testen de samenwerking van meerdere componenten, niet alleen individuele functies. Daarbij is het niet altijd mogelijk om mocks te gebruiken — echte diensten communiceren met elkaar.
Moeten alle tests end-to-end (E2E) zijn?
Nee, dit is een dure en complexe aanpak. E2E is alleen nodig voor kritieke gebruikersscenario's; de meeste logica wordt door andere tests gedekt.
Zijn unit-tests altijd snel?
Niet altijd. Soms is het niet mogelijk om de code te isoleren, of is de methode afhankelijk van complexe externe bronnen. In dat geval verliest de test zijn status als unit.
Het bedrijf heeft alleen de belangrijkste functionaliteit gedekt met E2E-tests — elke wijziging werd 's nachts gecontroleerd, de tests faalden onbetrouwbaar, bugs werden laat ontdekt.
Voordelen:
Nadelen:
Het team heeft een testpiramide opgezet: onderaan — unit-tests, in het midden — integratietests, bovenaan — alleen de belangrijkste E2E.
Voordelen:
Nadelen: