Hvad er automatiseret test?
Automatiseret test er programmer der automatisk tjekker at softwaren virker ved hver ændring, i stedet for manuel klikken før en release. De opdeles typisk i enhedstest, integrationstest og end-to-end-test. Forretningsværdien er at man tør ændre hurtigt uden at noget gammelt går i stykker, og et oplagt spørgsmål er hvad der dækkes af test og hvad der testes manuelt.
Automatiseret test er en af de ting der adskiller software man kan stole på og bygge videre på, fra software man bliver stadig mere bange for at røre ved. Begrebet lyder teknisk, men idéen er enkel: Lad computeren tjekke at alt virker i stedet for at stole på manuelt arbejde. Her er hvad det betyder og hvorfor det påvirker dig som kunde.
Definitionen
Automatiseret test er programmer der tjekker at softwaren virker som den skal. I stedet for at et menneske manuelt klikker sig gennem systemet før hver release for at se at intet er i stykker, skrives der kode som udfører kontrollerne automatisk, og den kører ved hver ændring, igen og igen, på sekunder.
Forskellen fra manuel test er at automatiske test er hurtige, utrættelige og konsekvente. De tjekker de samme ting perfekt hver gang, tusindvis af gange om dagen hvis det er nødvendigt, og de slår alarm i samme øjeblik en fejl bliver indført. En fejl som ellers måske var blevet opdaget af en bruger meget senere, bliver i stedet fanget med det samme af den udvikler der lige har forårsaget den.
Testpyramiden: tre niveauer
Der findes flere slags automatiske test, og de beskrives ofte som en pyramide for at vise hvordan de bør balanceres.
- Enhedstest tjekker de mindste byggesten hver for sig: en enkelt funktion, en lille bid logik. De er hurtige og billige at køre og skal derfor være flest. De udgør pyramidens brede bund.
- Integrationstest tjekker at flere dele fungerer rigtigt sammen, f.eks. at koden og databasen spiller sammen som tænkt. De er lidt tungere og færre end enhedstestene.
- End-to-end-test efterligner en rigtig bruger og afprøver hele flowet fra start til slut, gennem hele systemet. De giver størst tryghed, men er langsomst og mest følsomme og skal derfor være færrest: pyramidens smalle top.
Formen er selve pointen: mange hurtige test i bunden, få altomfattende i toppen. En pyramide der står på spidsen, med få enhedstest og mange langsomme end-to-end-test, bliver træg og skrøbelig.
Et konkret scenarie
Lad os sige at en udvikler skal tilføje en rabatkode i en webshop. Ændringen er lille, men rører ved checkout, systemets mest følsomme del. Uden automatiske test skal nogen manuelt klikke sig gennem hele købsflowet for at tjekke at intet andet er påvirket, og der er altid en risiko for at man overser et tilfælde.
Med automatiske test på plads kører der i stedet hundredvis af kontroller på sekunder så snart ændringen gemmes: Regnes summen rigtigt, virker betalingen, bliver kvitteringen sendt, er fragtberegningen upåvirket? Hvis rabatten er kommet til at ødelægge noget andet, siger testene til med det samme og fortæller præcis hvad. Udvikleren retter det på stedet før koden overhovedet når næste trin. Samme ændring, men med et sikkerhedsnet der gør det trygt at lave den hurtigt.
Forretningsværdien: at turde ændre hurtigt
Det scenarie indfanger hele værdien. Den reelle gevinst ved automatiske test er ikke at finde fejl én gang, men at gøre det trygt at ændre systemet igen og igen over tid.
Uden test bliver hver ændring et vovestykke: Man ved aldrig med sikkerhed om en ny funktion er kommet til at ødelægge noget gammelt, og frygten for det gør udviklingen langsom og forsigtig. Med god testdækning slår testene alarm med det samme når en ændring ødelægger noget der virkede, og teamet kan derfor udvikle hurtigt og selvsikkert. Det sænker både risikoen og omkostningen ved al fremtidig videreudvikling, og det er præcis det der afgør hvor langtidsholdbart og brugbart et system bliver. Det hænger tæt sammen med hvor meget teknisk gæld der bygges op.
Kontrolspørgsmålet til leverandøren
For dig som kunde er der et enkelt og afslørende spørgsmål at stille: Hvad er dækket af automatiske test, og hvad testes manuelt?
Et modent team svarer uden tøven, kan beskrive hvordan de tester, og peger på at de forretningskritiske flows er dækket automatisk. Er svaret i stedet at alt tjekkes manuelt før hver release, er det et advarselstegn: Så bliver ændringer langsomme, dyre og risikable, og systemet bliver sværere at stole på jo mere det vokser. Vil I have en neutral vurdering af testningen i jeres system? Kontakt os, så ser vi på det sammen.
Ofte stillede spørgsmål
Hvad er automatiseret test, enkelt forklaret?
Det er kode hvis eneste opgave er at tjekke at den rigtige kode virker. I stedet for at et menneske manuelt klikker sig gennem appen før hver release, kører computeren tusindvis af kontroller på sekunder og siger til hvis noget er gået i stykker. Testene kører automatisk ved hver ændring så fejl opdages i det øjeblik de bliver indført i stedet for af en bruger meget senere.
Hvad er testpyramiden?
Det er en model for hvordan forskellige testtyper bør balanceres. Enhedstest tjekker de mindste dele hver for sig og skal være flest, for de er hurtige og billige. Integrationstest tjekker at delene fungerer sammen. End-to-end-test efterligner en rigtig bruger gennem hele flowet og skal være færrest, for de er langsomst. Bred bund, smal top: deraf pyramiden.
Hvorfor er automatiseret test pengene værd?
Fordi det gør det trygt at ændre systemet. Uden test bliver hver ændring en risiko: Man ved aldrig med sikkerhed om man er kommet til at ødelægge noget andet. Med god testdækning slår testene alarm med det samme hvis en ændring ødelægger noget der virkede så teamet tør udvikle hurtigt uden at det gamle går i stykker. Det sænker både risikoen og omkostningen ved videreudvikling over tid.
Hvad betyder testdækning?
Testdækning beskriver hvor stor en del af koden der bliver tjekket af automatiske test. Høj dækning betyder at det meste afprøves automatisk, hvilket giver tryghed ved ændringer. Men tallet siger ikke alt: Man kan have høj dækning der alligevel overser det vigtige. Vigtigere end en præcis procentsats er at de mest forretningskritiske flows er godt testet, ikke kun de nemmeste dele.
Hvilket spørgsmål skal jeg stille min leverandør om test?
Spørg ligeud: Hvad er dækket af automatiske test, og hvad testes manuelt? Svaret siger meget om hvor trygt systemet kan videreudvikles. Et modent team kan beskrive sin testning og peger på at de kritiske flows er dækket automatisk. Hvis svaret er at alt testes manuelt før hver release, er det et advarselstegn, for så bliver ændringer langsomme og risikable.