Keszei Balázs
Készítette: Keszei Balázs
2 perc olvasás

Kategóriák

  • development

Címkék

  • develop
  • work
  • tdd

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.

And again

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.