Mangt og meget er skrevet om unit testing – heriblandt også en masse kloge og generelle ting. Det vil jeg ikke forsøge på. Det er jeg slet ikke klog nok til.
I stedet vil jeg blot konstatere, at unit testing virker for mig, og det er lige meget, om det er mig eller andre, der skriver dem, og om de bliver skrevet før eller efter produktionskoden er skrevet.
Det, jeg for alvor har opdaget på det seneste, er, at min produktivitet afhænger proportionelt af mængden af tests (og kvaliteten af disse). Er der gode tests, er min konfidens større, jeg har nemmere ved at skabe overblik over koden, og jeg kan derfor hurtigere komme frem over stepperne.
Derfor insisterer jeg på, at unit testing (og anden testing) er en god ting, og derfor insisterer jeg på at bruge tid på det – ikke fordi nogen har skrevet en masse kloge ting.
Related posts:
Klogt skrevet
Hehe, du er godt nok hurtig!
Mange tak – det er jo bare noget jeg har oplevet på min egen krop
Rasmus, en fælles ex-kollega stillede mig engang et spørgsmål, som jeg stadig går og tænker over: Når koden er bedre med unittest, er det så fordi at der er unittest, eller er det fordi at det er vanskeligt at skrive unittest til dårlig kode?
Har du en mening om det?
Jeg havde håbet på, at jeg kunne undgå at gøre mig klog på test. Men efter at have tænkt lidt over det i løbet af i dag, så vil jeg da gerne komme med mit bud på det – men igen med udgangspunkt i mine egne erfaringer.
Min oplevelse er, at min kode bliver bedre af unittests, fordi de tvinger mig til at tænke over, hvordan jeg designer min kodes interface, idet unittests afslører, hvordan min kode skal anvendes. Det bliver ret hurtigt tydeligt, om jeg har lavet et eller andet galt, fordi jeg hurtigt opdager, at mine unittests bliver besværlige at skrive.
Hvis jeg skal sidde og overveje, om jeg gør det “rigtigt eller forkert”, når jeg skriver tests, så kan jeg stensikkert sige, at jeg vil få endnu mere svært ved det, når jeg engang skal til at anvende koden i produktion.
Hejsa.
Jeg tror helt bestemt den væsentligste effekt af unittests ikke er testene i sig selv, men dens afsmittende effekt på kodens design. Mener at have set nogen XP folk skrive noget om at unittesting mere er en design- end en test-aktivitet (muligvis Ron Jeffries).
Hvad er “god” og “pæn” kode? Er det ikke noget der er opdelt i overskuelige enheder, med mulighed for at genbruge den enkelte enhed i nye sammenhænge?
Hvordan unittester man noget, der ikke er opdelt, så man reelt må instantiere hele applikationen og halvdelen af verden i hver test? Ja, den er svær, så det må man hellere lade være med, hvis man vil unitteste. Og det vil så samtidig betyde at man kan overskeu effekten af en lille kodeændring uden at skulle kigge i hele applikationen og halvdelen af verden.
Ligeledes er unittesting er netop en afprøvning af, at koden kan bruges i nye sammenhænge – for det er netop det man gør i forbindelse med testen.