Polc #002: Kent Beck – Test Driven Development

…by example. Ismét egy klasszikust, sokak szerint alapművet veszek elő, amit nem régiben “kénytelen voltam” újraolvasni.

 

Kent Beck lassan két évtiede kiadott könyve (az első kiadás 2000-es) még mindig az egyik kötelező olvasmány, ha az ember képet akar kapni a TDD-ről, azaz tesztalapú fejlesztésről. (Test Driven Development)

Az amúgy nem túl terjengős (hála a jó égnek!) könyv 32 fejezete 3 részre oszlik. Az első részben egy Java-alapú példán keresztül követhetjük nyomon egy néhány mondattal leírható probléma – kvázi-specifikáció… hányszor találkozunk ezekkel a való életben is? 😃 – kódba öntését TDD szemléleten keresztül. Mindezt a szerző kellőképpen alapos magyarázatokkal egészíti ki. Tulajdonképpen nem is kifejezetten magyarázatokkal – a gondolkodását követhetjük nyomon, ami hasznos. Ha nem olvasunk előre, akkor mi magunk is megpróbálhatjuk hozzá hasonlóan megoldani a problémát.

A második részben egy talán még érdekesebb TDD-alapú fejlesztést láthatunk: egy teszt-keretrendszer magvainak lefejlesztését Pythonban, mégpedig úgy, hogy tulajdonképpen a fejlesztés alatt álló rendszerrel teszteljük saját magát, és a rendszer hiányosságai adják a következő lépést, vagyis, hogy mi a következő feature, amit le kellene fejleszteni. Soooo meta! 🙂

Ez a két példa jól kiegyensúlyozza azt, hogy a valóságban is van, hogy van egy kész speckó, amit akár azonnal kódba is önthetnénk, viszont van, hogy fejlesztés közben derül ki, hogy pontosan mit is és hogyan is csinál majd a szoftver.

A könyv harmadik része kicsit szétszórtabb, szerteágazóbb, egymástól elkülönülő fejezetekre épül, amelyekben a teszt-alapú fejlesztéshez kapunk hasznos tanácsokat, gyakran előforduló mintákat, hibákat…

Az első két rész tehát inkább azoknak nyújt hasznos szolgálatot, akik most ismerkednek a TDD-vel, vagy akár a teszteléssel, a harmadik pedig azoknak, akiknek az alapok már megvannak, de szeretnék csiszolni a tudásukat. De ettől függetlenül persze veszteni nem nagyon lehet azzal, ha esetleg az egész könyvet újraolvassuk néha. 🙂

A könyv egyik hátránya, hogy hát… Java és Python. Nem C#. De ettől függetlenül én anno minimális Python és még kevesebb Java ismerettel is probléma nélkül tudtam értelmezni a kódot, szóval nem kifejezett probléma, inkább csak zavaró. A Python részre viszont azt mondanám, hogy mindenképpen szerezzünk egy kis tapasztalatot Pythonban, legalább Hello World szinten, mielőtt belekezdünk ebbe a részbe a könyvben, különben izzasztó lesz kisilabizálni az ismeretlen szintaxis okozta bonyodalmakat…

Ezt leszámítva viszont monthatni hibátlan a könyv. Nagyon hasznos, hogy nem ex catedra, szárazon magyaráz elméletet, hanem a minimálisan szükséges alapok áttárgyalása után mindent egyből kódba önt, és azon keresztül vezet rá minket a problémákra.

Az első két részből szépen el lehet sajátítani a TDD-t – lehet, hogy nem árt közben önállóan is kódolni! -, a harmadik rész pedig irányba állít olyan kérdésekben, amik inkább átívelőek, nem egy konkrét lépéssel, vagy problémával kapcsolatosak.

Egyszóval mindenképpen ajánlott könyv, ha meg akarjuk tanulni a TDD-t. (Ez 9 szó volt, de mindegy.) Ha a cégnél, ahol dolgozol, nem kell TDD-t használnod, akkor pedig pusztán azért ajánlott, mert a következő munkahelyeden lehet, hogy kell majd. 🙂

Továbblépés

Ha már éjfeketeövesre képezted magad TDD-ben, és percenként egy tucat Red-Green-Refactor-ciklust tudsz lenyomni (…najó, nem csak akkor), akkor ajánlott plusz “irodalom” Kent Beck és David Heinemeier vitája arról, hogy a TDD halott-e. Spoiler: nyilván nem. 🙂

(Illetve lesz egy másik TDD könyv, amit majd ajánlani fogok, de az még odébb van, addig tessék ezt átrágni! 🙂 )

Megjegyzések, kérdések, ötletek, ajánlások jöhetnek itt, e-mailben, twitteren, vagy ahol épp megtaláltok.

 

Hírdetés

Szerző: Fülöp Dávid

I'm a software developer, trainer, Microsoft MVP interested in .NET and related technologies. Currently mostly .NET Core, Docker, Kubernetes...

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

Kapcsolódás: %s

%d blogger ezt szereti: