Test-pyramiden

Grundidén

En modell för hur testerna i ett projekt bör fördelas mellan olika nivåer — flest tester längst ner, färst längst upp.

flowchart TD
    A["Många — Enhetstester\nsnabba, billiga, testar en enhet i taget"]
    B["Färre — Integrationstester\ntestar att komponenter samverkar"]
    C["Färst — End-to-end-tester\nlångsamma, testar hela flödet som en användare"]
    A --> B --> C

Varför en pyramid och inte en jämn fördelning?

NivåHastighetKostnad att underhållaVad den fångar
EnhetstestMillisekunderLågLogikfel i en enskild funktion/klass
IntegrationstestSekunderMedelFel i hur komponenter samverkar (databas, API)
End-to-end-testMinuterHögFel i hela användarflödet, men trögt och skört

End-to-end-tester är värdefulla — de testar det användaren faktiskt upplever — men de är långsamma att köra och lätta att göra skira (ett litet UI-ändring kan krascha ett test som inte har med logiken att göra). Bygger man för många av dem blir testsviten trög och opålitlig.

Den omvända pyramiden — ett varningstecken

Ett team som mest skriver end-to-end-tester och få enhetstester har byggt en omvänd pyramid (eller “test-glass”). Symptomen: testsviten tar för lång tid att köra, testerna failar av orsaker som inte har med den faktiska buggen att göra, och ingen litar längre på resultatet.

Kopplingen till agilt arbete

I ett team som levererar varje sprint (se Scrum) måste testsviten kunna köras snabbt och pålitligt, ofta flera gånger om dagen i en CI/CD-pipeline. En sund test-pyramid är en förutsättning för att korta leveranscykler faktiskt ska fungera i praktiken — utan den blir varje sprint bromsad av en långsam, skör testkörning.