Testarens dilemma – När är det dags att sluta testa?

Om du varit i testbranschen ett tag har du säkert hört uttrycket: - In God we trust, the rest we test. En korrekt ansats, eller helt uppåt väggarna? Det senare skulle jag säga. Låt mig förklara varför.

Testarens dilemma – När är det dags att sluta testa?

1200 600 C.A.G

En av de sju testprinciperna lyder ”Exhaustive testing is impossible”. Innebörden av principen är att du inte kan testa allt i praktiken. Inte ens väldigt enkla program. Låt mig ge dig ett exempel.

Nedan ser du en funktion som beräknar summan av tre heltal:

 

int Sum( int A, int B, int C)
{
___return (A+B+C);
}

 

Giltiga värden för A, B och C är:

 

1 ≤ A ≤ 1 000 000
1 ≤ B ≤ 1 000 000
1 ≤ C ≤ 1 000 000

 

Anta vidare att det i genomsnitt tar 0,1 sekunder att exekvera ett testfall. Om du ska testa samtliga giltiga kombinationer av A, B och C kommer detta ta:

 

(1 000 000 x 1 000 000 x 1 000 000) testfall x 0,1 sekunder/testfall = 10^17 sekunder

 

10^17 sekunder kanske inte låter så mycket, men om du räknar på det inser du snart att det motsvarar 3,2 miljarder år. Och då har du bara testat de giltiga värdena. Case closed!

 

När har jag testat klart?

–  Men hur vet jag när jag testat klart? En fråga som är lika relevant som den är svår att besvara. Jag kommer inte kunna ge dig ett exakt svar på frågan, eftersom svaret blir olika för varje system du utvecklar. Men det finns principer och riktlinjer som hjälper dig att hitta rätt nivå.

Låt mig först visa en schematisk bild som illustrerar vad test går ut på. Nedan ser du en bild som beskriver testrymden för ett system. Testrymden består av alla tänkbara tester. Det som utmärker testrymden är att testrymdens gräns är okänd. Du vet alltså inte hur stor testrymden är, bara att den är väldigt stor. Det du vet är att det finns buggar som gömmer sig någonstans i den, men du vet inte var. Det du gör när du testar ditt system är att du samplar testrymden. Du väljer att testa vissa delar och väljer bort att testa andra delar. Kärnan i test är hur du väljer vad du testar och vad du inte testar.

Ytterst begränsas testverksamheten av projektets förutsättningar

Det finns faktorer som begränsar dina möjligheter att genomföra testverksamheten i ett projekt. Liksom alla andra aktiviteter i ett projekt begränsas även test av tid, pengar och resurser. De tre faktorerna begränsar kvaliteten du kan uppnå. Man brukar beskriva relationen mellan de tre faktorerna och produktkvaliteten i projektledningstriangeln. Varje hörn i triangeln representerar en av faktorerna. Ytan som triangeln spänner upp representerar produktkvaliteten.

För att öka triangelns yta och därmed produktens kvalitet kan du:

  • tillsätta mer resurser,
  • tillföra mer tid och/eller
  • tillföra mer pengar till projektet (öka projektets kostnader)

När tid, pengar och resurser är förbrukade måste även testverksamheten upphöra. Men att sluta testa baserat på detta är en dålig idé. Orsaken är att du inte vet om produkten har tillräcklig kvalitet för att releasas eller ej. Det enda du vet är att du har slut på tid, pengar eller resurser.

 

Bedöma produktkvaliteten

Hur bedömer jag produktkvaliteten, kanske du undrar. Antalet öppna defekter är ett bra mått på produktkvaliteten, som många använder sig av.

Många öppna defekter innebär låg produktkvalitet. Det innebär att det finns många kända fel i systemet. Men vad innebär få öppna defekter? Är få öppna defekter detsamma som god produktkvalitet? Inte nödvändigtvis. Innan du kört ditt första testfall finns inga kända defekter, men det innebär inte att du har en god produktkvalitet, utan att den är okänd. För att du ska kunna säga något om produktkvaliteten behöver du köra många testfall. Du behöver med andra ord ha en god kvalitet på ditt testande (testkvalitet) för att kunna bedöma produktens kvalitet (produktkvaliteten). Förhållandet mellan öppna defekter, produktkvalitet och testkvalitet kan ses i bilden nedan.

Kontentan är att du behöver ha en tillräckligt hög testkvalitet för att kunna utvärdera produktkvaliteten.

 

Strategier för att sampla testrymden och mäta kvaliteten

För att du ska kunna utvärdera produktkvaliteten behöver du sampla testrymden på ett intelligent sätt och säkerställa att du har tillräckligt många sample (tester). Hur du väljer sample från testrymden och utvärderar testkvaliteten är en stor del syftet med test. Det finns fem approacher som vanligtvis används för detta syfte:

  • Krav
    Den absolut vanligaste approachen är krav. Krav återspeglar kundens/slutanvändarens behov och är därför en utmärkt utgångspunkt när du ska sampla testrymden. Du kan också enkelt mäta testkvaliteten genom att beräkna hur många krav som har täckts med genomförda tester.
  • Risker
    Medan kraven fokuserar på kundens/användarens behov är riskapporoachen inriktad på de negativa konsekvenser som en realiserad risk innebär. Genom att testa riskerna kan du få mer information om dem och på så sätt vidta åtgärder för att minska sannolikheten för att de inträffar eller de negativa konsekvenserna om de inträffar. Du mäter testkvaliteten genom att beräkna hur många risker som har täckts med genomförda tester.
  • Testtekniker
    Testtekniker är metoder som hjälper dig sampla testrymden. Testtekniker bygger på empiriska undersökningar kring var defekter vanligtvis uppträder. Man kan säga att det är visdom som samlats under åren och resulterat i flera olika metoder för att sampla testrymden. Exempel på testtekniker är ekvivalensklasspartitionering, gränsvärdesanalys, beslutstabeller, användningsfall och tillståndsövergångsmodeller. Alla beskriver hur du ska sampla testrymden samt beräkna testkvaliteten.
  • Kod
    Källkoden kan användas för att sampla testrymden. Du väljer då testfall för att maximera täckningen av olika strukturer i källkoden. Exempel på detta är kodsatstestning, beslutstestning med flera. Alla beskriver hur du ska sampla testfallen samt beräkna hur bra du täcker olika strukturer i koden med genomförda testfall.
  • Erfarenheter
    Erfarenhet från tidigare system kan användas för att sampla testrymden och brukar generera hög testkvalitet. Därför ska du inte bortse från denna approach, även om testkvaliteten inte går att kvantifiera och mäta.

 

Glöm inte bort användarna

Testkvaliteten mäts vanligtvis mot faktorer som är tolkningar av användarnas behov. Glöm därför inte bort att involvera användarna i testningen. Det är ju först när du fått ett okej från användarna som du faktiskt bevisat att produkten tillfredsställer deras behov!

 

Vill du veta mer?

Om du vill veta mer om riskbaserad test, testtekniker, produktkvalitet och testkvalietet rekommenderar jag att tittar närmare på våra kurs ISTQB: Certifierad Testare och Testtekniker för Agila Team.

Kontaktperson

Johan Meivert

+46 70 532 71 90

johan.meivert@cag.se

X
X