TDD er en del av Extreme Programming (XP)

Fagperspektiv

border

Gode grunner til å tenke testdrevet

Når testene lages først, og kjøres kontinuerlig, kan både feilsituasjoner og svakt design avdekkes før en eneste vanlig kodelinje er skrevet. Test-drevet utvikling står sentralt i utviklingsmetoden Extreme Programming (XP), laget av Kent Beck.

border

Et nyttig perspektiv når man utvikler programvare er å ta utgangspunkt i at systemet aldri egentlig er ferdig utviklet. Når brukere og markedet forventer seg levende programvare, må det alltid være enkelt å endre eller videreutvikle systemet. Derfor må også metoder for kvalitetssikring følge systemet hele veien, som en integrert del av utviklingen.

- Med testdrevet utvikling, lages automatiserte tester i parallell med selve løsningen. Uerfarne bruker kanskje litt mer tid i starten, men når dette blir en vane blir systemene raskere utviklet og får samtidig en høyere teknisk standard, som igjen bidrar til å tilpasningsdyktighet i markedet, sier Stein Magnus Jodal i Iterate.

Testdrevet utvikling handler ikke bare om å lage automatiserte tester, det handler også om hvordan kildekoden til systemet skrives. Dersom systemet skal være tilpasningsdyktig, må det være lite tidkrevende å rette opp feil og å endre funksjonalitet etter hvert som prosessen skrider fram. Funksjonalitet i systemet må teknisk sett være så løskoblet som mulig, kildekoden må følge gjenkjennelige mønstre, og utvikleren må alltid tenke at han ikke bare skriver programkode som skal tolkes av en datamaskin; den skal også tolkes av utviklerkollegaene som skal videreutvikle hans arbeid.

Testing med fra start

Jodal mener at testing skal på banen allerede når systemet unnfanges.

- Man tester tomme metoder først, og fyller ut med funksjonalitet etter hvert som den blir ferdig. Det gir mye tidligere feedback, sier Chief Scientist Kent Beck. Han er mannen bak metoden testdrevet utvikling. Han understreker også viktigheten av automatiserte tester.

- Erfaring tilsier at færre feil oppstår når utviklerne må ha testing i bakhodet underveis i utviklingsløpet. I det minste kan feilene oppdages og rettes tidligere, og konsekvensene minimaliseres, sier han.

Et annet viktig aspekt er at automatiserte tester ikke blir borte når systemet går fra utvikling til forvaltning. Hvis noen kommer og endrer på forutsetningene man har lagt inn, finner man ut av det med en gang man kjører testen på nytt.

Det at forandring er den eneste konstant, er en erkjennelse som også bør reflekteres i måten systemet er implementert og hvordan testrutinene er, mener Jodal.

- Kode som skrives etter konvensjoner, og med henblikk på å bli testet har en tendens til å inneholde færre feil, sier Jodal.

Mentalitet

Det finnes flere verktøy og metoder som understøtter konseptene bak testdrevet utvikling. Men først og fremst handler det om en mentalitet blant utviklerne og en kultur i utviklingsavdelingen.

Eller som Kent Beck – amerikaneren som fant opp testdrevet utvikling og nå er CTO i Iterate sier der;

- Programmerere må bli mer ansvarlig for det de leverer fra seg, og få et mer helhetlig forhold til det som utvikles. Tradisjonelt har programmerere vært tilbaketrukne og jobbet helt for seg selv, jeg tror at både programmererne selv og kundene tjener på at rollen blir mer utadvendt og sosial, sier han.