För att lyckas med testautomatisering måste det finnas rätt kunskaper samt en tydlig och långsiktig tilldelning av personalresurser och arbetstid.
Roller
Denna artikel beskriver en lämplig uppdelning på tre roller som representerar helt olika nivåer på kunskap om testautomatisering och testverktyg. Alla tre roller behövs för att framgångsrikt kunna automatisera tester och förvalta dem. De tre rollerna är testverktygsspecialist, testverktygskunnig och testare.
Med bara en testverktygskunnig, och utan testverktygsspecialist kan man lyckas på kort sikt med sin automatisering. Utan testverktygsspecialist misslyckas man med testautomatisering på medel och lång sikt.
Testverktygsspecialist
Krav på person som innehar rollen som testverktygsspecialist:
- Har expertkunskap om verktyg för testautomatisering i allmänhet och det verktyg som ska användas i synnerhet. Bör vara certifierad på aktuellt verktyg t.ex. QTP
- Har flerårig erfarenhet från automatisering i olika projekt
- Har framgångsrikt förvaltat och vidareutvecklat en testautomatisering i minst två år
- Har goda kunskaper om objektorienterad programmering och versionshantering
I den här rollen utför man följande uppgifter:
- Ansvarar för att testautomatiseringen blir framgångsrik
- Ansvarar för att testautomatiseringen blir lätt att underhålla
- Leder arbetet med testautomatiseringen
- Organiserar ett bra upplägg på versionshantering av testerna
- Implementerar de mer avancerade koncepten i testverktyget
- En stor del av arbetstiden ägnas också åt det mer rutinmässiga införandet av testautomatiseringen med hjälp av testverktyget
Testverktygskunnig
Krav på person som innehar rollen som testverktygskunnig:
- Har genomgått grundkurs och påbyggnadskurs i testverktyget
- Intresserad av att arbeta med testautomatisering
- Ser det som en intressant utmaning att successivt lära sig och överta arbetsuppgifter från rollen Testverktygsspecialist
I den här rollen utför man följande uppgifter:
- Scriptar tester i testverktyget
- Implementerar mer avancerade funktioner i testverktyget under ledning av Testverktygsspecialisten
- Provkör automatiserade tester och analyserar eventuella problem med testerna
- Startar tester i testverktyget och analyserar resultaten
Testare
I rollen som testare bidrar man indirekt till testautomatiseringen med följande uppgifter:
- Startar tester i testverktyget och analyserar resultaten. Rapporterar resultaten och eventuella förslag på förbättringar av de automatiserade testernas innehåll och upplägg
- Skriver och uppdaterar testfallsbeskrivningar
- Preparerar testdata, både indata till testerna och i systemet som testas
Bemanning
Rollen som Testverktygsspecialist är en heltidstjänst. Förutom att det är mycket arbete som ska utföras så är det viktigt att ha en person som har fullt fokus på testautomatiseringen för att detta arbete inte ska nedprioriteras i förhållande till andra arbetsuppgifter. Denna roll bemannas sannolikt med en konsult, då det både kan vara svårt att hitta någon internt med nödvändiga förkunskaper och att rekrytera en person som redan har denna expertis. Man bör dock redan från början ha en plan för kunskapsöverföring och avveckling av konsulten. Räkna med en konsultinsats på heltid under minst ett halvår. Med dedikerad och ambitiös egen personal kan sedan konsulten successivt avvecklas under ytterligare ett halvår.
Rollen som Testverktygskunnig är minst en halvtidstjänst. Den bör kunna bemannas med egen befintlig personal om man kan identifiera någon med rätt profil, intresse och långsiktigt engagemang. Alternativt bör det vara möjligt att med rimlig insats rekrytera en person med ungefär rätt profil som är beredd att växa in i rollen. Med rätt person i rollen som Testverktygskunnig så kan denne successivt överta rollen som Testverktygsspecialist, men det kräver då ett engagemang på heltid. I så fall måste man också hitta en ny person i rollen som Testverktygskunnig.
Hur man bemannar ett testautomatiseringslabb är definitivt ett intressant ämne som man lätt kan glömma bort när man i ett tidigt skede prototypar sina lösningar och skapar testfall.
Sen hur denna bemanning sker är så klart beroende av många omständigheter. Skalningen är ett av de stora problemen tycker jag – ska man kunna hantera hundra- eller tusentals kodändringar om dagen från hundratals utvecklare och köra testfall innan integration så ställer det extremt hög krav på robusthet och exekveringshastiget, men också på att det finns folk som faktiskt kan analysera alla fel som rapporteras av systemet – något man glömmer om man tror det är gratis att köra automatiska testfall. 🙂
Har man dessutom inbyggda system som man måste ladda ner mjukvara till så blir det plötsligt problem med hur man ska få plats med allt, kylning, och alla andra liknande problem. För att inte tala om att byggsystemet måste kunna hantera alla extra byggen man startar för att kunna köra sina testjobb. Man måste ofta ha någon som är expert på detta också, och det är ofta inte samma person som är duktig på testfall/test scope eller configuration management.
Det var väldigt spännande att jobba med, men det är som du säger långt från trivialt att få det att fungera på ett “produktifierat” sätt utan en massa problem i själva testautomatiseringssystemet.
Nyckeln, tror jag, är som du säger att ha någon som känner ägandeskap och jobbar med det på heltid och leder arbetet. Man måste hela tiden förbättra och vidareutveckla systemet för att det ska fungerar bra, och kommunicera med alla stakeholders så att allt runt omkring, som t.ex. byggsystemt, inte blir flaskhalsar, samtidigt som man inte själv får bli en flaskhals i t.ex. leveransprocessen.
Tack för ännu en intressant artikel i ämnet automatisering.
Tycker generellt att fokus bör vara på automatiseringsstrategier framför verktyg varav jag nog skulle definera om titlarna något på föreslagna roller.
Här är mina (nuvarande) tankar om ämnet:
1. Gift dig inte med ett verktyg. Bygg/utnyttja ett ramverk där man kan använda flera verktyg samt byta ut vid behov.
2. Fundera vilken typ av automatisering som ger mest värde/kostnad. End2End-automatisering (scenariobaserade tester via UI) är den svåraste och dyraste men kan rätt implementerad ge mycket värde. Innan man ger på sig End2End bör man se över applikationsdesignen och möjliggöra automatisering på lägre nivåer, exponera
affärslogik i automatiseringsvänligt lager, ex. Web Service, bygga in testbarhet bl. a.
3. Engagera hela teamet i automatisering, utnyttja applikationsutvecklarnas kunskap i programmering etc. Överväg automatiseringverktyg som använder samma språk som det applikationen är utvecklad i. Är automatisering en heltidssyssla? I vissa sammanhang ja, speciellt om man lägger fokus på End2End. Engagerar man hela teamet blir det en deltidsaktivitet som ingår i “definition-of-done”.
4. Om man bygger och deployar ofta, så seglar exekveringssnabbhet, skalbarhet och robusthet upp som viktiga egenskaper vilket diskvalificerar verktyg som QTP (min åsikt efter ca 10 års erfarenhet av vertyget) och
Excel. Satsa på verktyg som möjliggör exekvering serverbaserat stand-alone och rapporterar i realtid (inte EFTER en körning).
5. Ska man komma igång med automatisering är det en god idé att anlita en expert på området inledningsvis. Denna bör dock vara neutral i fråga om verktyg och har mer fokus på strategier som passar in i sammanhanget.
Certifieringar i all ära men arbetsprover och djupare intervjuer/referenser är det som gäller framför allt.
Slutligen tycker jag, automatiseringsnörd till trots, att automatisering får för stort fokus/tilltro ibland. Det finns många åtgärder att fokusera på innan man går loss med viktiga och dyra resurser på automatisering.
Tack Joham och Stefan för era nyttiga kommentarer och tankar.