Test Driven Development (TDD)

Test Driven Development (TDD) ehk testipõhine arendus on tarkvaraarenduse metoodika, kus testid kirjutatakse enne tegelikku programmi koodi. Protsess sunnib arendajat mõtlema läbi nõuded ja disaini enne koodi kirjutamist, tagades, et iga koodirida omab eesmärki.

TDD etapid (Red-Green-Refactor)

TDD põhineb väga lühikesel ja korduval tsüklil, mis koosneb kolmest põhietapist:

Kas TDD-l on alamvariante?

Jah, kuna TDD on laiema kontseptsiooniga lähenemine, on sellest välja kasvanud mitmeid spetsiifilisemaid alamvariante ja edasiarendusi:

Arendusmudel joonisena

TDD mudelit kujutatakse tavaliselt lõputu tsüklina või ringina, mis sümboliseerib pidevat arendust.

Tsükli visuaalne kirjeldus:

Kujuta ette kolme noolega ringi, mis liigub päripäeva:

  1. Alustad Punasest kastist (Test Failing).
  2. Liigud Rohelisse kasti (Code Passing).
  3. Liigud Sinisesse kasti (Refactoring).
  4. Seejärel alustad uuesti Punasest kastist uue funktsionaalsusega.

Tähtsaim omadus ja miks?

TDD kõige tähtsam omadus on koodi usaldusväärsus ja turvavõrk (Safety Net).

Miks? Kuna iga koodirida on kaetud testiga, saab arendaja teha muudatusi, lisada uusi funktsioone või refaktoreerida vana koodi ilma hirmuta, et miski ootamatult katki läheb. Kui viga tekib, annavad testid sellest koheselt märku ("Fast Feedback"). See vähendab drastiliselt vigade leidmise ja parandamise kulu projekti hilisemates faasides.

TDD Heade ja Veade tabel

Head omadused (Plussid) Vead ja riskid (Miinused)
Kõrge koodikvaliteet: Sunnib kirjutama modulaarset koodi. Ajakulu alguses: Esmane arendus on aeglasem.
Vähem vigu: Vead leitakse kohe arenduse käigus. Raske õppida: Nõuab arendajalt uut mõtteviisi.
Julge refaktoreerimine: Muudatusi on turvaline teha. Üle-testimine: Oht testida triviaalseid asju.
Dokumentatsioon: Testid on nagu elav juhend. Hooldus: Kui nõuded muutuvad, tuleb muuta ka teste.
Loe lisaks TDD kohta Wikipediast →

Allikad ja lisalugemist

Info pärineb tuntud tarkvaraarenduse praktikatest ja järgmistest allikatest:

Martin Fowler: TDD Wikipedia: TDD Agile Alliance: TDD
365 päeva TDD-d