tirsdag den 4. februar 2014

Problemet med testcases

Skrevet af Carsten

I mange år har jeg talt dunder imod brugen af ordet test case. Mange har stillet sig uforstående overfor mig og sagt: jamen....!

Ja, kan jeg svare, vi testere bruger test cases, for en test case er jo bare et check - et enkelt sted i tid og (system) rum, som vi afprøver værdien af. For os testere er det ligetil.
Det jeg opponerer imod er alle andre end testeres brug af test cases.

Jeg bliver deprimeret af at tænke over alle de gange en ellers velmenende projektleder har bedt mig om at sætte mig hen i hjørnet og skrive nogle test cases, eller bedt mig spørge en arkitekt, hvor mange test cases der nok skal laves. Det er forkert på så mange niveauer, at det er til at skrige over.

Som tester bruger jeg test cases som en tømrer bruger søm og hammerslag. Jeg bruger så mange jeg synes der skal til. Nogle gange bøjer sømmene, nogle gange rammer jeg ikke lige hovedet på sømmet. Så kommer der et hammerslag til, eller jeg skifter et søm ud - som tømrer. Som tester konstruerer jeg nye test cases hele tiden. Jeg er jo igang med at undersøge noget. Og jeg véd hvad jeg gør - jeg er en god tester.

Så derfor kan jeg ikke på forhånd sige, hvor mange test cases jeg skal lave før jeg er færdig. Jeg kan gætte, men givetvis vil jeg blive nødt til at tage nogle fra, og lægge nogle til og en del er måske alligevel ikke værd at udføre, eller kan slet ikke udføres. Derudover er der mange, som jeg kun vil udføre en eneste gang - for at følge analogien med tømmeren: når sømmet nu ér slået i, så er der jo ikke nogen grund til at gøre det igen.

Det opfattes ofte som ren rebelskhed ikke at ville tælle test cases, for så kan man jo ikke måle den daglige tilvækst / fremdrift / metrik. Mit bedste svar er: "så hold op med at bruge en liniær model. Udfordr digselv og brug en organisk vækstmodel istedet". For mig er antallet af checks jeg udfører ligeså ligegyldigt for mit resultat - den information jeg skal levere - som antallet af hammerslag, tømmeren udfører for at bygge et hus, er for den der skal bo i huset. Bare fordi man kan tælle ting betyder det jo ikke at det man når frem til kan bruges til noget.

Hvis jeg absolut skal tælle test cases havner jeg nemlig i samme problem som drengen der skal gøre op, hvor mange stykker legetøj han har. En bold, det er en. En ishockeystav, to. Modelbiler, så er vi på fem. Brio-togbane, hmmm.. er stationen noget der skal tælles for sig - er vognene, eller er det bare en bane og et tog, eller et stykke legetøj ? Og hvad skal det i det hele taget også bruges til? Er det ikke fløjtende ligegyldigt om der er tyve eller hundredogsyvogfyrre?

Nogle gange er det rædselsfuldt at bevidne brugen af liniær logik i et projekt. Som dem der havde næsten totusinde prædefinerede test cases, som de ikke gik igang med, alene fordi de havde regnet ud at med den planlagte gennemsnitstid gange antallet, divideret med antal testere - og så holdt op imod de få uger de havde tilbage inden deadlinen, så kunne de ikke nå at blive færdige. De havde simpelthen snookered sig selv, med meningsløs logik. For der var jo tid: det behøvede jo da ikke være alt eller intet. De vidste jo ikke engang om de totusinde test cases var de rigtige! De kunne jo have startet med at sætte en enkelt tester hen i en time eller to og se hvad der kom ud af det. Så  kunne de have fået en idé om, hvorvidt systemet virkede bare nogenlunde, eller om det var helt til hest. Nogle gange kan det være svært at se lyset for bare tælle.

Når andre end testere begynder at se på test cases som et produkt i sig selv går det ganske enkelt galt: for et systems evne til at fungere kan på ingen måde udtrykkes fornuftigt i form af test cases.
Så fjern fokus fra test casene, og flyt det over på dét du egentlig gerne vil vide noget om.


1 kommentar:

  1. Tak for en fornuftig post. Jeg har heller aldrig forstået denne snak om 'test cases'. Selv undgår jeg helt at tale om dem, da jeg jo kan konstatere at det at tænke i test cases får folk til at vælge dårlige løsninger. (Jeg må dog sige, at jeg, i modsætning til dig, primært har oplevet problemet hos andre testere end hos folk som ikke er testere).

    SvarSlet