Vad är automatiserade tester?
Automatiserade tester är program som kontrollerar att mjukvaran fungerar, körda automatiskt vid varje ändring i stället för manuell klickning före release. De brukar delas i enhets-, integrations- och end-to-end-tester. Affärsnyttan är att man vågar ändra snabbt utan att gammalt går sönder – och en självklar fråga är vad som täcks av tester och vad som testas för hand.
Automatiserade tester är en av de saker som skiljer mjukvara som går att lita på och bygga vidare på från mjukvara som blir allt räddare att röra. Begreppet låter tekniskt, men idén är enkel: låt datorn kontrollera att allt fungerar, i stället för att lita på handpåläggning. Här är vad det betyder och varför det påverkar dig som beställare.
Definitionen
Automatiserade tester är program som kontrollerar att mjukvaran fungerar som den ska. I stället för att en människa manuellt klickar igenom systemet före varje release för att se att inget är trasigt, skrivs kod som utför de kontrollerna automatiskt – och den körs vid varje ändring, om och om igen, på sekunder.
Skillnaden mot manuell testning är att automatiska tester är snabba, uttröttliga och konsekventa. De kontrollerar samma saker perfekt varje gång, tusentals gånger om dagen om det behövs, och de larmar i samma stund ett fel införs. Ett fel som annars kanske hade upptäckts av en användare långt senare fångas i stället direkt, av utvecklaren som just orsakade det.
Testpyramiden: tre nivåer
Automatiska tester finns i flera sorter, och de brukar beskrivas som en pyramid för att visa hur de bör balanseras.
- Enhetstester kontrollerar de minsta byggstenarna var för sig – en enskild funktion, en liten bit logik. De är snabba och billiga att köra, och ska därför vara flest. De utgör pyramidens breda bas.
- Integrationstester kontrollerar att flera delar fungerar rätt tillsammans – att till exempel koden och databasen samspelar som tänkt. De är något tyngre och färre än enhetstesterna.
- End-to-end-tester härmar en riktig användare och provar hela flödet från början till slut, genom hela systemet. De ger störst trygghet men är långsammast och känsligast, och ska därför vara färst – pyramidens smala topp.
Formen är själva poängen: många snabba tester i botten, få heltäckande i toppen. En pyramid som står på sin spets – få enhetstester, många långsamma end-to-end-tester – blir trög och skör.
Ett konkret scenario
Säg att en utvecklare ska lägga till en rabattkod i en e-handel. Ändringen är liten, men rör kassan – systemets känsligaste del. Utan automatiska tester måste någon manuellt klicka igenom hela köpflödet för att kontrollera att inget annat påverkats, och risken finns alltid att man missar ett fall.
Med automatiska tester på plats körs i stället hundratals kontroller på sekunder så fort ändringen sparas: räknas summan rätt, fungerar betalningen, går kvittot ut, påverkas inte fraktberäkningen? Om rabatten råkat ha sönder något annat säger testerna till omedelbart, med besked om exakt vad. Utvecklaren rättar det på plats, innan koden ens når nästa steg. Samma ändring, men med ett skyddsnät som gör det tryggt att göra den snabbt.
Affärsnyttan: våga ändra snabbt
Det scenariot fångar hela värdet. Den verkliga nyttan med automatiska tester är inte att hitta fel en gång, utan att göra det tryggt att förändra systemet om och om igen över tid.
Utan tester blir varje ändring ett vågspel: man vet aldrig säkert om en ny funktion råkat rasera något gammalt, och rädslan för det gör utvecklingen långsam och försiktig. Med god testtäckning larmar testerna direkt när en ändring bryter något som fungerade, och teamet kan därför utveckla snabbt och självsäkert. Det sänker både risken och kostnaden för all framtida vidareutveckling – vilket är exakt det som avgör hur långlivat och användbart ett system blir. Det hänger tätt ihop med hur mycket teknisk skuld som byggs upp.
Kontrollfrågan till leverantören
För dig som beställare finns en enkel och avslöjande fråga att ställa: vad är täckt av automatiska tester, och vad testas för hand?
Ett moget team svarar utan att tveka, kan beskriva hur de testar och pekar på att de affärskritiska flödena är automatiskt täckta. Är svaret i stället att allt kontrolleras manuellt före varje release, är det en varningssignal – då blir ändringar långsamma, dyra och riskabla, och systemet svårare att lita på ju mer det växer. Vill ni ha ett neutralt omdöme om testningen i ert system, hör av er så tittar vi på det tillsammans.
Vanliga frågor
Vad är automatiserade tester, enkelt förklarat?
Det är kod vars enda jobb är att kontrollera att den riktiga koden fungerar. I stället för att en människa manuellt klickar igenom appen före varje release, kör datorn tusentals kontroller på sekunder och säger till om något gått sönder. Testerna körs automatiskt vid varje ändring, så fel upptäcks direkt när de införs i stället för av en användare långt senare.
Vad är testpyramiden?
Det är en modell för hur olika testtyper bör balanseras. Enhetstester kontrollerar de minsta delarna var för sig och ska vara flest, för de är snabba och billiga. Integrationstester kontrollerar att delarna fungerar tillsammans. End-to-end-tester härmar en riktig användare genom hela flödet och ska vara färst, för de är långsammast. Bred bas, smal topp – därav pyramiden.
Varför är automatiserade tester värda pengarna?
För att de gör det tryggt att förändra systemet. Utan tester blir varje ändring en risk: man vet aldrig säkert om man råkat ha sönder något annat. Med god testtäckning larmar testerna direkt om en ändring bryter något som fungerade, så teamet vågar utveckla snabbt utan att gammalt går sönder. Det sänker både risken och kostnaden för att vidareutveckla över tid.
Vad betyder testtäckning?
Testtäckning beskriver hur stor del av koden som kontrolleras av automatiska tester. Hög täckning betyder att det mesta provas automatiskt, vilket ger trygghet vid ändringar. Men siffran säger inte allt – det går att ha hög täckning som ändå missar det viktiga. Viktigare än ett exakt procenttal är att de mest affärskritiska flödena är väl testade, inte bara de enklaste delarna.
Vilken fråga ska jag ställa min leverantör om tester?
Fråga rakt ut: vad är täckt av automatiska tester, och vad testas för hand? Svaret säger mycket om hur tryggt systemet går att vidareutveckla. Ett moget team kan beskriva sin testning och pekar på att de kritiska flödena är automatiskt täckta. Om svaret är att allt testas manuellt före varje release är det en varningssignal, för då blir ändringar långsamma och riskabla.