Szvsz a TDD néhány lépését mindenki feltalálta már valamilyen formában. Valszeg már akkor, amikor a basic előtt pötyögött.
Emberünk ül a gép előtt. "Működik? Nem. És így? Nem. És amúgy? Igen. Fasza, mi a következő feladat?"
A nagy többség úgy programozik, hogy próbálgatja a lehetséges megoldásokat, és amikor talált egyet akkor örül.
A TDD szerintem ennek a folyamatnak a részletes, gép által ismételhető leírása.
Azaz ha a fenti "Működik?" elé odarakod, hogy "Szeretném, hogy a cucc így és így viselkedjen, ezekre a paraméterekre" és ezt a mini specifikációt le is kódolod első lépésként, akkor TDD-zel.
Vagyis a projectnek egy idő után lesz egy jó hosszú specifikáció-gyűjteménye, ami minden buildkor ellenőrizve van. Gép által, nem pedig egy demotivált fejlesztő/tesztelő által.
Az meg hogy unit teszt/integrációs teszt ebből a szempontból lényegtelen.
Azt szokták mondani hogy ezeket a mini-specifikációkat (teszteket) és magát a kódot ne ugyanaz az ember írja. Ezáltal nem lesz a tesztekbe olyan beleértve, ami a kód (objektum) belső működése. Ez az, amit még nem láttam hosszútávon működni. :)