Hva er automatiserte tester?
Automatiserte tester (testautomatisering) er programmer som sjekker at programvaren fungerer, og som kjøres automatisk ved hver endring i stedet for manuell klikking. De deles gjerne inn i enhetstester, integrasjonstester og ende-til-ende-tester. Forretningsnytten er at man tør å endre raskt uten å ødelegge det som allerede fungerer. Et opplagt spørsmål er hva som dekkes av tester, og hva som testes manuelt.
Automatiserte tester er noe av det som skiller programvare man kan stole på og bygge videre på, fra programvare man blir stadig reddere for å røre. Begrepet høres teknisk ut, men ideen er enkel: La datamaskinen sjekke at alt fungerer, i stedet for å stole på manuelt arbeid. Nedenfor forklarer vi hva det betyr, og hvorfor det påvirker deg som kunde.
Definisjonen
Automatiserte tester er programmer som sjekker at programvaren fungerer som den skal. I stedet for at et menneske klikker seg manuelt gjennom systemet før hver ny versjon for å se at ingenting er ødelagt, skrives det kode som utfører disse kontrollene automatisk, og den kjøres ved hver endring, om og om igjen, på sekunder.
Det som skiller automatiske tester fra manuell testing, er at de er raske, utrettelige og konsekvente. De sjekker de samme tingene perfekt hver gang, tusenvis av ganger om dagen om nødvendig, og de slår alarm i samme øyeblikk som en feil innføres. En feil som ellers kanskje ville ha blitt oppdaget av en bruker lenge etterpå, fanges i stedet opp med en gang, av utvikleren som nettopp forårsaket den.
Testpyramiden: tre nivåer
Automatiske tester finnes i flere varianter, og de beskrives gjerne som en pyramide for å vise hvordan de bør balanseres.
- Enhetstester sjekker de minste byggeklossene hver for seg: én enkelt funksjon, en liten bit logikk. De er raske og billige å kjøre og skal derfor være flest. De utgjør den brede basen i pyramiden.
- Integrasjonstester sjekker at flere deler fungerer riktig sammen, for eksempel at koden og databasen samspiller som tenkt. De er noe tyngre og færre enn enhetstestene.
- Ende-til-ende-tester etterligner en virkelig bruker og prøver hele flyten fra start til slutt, gjennom hele systemet. De gir størst trygghet, men er tregest og skjørest, og skal derfor være færrest. De er pyramidens smale topp.
Formen er selve poenget: mange raske tester i bunnen og få altomfattende i toppen. En pyramide som står på spissen, med få enhetstester og mange trege ende-til-ende-tester, blir treg og skjør.
Et konkret scenario
La oss si at en utvikler skal legge til en rabattkode i en nettbutikk. Endringen er liten, men berører kassen, den mest følsomme delen av systemet. Uten automatiske tester må noen klikke seg manuelt gjennom hele kjøpsflyten for å sjekke at ingenting annet er påvirket, og det er alltid en risiko for at man overser et tilfelle.
Med automatiske tester på plass kjøres i stedet hundrevis av kontroller på sekunder så snart endringen lagres: Regnes summen riktig, fungerer betalingen, sendes kvitteringen ut, og er fraktberegningen upåvirket? Hvis rabatten har ødelagt noe annet, sier testene fra umiddelbart, med beskjed om nøyaktig hva. Utvikleren retter det på stedet før koden i det hele tatt når neste steg. Samme endring, men med et sikkerhetsnett som gjør det trygt å gjøre den raskt.
Forretningsnytten: trygt å endre raskt
Dette scenarioet viser hele verdien. Den egentlige nytten av automatiske tester er ikke å finne feil én gang, men å gjøre det trygt å endre systemet om og om igjen over tid.
Uten tester blir hver endring et sjansespill: Man vet aldri sikkert om en ny funksjon har ødelagt noe gammelt, og frykten for det gjør utviklingen treg og forsiktig. Med god testdekning slår testene alarm med en gang en endring ødelegger noe som fungerte, og teamet kan derfor utvikle raskt og med selvtillit. Det senker både risikoen og kostnaden for all fremtidig videreutvikling, og det er nettopp det som avgjør hvor langlivet og nyttig et system blir. Det henger tett sammen med hvor mye teknisk gjeld som bygges opp.
Kontrollspørsmålet til leverandøren
For deg som kunde finnes det et enkelt og avslørende spørsmål du kan stille: Hva er dekket av automatiske tester, og hva testes manuelt?
Et modent team svarer uten å nøle, kan beskrive hvordan de tester, og peker på at de forretningskritiske funksjonene er dekket automatisk. Er svaret i stedet at alt sjekkes manuelt før hver ny versjon, er det et varselsignal. Da blir endringer trege, dyre og risikable, og systemet blir vanskeligere å stole på jo mer det vokser. Vil dere ha en nøytral vurdering av testingen i systemet deres, ta kontakt, så ser vi på det sammen.
Ofte stilte spørsmål
Hva er automatiserte tester, enkelt forklart?
Det er kode som har én eneste jobb: å sjekke at selve koden fungerer. I stedet for at et menneske klikker seg manuelt gjennom appen før hver ny versjon, kjører datamaskinen tusenvis av kontroller på sekunder og sier fra hvis noe er ødelagt. Testene kjøres automatisk ved hver endring slik at feil oppdages med en gang de innføres, i stedet for av en bruker lenge etterpå.
Hva er testpyramiden?
Det er en modell for hvordan ulike testtyper bør balanseres. Enhetstester sjekker de minste delene hver for seg og skal være flest, for de er raske og billige. Integrasjonstester sjekker at delene fungerer sammen. Ende-til-ende-tester etterligner en virkelig bruker gjennom hele flyten og skal være færrest, for de er tregest. Bred base, smal topp: derav pyramiden.
Hvorfor er automatiserte tester verdt pengene?
Fordi de gjør det trygt å endre systemet. Uten tester blir hver endring en risiko: Man vet aldri sikkert om man har ødelagt noe annet. Med god testdekning slår testene alarm med en gang en endring ødelegger noe som fungerte. Dermed tør teamet å utvikle raskt uten at eksisterende funksjoner går i stykker. Det senker både risikoen og kostnaden ved videreutvikling over tid.
Hva betyr testdekning?
Testdekning beskriver hvor stor del av koden som sjekkes av automatiske tester. Høy dekning betyr at det meste prøves automatisk, noe som gir trygghet ved endringer. Men tallet sier ikke alt: Det er mulig å ha høy dekning som likevel går glipp av det viktige. Viktigere enn et nøyaktig prosenttall er at de mest forretningskritiske delene av løsningen er godt testet, ikke bare de enkleste.
Hvilket spørsmål bør jeg stille leverandøren om tester?
Spør rett ut: Hva er dekket av automatiske tester, og hva testes manuelt? Svaret sier mye om hvor trygt systemet kan videreutvikles. Et modent team kan beskrive testingen sin og peker på at de kritiske funksjonene er dekket automatisk. Er svaret at alt testes manuelt før hver ny versjon, er det et varselsignal, for da blir endringer trege og risikable.