Continuous Test Driven Development (CTDD) ehk pidev testipõhine arendus on tarkvaraarenduse metoodika, mis ühendab endas kaks populaarset praktikat: TDD (Test Driven Development) ja CI (Continuous Integration).
Selle mudeli puhul kirjutavad arendajad testid enne koodi kirjutamist (TDD), kuid lisaks käivitatakse neid teste automaatselt taustal iga kord, kui koodi muudetakse või salvestatakse (Continuous Testing). See tagab, et vigu märgatakse koheselt, mitte alles hiljem testimisfaasis.
CTDD järgib laiendatud TDD tsüklit, mida tuntakse sageli "Red-Green-Refactor" nime all, millele lisandub pidev integratsioon:
Kuigi CTDD on ise TDD edasiarendus, eksisteerib sellega tihedalt seotud variatsioone, mis keskenduvad testimise erinevatele aspektidele:
Allpool on CTDD tsükli visuaalne joonis (Red-Green-Refactor + CI):
| CTDD Tsükkel |
|---|
CTDD tähtsaim omadus on tagasisideahela lühendamine.
Miks see on oluline? Tavapärases arenduses leitakse vead alles tunde või päevi hiljem. CTDD puhul saab arendaja teada vea olemasolust sekunditega. See hoiab koodi kvaliteedi pidevalt kõrgena ja vähendab drastiliselt aega, mis kulub vigade (bugide) otsimisele.
| Omadus | Head (Plussid) | Vead (Miinused) |
|---|---|---|
| Kvaliteet | Väga kõrge koodikvaliteet ja vähem vigu (bugisid). | Nõuab distsipliini, et mitte kirjutada "halbu" teste, mis annavad valepositiivseid tulemusi. |
| Dokumentatsioon | Testid toimivad elava dokumentatsioonina – näitavad täpselt, mida kood teeb. | Testide ja koodi sünkroonis hoidmine nõuab lisatööd. |
| Kiirus | Pikas perspektiivis säästab aega, kuna silumist (debugimist) on vähem. | Alguses aeglasem, kuna iga liigutus nõuab testi kirjutamist. |
| Refaktoreerimine | Võimaldab julgelt koodi muuta, kartmata, et miski katki läheb. | Suure pärandkoodi (legacy code) puhul on keeruline rakendada. |
Siit leiad allikad ja lisalugemist antud teema kohta:
Martin Fowler: TDD Agile Alliance: ATDD Guru99: TDD Guide