TDD, mint Test Driven Development.
A jelenlegi munkahelyemen, ez egy fontos fejlesztési eszköz. Nagyon egyszerűen fogalmazva az alapelve, hogy először tesztet írunk és utána csak production kódot.
A TDD fejlesztésnek 3 fő lépése van, ami folyamatosan körbe-körbe “hajtódik” végbe.
- Red
- Green
- Refactor
Red lépés
Először is mikor neki állunk egy algoritmus megírásához írnunk kell egy fail-elő tesztet. A teszt megírása elött meg kell fogalmaznunk magunkban, mit is szeretnénk, hogy csináljon az adott függvény amit megszeretnénk írni. Vegyük egy egyszerű példát.
Azt szeretnénk megírni, hogy a végső eredmény egy adott matematikai műveletett végezzen el. PHP-ban írom a példát, mert azt jobban ismerem. Az első tesztünk az lesz, hogy a függvényünk adjon össze 2 számot.
public function testSum() {
$this->assertSame(7, $this->calc(3, 4));
}
Ha lefuttatjuk az általunk kedvelt kód szerkesztőben a teszt futtató környezetünket. PHP-ban például ez a PHPUnit-ot jelenti. A végeredmény az lesz, hogy pirosan fog vírítani a konzolban.
Ez a Red lépés. Hibára futtatuk a tesztünket és csak ekkor javíthatjuk ki a tesztet, úgy, hogy a production kódban a megfelelő eredményt adjuk vissza.
Green lépés
Ebben a részben javítjuk ki a tesztünket, hogy zöld legyen. Az a fontos ebben a lépésben, hogy nem szabad annál többet írni, mint ami a teszt megkíván. A példa kedvéért a kódunkban nem fogjuk ténylegesen össze adni a két értéket, hanem csak egyszerűen vissza adjuk a 7-et.
public function calc($x, $y) {
return 7;
}
Ezek után ha újra lefuttatjuk a tesztünket, már zölden is virít. NIncs más teendőnk ezután csak tovább lépni a következő lépésre.
Refactor lépés
A példánkban ennél a lépésnél nagyon nem lehet mit refactorálni, de ennél a lépésnél lehet megtenni azt, hogy amit a production kódban megírtunk azt szépítsük, gyorsabbá vagy újra felhasználhatóvá tegyük. Ennél a lépésnél is nagyon fontos, hogy bármi amit módosítunk a kódunkon, az ne “törje” el a tesztünket. Vagyis mindig zöldben kell maradnunk. Ennek a lépésnek a vége, akkor van mikor magunk úgy gondoljuk.
Miután végeztünk folytathatjuk a lépéseket újra az elejétől.
Repeat lépés
A folyamat kezdődik előlről újra a red lépésben vagyunk, vagyis hibás tesztet kell írnunk. A példánkban látszik, hogy nem a megfelelő a számíásunk, mert hát csak egyszerűen 7-est adunk vissza ahelyett, hogy ténylegesen kiszámítanánk. Ezt nagyon egyszerűen tudjuk orvosolni. Írnunk kell egy másik tesztet ami más eredményt vár a függvényünktől.
public function testSum() {
$this->assertSame(7, $this->calc(3, 4));
}
public function testAnotherSum() {
$this->assertSame(9, $this->calc(2, 7));
}
Lefuttatjuk a tesztünket és hibára is fut, nyílván. A production kódunkat már javíthatjuk azzal a lendülettel, hogy ténylegesen számítjuk az értékeket.
public function calc($x, $y) {
return $x + $y;
}
Fontos, hogy úgy módosítsuk a kódunkat, hogy minden tesztünknek zöldnek kell lennie. Innen mindent újra meg újra meg újra meg újra.

Majd az egésznek vége is van, hogy ha a végeredmény azt adja vissza amit szeretnénk akkor végeztünk is.
Gratulálok, meg tanultad a TDD alapjait.
