2008-08-18
Testning har utvecklats till en professionell disciplin baserad på strukturerade metoder och effektiva verktyg. Idag är flera olika roller involverade i testprocesser. Två experter inom test och krav listar sex trender som visar vart branschen är på väg.
Ulf Eriksson och Chris Hofstetter på Konsultbolag1 listar sex aktuella trender inom test. Konsultbolag1 är specialister inom kravhantering och test av IT-system. Som ledande inom sitt område är de en naturlig samarbetspartner till Dataföreningen Kompetens för utveckling och genomförande av testutbildningar.
Vilka är då trenderna som styr utvecklingen i branschen?
– Utvecklarnas tester är traditionellt något som är eftersatt, berättar Ulf Eriksson. Tack vare att det har kommit enkla verktyg för automatisering, är det i dag praktiskt möjligt att automatisera dessa tester på ett kostnadseffektivt sätt.
Automatisering innebär processen att omvandla manuella tester till testprogram som kan utföra ett eller många testfall på mycket kort tid medan den som kör testerna kan luta sig tillbaka och vänta på resultatet. Det här är idealiskt i samband med regressionstester då många tester behöver köras på kort tid för att se att den nya leveransen är okej. Utvecklarna kan köra automatiska tester när systemet kompileras, därmed upptäcks många småfel tidigt.
– Det är kul att automatisera tester. Om något är kul, gör man det gärna. Det gör att testerna blir utförda i större utsträckning än om de utförs manuellt.
En nackdel med de automatiseringsverktyg som finns för utvecklare är att de oftast saknar möjlighet att spela in testfall från användargränssnittet, vilket är en av de viktigaste funktionerna i kommersiella verktyg för system- och acceptanstest. I stället är den som skapar testfallet tvungen att skriva testfallet i ett programmeringsspråk.
Exempel på verktyg: NUnit för Microsoft .Net och JUnit för Java. (Se www.xprogramming.com för fler alternativ).
Ulf Eriksson
Två vanliga kandidater för automatisering på system- och acceptanstestnivåerna är leveranstest och regressionstest.
– Leveranstesterna innebär kortfattade tester av en ny release för att se att den nya versionen är tillräckligt felfri för att genomgå fullständiga tester, säger Chris Hofstetter. Regressionstester bör göras efter varje ny release för att se att inga följdfel har uppstått i samband med felrättningar. Bägge dessa testtyper kommer att genomföras många gånger under systemets utvecklingstid och bägge slukar resurser.
Verktygen för system- och acceptanstest innehåller funktioner för att spela in och spela upp testfall baserat på användargränssnittet. Detta gör det enkelt att komma igång med verktygen utan att programmeringskunskaper krävs. De inspelade testfallen kan modifieras vid behov för att åstadkomma variationer i indata.
– Verktygen är tyvärr dyra att köpa in och de kostar relativt mycket varje år för support och uppgraderingar. När systemet ändras måste testfallen uppdateras för att fortsätta fungera, detta tar ofta mycket mer tid och resurser än vad man tror. Testerna som görs på system- och acceptanstestnivå är dyrare än de tester som görs av utvecklarna, därför tar det längre tid att räkna hem investeringen.
HP Mercury, IBM Rational och Compuware är de tre största leverantörerna av kommersiella automatiseringsverktyg.
Chris Hofstetter
– För några år sedan utfördes alla testuppgifter av en och samma person, fortsätter Chris Hofstetter. Kanske var det projektledaren eller systemförvaltaren som förväntades testa lite med högra handen. Trenden nu är att alltfler företag skaffar någon form av testprocess som beskriver hur man ska arbeta på ett enhetligt sätt inom företaget. Det behövs tydliga beskrivningar av roller och vilket ansvar dessa roller har.
Exempel på vanligt förekommande roller och ansvar:
– Roll och person är inte samma sak, det är vanligt att en och samma person har flera olika roller. Det är bra att tydligt definiera vad varje roll ansvarar för, beskrivningen bör omfatta ett kort stycke för var och en av rollerna.
– Vet du hur mycket pengar buggarna kostar i ditt system? Det och mycket annat kan du beräkna med hjälp av olika mätetal, säger Ulf Eriksson.
Mätetal som är ett annat ord för teststatistik är väldigt inne just nu. Det kan handla om enkla spårbarhetsmatriser som visar vilka krav som testas och tabeller som visar hur många fel som kvarstår. I testverktygen finns det många färdiga funktioner för att ta fram grafer, till exempel en S-kurva som kan visa i vilken takt felen hittas, rättas och stängs. Med hjälp av en sådan S-kurva kan man bedöma om systemet börjar bli klart för release eller om det bör testas ytterligare en tid.
Genom att bedöma fel-läckage kan man hitta test- och designaktiviteter som bör förbättras för att hitta fler fel tidigare, då felen är som billigast.
– För några år sedan upptäckte ”alla” att det är bra att ha en separat testprocess som inte är ett kort stycke i projektprocessen eller förvaltningsmodellen, fortsätter Ulf Eriksson. Nu när testprocessen finns, ska alla ha en kravhanteringsprocess som beskriver vilka aktiviteter som ska genomföras när och av vilka roller. Vi har tagit fram Stjärnan som illustreras med bilden nedan.
– Stjärnan beskriver hur kravhantering kan bedrivas i nyutveckling och förvaltning. Den innehåller sex viktiga steg. Oavsett om din kravhanteringsprocess heter Stjärnan, RUP eller något annat, så behöver något som motsvarar de sex stegen dokumenteras och kommuniceras till alla som arbetar med kravhantering i din organisation.
Kravhanteringsprocessen bör i högsta grad vara iterativ. Detta symboliseras i Stjärnan med de små cirklarna som tillsammans bildar en stor cirkel. När man arbetar iterativt, arbetar man i varv.
– Motsatsen, det som kallas sekventiellt arbete innebär att man exempelvis skriver hela kravspecifikationen i ett svep. Detta leder till att man överarbetar delar som inte behöver överarbetas och att man går ner för mycket på detaljer på vissa delar och därmed tappar överblicken Om man arbetar iterativt, börjar man i stället med att bara skriva rubriker på kraven. Sedan skriver man några rader på varje krav i ett varv och tar sedan ytterligare några varv då man förfinar kraven.
– Tidigare har det alldeles för ofta varit en skarp gräns mellan beställare och leverantör, ungefär som i bilden nedan, förklarar Chris Hofstetter.
– Resultatet av detta arbetssätt kan bli att beställaren skriver krav och leverantören återkommer senare med ett system som kunden ska acceptanstesta. Brister i kommunikation mellan beställaren och leverantören under tiden däremellan ledar ofta till att det system som levereras är fel.
Beställare och leverantör behöver arbeta mer tillsammans. Här är ett exempel:
Andra tekniker för att främja samarbete kring kraven är dokumentgranskning, användning av prototyper och ett gemensamt verktyg för lagring av kravdokumentation (exempelvis ReQtest från Konsultbolag1).
– De roller som idag finns för test kommer även att behövas inom kravhantering, säger Chris Hofstetter. Tidigare förväntades projektledaren sköta test med ena handen, i dag är problemet att projektledaren förväntas sköta kravhantering vid sidan av projektledarskapet. Exempel på roller som jag tror kommer: kravledare, kravadministratör, kravinsamlare och kravdokumentatör.
I dag finns det ISTQB-certifiering inom test (det som förut hette ISEB-certifiering), motsvarande kommer nog att komma som en standard även inom kravområdet.
Testutbildningarna i Dataförening Kompetens utbud, som är utvecklade i samarbete med Konsultbolag1, är en grundkurs i test- och kvalitetsarbete, en fortsättningskurs samt en kurs för testledare.
Grundkursen lägger under två dagar grunden för att kunna arbeta som testare eller testledare. Deltagarna får lära sig ett stort antal vanliga testtekniker, en testprocess och testverktyg, inklusive checklistor. Här ingår bland annat att ta fram användbar dokumentation såsom testplan, testfall, checklistor, felrapporter och den avslutande testrapporten.
Fördjupningskursen i test- och kvalitetsarbete breddar och fördjupar området, för dem som redan behärskar grunderna. Under två kursdagar tar lärarna från Konsultbolag1 upp bland annat fler tekniker för testfall, test i både nyutveckling och förvaltning, hur resurser för att testa ett system uppskattas och statistik för att bedöma kvalitet i tester.
Båda kurserna fokuserar på praktiska tips och övningar, som deltagarna direkt kan tillämpa på hemmaplan.
Den tredje kursen – Bli en effektiv testledare – lär inte ut testmetodik, utan fokuserar på områden som personalledning, konflikthantering och tidsplanering. Det är mjuka egenskaper som testledare behöver för att kunna leda ett testteam på ett professionellt sätt. Exempel på övningar som ingår är målsättning, hantering av personlighetstyper, självskattning och riskidentifiering.