in Code

Katama do znanja – mojih prvih 12 unit testova [en]

Već duže vreme sam imao želju da svoje programerske veštine ojačam sa znanjem pisanja unit testova i da TDD (Test driven development) primenim u praksi. Čitao sam dokumentaciju, napisao neke probne testove ali nisam išao dalje od toga. Nažalost firme kod nas nisu spremne da potroše više novca i vremena na TDD jer po mom mišljenju nema ni sluha ni znanja o ovoj programerskoj tehnici.

Katama do znanja

Kata do znanja – slika preuzeta sa travel67.wordpress.com

Juhn Cleary je objavio blog post u kojem najavljuje da će 12 dana objavljivati i raditi po jednu TDD katu i poziva programere da mu se pridruže. Bio sam oduševljen idejom jer sam znao da je to idelan način ulaska u novu tehnologiju. Jer kako kaže John nećete se probuditi jednog dana i reći sebi “Od danas ću početi da primenjujem TDD u razvoju aplikacija”. Prihvatio sam ovaj izazov kao i mnogi drugi programeri širom sveta.

Tviter je bio mesto na kojem sam pratio sva dešavanja u vezi ovog izazova. Svi smo se okupljali oko hashtaga #12tdds gde su programeri razmenjivali mišljenja i svoja rešenja zadataka/kata.

Inspiracija ovog izazova jeste syber-dojo, online alat koji vam omogućava da radite postavljene zadatake u nekom od popularnih programskih jezika koristeći TDD. Alat se može koristi sa bilo kog mesta: posla, kuće ili kafića. Za pokretanje ovog alata nije potrebno da podešavate razvojno okruženje na svom računaru.

Učenje katama je sjajan način koji će vas motivisati da učite korak po korak, tempom koji vama odgovara. Kata vam neće oduzeti previše vremena. Svaka uspešno završena kata doneće vam parče znanja i bićete bliži svom cilju.

Osećaj kada posle refaktoringa (izmene koda) pustim testove koji mi daju signal da je kod ostao funkcionalan, jeste potvrda da je TDD tehnika koja može da obezbedi stabilnost aplikacije. Kada pogledam iza sebe vidim da mi je ovaj izazov pružio mogućnost da bolje vidim prednosti razvoja vođenog testovima i da ga sprovedem na praktičnim primerima.

Kada sam završio svih 12 kata preko twitera sam zamolio John-a da pogleda moje testove i kod kako bih bio siguran da sam testirao prave stvari na pravi način. Iznenadio sam se kada sam dobio opširan odgovor u kojem mi John daje savete za poboljšanje koda i bolje imenovanje test metoda, ali i pohvale za određene kate i rešenja. Zahvalan sam John-u na vrednim savetima koji će mi pomoći da moj kod bude još bolji.

Moje kate sa rešenjima i testovima su dostupne na gihubu – https://github.com/Djuki/tdd12

Travis je platforma koja se lako integriše sa github servisom, a na svaki vaš push koda Travis će pustiti automatizovane testove u okruženju koje ste vi definisali. U slućaju da testovi ne prođu travis će vas obavestiti o tome. Ovo može biti veoma korisno za timove sa više programera. Moji prvi unit testovi su postavljeni i na travis, gde možete videti kako izgledaju testovi kada se pokrenu.

Osim boljeg razumevanja unit testova ovaj izazov mi je doneo i ponudu za posao u Londonu. Ovo je samo dokaz da se svaki trud i svaki korak ka znanju uvek isplati, kao i da entuzijazam ne može ostati neprimećen.

Šta je Test driven development ?

TDD možemo lokalizovati kao Razvoj vođen testovima, što u praksi znači da ćemo da pre nego što napišemo funkcionalno parče koda napisati unit test kojim ćemo da definišemo koja su naša očekivanja od tog malog dela aplikacije. Tek kada napišemo unit test prelazimo na pisanje funkcionalnog koda. Unit testovi su testovi kojima se testiraju “parčići” aplikacije, i sa njima ćemo početi kada se upustimo u TDD pustolovinu.

Kada razvijamo robusnu aplikaciju koja se konstantno nadograđuje, i koja posle par godina razvoja liči na velikog dinosaurusa testovi mogu mnogo da olakšaju posao i učine ga mnogo lakšim i lepšim. To je onaj osećaj kada objavite verziju sa novom funkcionalnošću i tek onda shvatite da ste zapravo tom izmenom pokvarili nešto u aplikaciji i da korisnici ne dobijaju emailove iako je do tada sve savršeno funkcionisalo. U ovakvim situacijama poželećete da možete da pustite testove koji će vam reći da li vaša aplikacija radi kako se od nje očekuje.

Razvoj vođen testovima traži u samom početku više utrošenog vremena i novca, a za uzvrat nudi sigurnost i manje utrošenog vremena na bagove u kasnijim fazama razvoja. Poverenje koje su korisnici spremni da poklone stabilnoj aplikaciji vredi više od novca koji se potroši na TDD razvoj.

Katama do znanja

Ako želite da se upustite u novu tehnologiju ili naučite novi programski jezik potražite kate na internetu. Kada završite sa katama imaćete bolju sliku o tehnologiji i znaćete da li treba da se dublje upustite u učenje i da toj tehnologiji date veći prioritet. Kate su jednostavniji i brži put do znanja.

Write a Comment

Comment

  1. Sve pohvale i za tebe i Johna 🙂

    Dokazao si da je i u Srbiji moguce uciti nesto sto u svetu tek sad nastaje i na tren ucinio da zaboravim na cinjenicu da u Srbiji sve kasni po 20 god.

Webmentions

  • Utisci sa ZgPHP Meetup konferencije 2013 | PHPSrbija January 21, 2013

    […] je i za privatne projekte. Testovi su u zadnje vreme vruća tema PHP zajednice kako u svetu, tako i kod nas, te ne bih dublje ulazio u značaj i pogodnosti ovakvog načina razvoja aplikacija. Ukoliko […]