Har någon sett någon utredning (eller har egna erfarenheter) som tittar hur tidseffektivt TDD (Test-Driven Design) är gentemot "vanlig" programmering (spec-kodning-test-rättning-test-rättning-test-...)? Spontant känns ju TDD som ett "resursslöseri" på kort sikt, men jag inser givetvis att kvalitén på den skrivna koden blir bättre vilket kan löna sig i längden. Någon som vågar ge sig på en gissning på hur mycket längre (eller kortare) tid det tar att få fram en applikation med TDD? Kan det löna sig redan under utvecklingen av "version 1" eller är det först under applikationens "underhållsfas" (om man nu kan kalla det för det, men jag syftar på version 2 och framåt) som man kan räkna med att få igen investeringen p g a att underhållet blir enklare, färre buggar e t c... Som du säger så på kort sikt kan TDD ge lite problem. Men då snackar vi rätt små projekt ochTDD vs "Normal" programmering
Jag inser givetvis att det inte är lätt att jämföra, och inte lätt att ge några exakta svar, men är ändå nyfiken på vilka erfarenheter ni har som testat TDD...Sv: TDD vs "Normal" programmering
väldigt kort sikt. Dvs 1-2 veckors jobb som egentligen är en RAPID lösning.
USE-IT-ONCE-THEN-DELETE applikation typ.
Man kan nog säga att du spenderar säkert ca 60% eller mer av din tid att hitta fel i din kod eller hjälpa andra att förstå de fel de får av din kod. Detta kan jag garantera att TDD minimerar.
Allt du gör testar du i vilket fall. Du skriver lite kod du kollar så det fungerar, du glömmer kanske testa
olika scenarior (TDD om du behärskar det, hjälper dig att hitta dessa tidigt)... När du sedan är klar
så blir det ett fel och du får svårt att hitta felet, du rättar nått du tror är fel och pang ett nytt fel dykter upp... Allt detta hjälper TDD dig med att bli av med. När du ändrar nått får du svar direkt om andra saker går sönder pga din ändring, du har ett testcase så andra kan se hur du tänker att koden skall anropas så det blir lite som en gratis dokumentation. m.m.
Någon direkt statistik tror jag inte man tagit fram, men av erfarenhet så vet jag i alla fall hur mkt tid man spenderat på att hjälpa kollegor att förstå varför det blir fel och även spenderat massa tid åt debugging för att senare försöka hitta ett fel i myrstacken...
mvh johan