Jag skriver mycket kod. Det är en svår övning och inte som många tror, bara att skriva ner kraven så att en maskin skall förstå dem. Det är lätt att det blir fel, särskilt när man utgår från ett blankt ark och skall skriva kod som är snabb, effektiv, lätt att läsa och underhålla. Sen skall den visst fungera också. Koden skall inte bara uppfylla sin uppgift, den skall ha ett gränssnitt man vill använda, den skall kunna indexeras av sökmotorer läggas ut i molnet och funka där.

Det vet vi alla hur svårt det är att bara skriva ett mail som får fram budskapet hos läsaren. Det är svårt att skriva kod. Därför har jag en metod.

När jag får en specifikation börjar jag med att skriva ner kraven som körbara program som verifierar att mitt system uppfyller kraven. Sen implementerar jag systemet så att det ett efter ett annat uppfyller de tester av mina krav som jag skrev först. Detta kallas testdriven utveckling och är en metod för att skriva kod på ett sätt som är säkert, stabilt och genomtänkt.

Testdriven utvecklingsprocess

En bieffekt är att vi får en testsvit som låter oss verifiera kraven mot systemet gång på gång. Ändringar som bryter systemet kommer upptäckas tidigare.

Jag får ofta höra att testdriven utvecklingsmetod gör att vi inte behöver testare i projektet. Detta kommer från personer som inte förstår att testdriven utveckling är en metod för att skriva kod och inte en testmetod. Felet ligger givetvis i namnet som antyder att det hela har med testning att göra.

Testaren bidrar med att hitta kraven som avgör ifall funktionen är klar eller inte. Uppfyller den utvecklade funktionen användarnas behov på ett tillfredställande sätt, eller måste vi ändra och göra tillägg för att nå i mål? Kortfattat saknas en viktig pusselbit i diagrammet ovan, nämligen frågan, ”är funktionen färdig”?

Testdriven utvecklingsprocess med testare.

Sanningen är att testdriven utveckling faktiskt leder till ett lägre behov av testning i projektet, men inte för att utvecklare har tagit över testarens uppgifter, utan att testdriven utveckling är en metod som leder till färre buggar. Detta frigör tid för testaren som kan lägga mindre tid åt att faktakolla utvecklaren, och mer tid åt att experimentera och utmana ifall systemet verkligen löser användarens problem. Det är trots allt där våra testare kan bidra mest.