Testdækning er et ofte overset, men meget vigtigt begreb inden for test – både for testere og ledere.

Testdækning, eller på engelsk Test Coverage, er et udtryk for testens omfang; målt på ”noget” der rent faktisk kan tælles og sat i forhold til, hvor mange der i alt er af dette ”noget”. ”Noget” kaldes også et dækningselement og kan f.eks. være antal krav, kodelinier, interfaces, knapper o.lign. Testdækning er således et objektivt tal for testens omfang.

Ofte stiller testere og ledere sig tilfreds med subjektive mål for testens omfang, såsom ”vi har brugt den resterende tid”, ”vi har testet det vigtigste” eller ”vi har lavet en grundig test”. Nogle gange er vi lidt mere præcise og siger at ”vi har testet i 70 timer” eller ”vi har gennemført alle 50 testcases”. Problemet er bare, at det ikke siger noget om, om de 50 testcases dækker 2% eller 100% af systemet.

 

Definition
Den kryptiske definition på testdækning er:
Graden, udtrykt i en procentdel, af aktivering af et specificeret dækningselement ud fra en sekvens af testcases.
I min frie fortolkning kan man blot sige: Procentdelen af dækningselementet der er testet.

 

Eksempel
Lad os tage et eksempel: Et system er kodet ud fra 50 Use Cases og skal nu testes. Vi vælger at udtrykke testdækningen, hvor dækningselementet er Use Cases.

Hvis vi har gennemført 30 tests, hvor hver test rammer én Use Case er testdækningen: 30 x 100 / 50 = 60%.
Er det objektivt at sige, at vores testdækning er 60% på Use Cases?  - Ja!
Er det et udtømmende svar på testens omfang?  - Nej, bestemt ikke!

Hvad kan vi gøre ved det?
- Vi kan udtrykke testdækningen baseret på flere dækningselementer.

F.eks. kan testdækningen i det aktuelle projekt være:
•    100% på User Stories
•    70% på instruktioner (code statements)
•    45% på beslutninger (code decisions)
•    89% på grænseflader
•    44% på transaktionstyper
•    78% på menupunkter
•    75% på brugerroller
•    90% på forretningsprocesser

 

Dette er blot nogle eksempler. Hvilke og hvor mange dækningselementer der giver værdi afhænger af den enkelte organisation.

Læg mærke til at eksemplerne dækker forskellige testniveauer: F.eks. er instruktioner på unittest niveau (og kræver værktøj at måle) mens forretningsprocesser er på accepttest niveau. Dermed kommunikerer de også til forskellige modtagere. Sæt dig i modtagerens sted, når du skal vælge dækningselementer. Eller forklar begrebet og spørg hvad der giver mening for vedkommende.
Det stærke ved testdækning er at den er udtrykt i procent. Det tvinger testeren til at forholde sig til, hvor mange tests der skal til at opnå 100%.
Skal man så altid gå efter en dækning på 100%?  - Nej, bestemt ikke. Men man skal forholde sig til dækningsprocenten. Det ligger desværre udenfor denne artikels rammer at gå i detaljen med, hvilke parametre der spiller ind på, hvad en passende testdækning er, men en af de vigtige er risici.

 

Mål for testen
Testdækningen er således en objektiv måde at rapportere om testen på. Hvis vi gør os tanker om testdækningen inden vi går i gang med testen, kan vi bruge det som objektive mål for testen. Målet kan f.eks. være 75% instruktionsdækning og 100% User Story dækning. Eller det kan præciseres så målet er 100% for User Stories med prioritet Høj, 70% for User stories med prioritet Mellem og 30% for User Stories med prioriteten Lav. Som du kan se, er mulighederne for at være både objektiv og præcis mange.
Udover mål for testdækningen, indgår der også mål for fejlniveauet (kvaliteten), når man skal opstille mål for testen. Det vil vi komme ind på i næste nyhedsbrev.

 

Lad os lave en liste med dækningselementer
Jeg har mødt testere som har en checkliste med 20–30 dækningselementer, som de vælger fra, når de starter et nyt projekt, men for testere som ikke er vant til at bruge testdækning, kan det være svært at komme i gang.
Hvilke dækningselementer bruger du?

Send os en Denne e-mail adresse bliver beskyttet mod spambots. Du skal have JavaScript aktiveret for at vise den., så publicerer vi dem på vores hjemmeside til inspiration for alle.

Artiklen er skrevet af Torben Hoelgaard