Katjana Brandt

Hur mycket test behövs i ett mjukvaruprojekt och vem testar?

Varför måste man ha en särskild testare för att testa? Varför kan inte utvecklaren testa det hen gjort och sedan lita på att allt är bra?

Svaret är att man behöver någon som har en helhetssyn på alla funktioner och integrationer i ett mjukvaruprojekt. Tumregeln brukar vara att en utvecklare som testar sitt eget arbete hittar 30 till 50 procent av det totala antalet avvikelser man hittar vid test. Detta beror på att personen gör samma antaganden vid programmeringen som vid testerna. Om dessa antaganden är inkorrekta kommer hen inte att hitta problemen.

Dessutom kan personen ifråga missa saker för att hen är emotionellt knuten till sitt verk. Det är hens bäbis, och psykologiskt vill man inte hitta fel på det man själv gjort. Därför rekommenderar jag att projektet tar in någon som tar sig an uppgiften ur ett testperspektiv och som är utbildad till detta. En utbildad testledare vet hur man ska tänka, vilka problemområden som brukar finnas och vilka analysmetoder och testtekniker som passar i olika situationer.

En utbildad testledare förstår också att test inte är detsamma som kvalitet. Test är istället en funktion för att informera om hur det står till med kvaliteten på produkten utifrån olika kavalitetsattribut (definierade i ISO 25010, se figur), som exempelvis funktionalitet, pålitlighet, användbarhet och säkerhet.

Hur många utvecklare tänker på aspekter bortom funktionalitet och kanske prestanda (om ens det)? En testledare däremot är utbildad till att ställa frågor kring aspekter som:

  • Hur pålitligt är detta system?
  • Hur användbar är den här funktionen?
  • Hur snabbt svarar den här integrationen?
  • Hur ska detta underhållas?
  • Hur svårt kommer det att vara att flytta den här applikationen till en nyare version av iPhone?
  • Kan någon bryta sig in i vårt nätverk via den här hemsidan?

Om ingen ställer dessa frågor kan vi inte heller ta ställning till om det är viktigt.

Jag får ibland frågan hur stor del av projektbudgeten man ska avsätta för test. Mitt svar är att det är otroligt individuellt. Ofta hör man att 20 till 30 procent av utvecklingsbudgeten är lämpligt. Det skulle kunna vara en måttstock om du inte vet någonting alls om ditt projekt. Men då ska du också vara väldigt medveten om att beräkningen kan slå väldigt snett.

Tänk t.ex. att du ska migrera över all funktionalitet och data på en ny version av en plattform. Det kanske behövs 200 utvecklingstimmar för detta. Skulle 40 till 60 timmar räcka för att skriva en testplan, analysera vad som behöver testas och exekvera testerna? Observera att jag då medvetet utelämnat uppgiften att skriva testfallen. Detta skulle alltså förutsätta enbart utforskande tester.

Naturligtvis skulle detta inte räcka. Plattformen i fråga innehåller kanske åtta system/applikationer. Den beräknade tiden för att sätta upp plattformen, konfigurera den, lägga över de nya systemen och applikationerna, konfigurera dem samt migrera data, skulle kräva betydligt mer tid. Och allt detta behöver testas. Noggrant!

Därför är mitt råd att inför varje release/projekt/etc. göra en analys av vad man behöver testa. Gör detta med hjälp av produktrisker. Produktriskerna handlar om potentiella problemområden i mjukvaran. Det kan gälla att kvaliteten på produkten inte är tillräckligt bra, möjliga skador på organisation eller individ eller att man äventyrar nyttan av projektet såsom det beskrivits i affärsidén. En produktrisk är alltså en risk som är relaterad direkt till testobjektet Knyt ihop produktriskerna med kvalitetsattributen. Utifrån den analysen kan du sedan ta beslut om vad som ska testas och vilka testtekniker som ska användas.

Låt sedan kvalificerad testpersonal med hjälp av adekvata testtekniker ta fram testidéer, testfall, testdata, o.s.v. För helhetssyn behövs i ett mjukvaruprojekt.

Läs även min blogg: "Är det nödvändigt att testa mjukvara?"

Läs mer om CGI:s tjänster inom test och kvalitetssäkring

Blog moderation guidelines and term of use