fbpx

Môj príbeh

Pavel Bernhauser

Pri svojej programátorskej práci vytváram kvalitné unit testy. Naučil som sa im dôverovať a verím, že sú v projekte na to aby pomohli. Nie preto, že manažment stanovil pravidlá, že musia existovať.

Keď potrebujem pracovať s komponentom, ktorý nepoznám, tak sa idem pozrieť na existujúce unit testy, aby som získal predstavu čo robí a ako sa používa. Podobne, pri pridávaní novej funkcionality alebo refaktoringu sa na ne spolieham.

Preto je ich kvalita dôležitá. Našťastie dnes už viem, že vytvoriť kvalitné testy nie je žiadna raketová veda.

Začiatky sú vždy ťažké

Keď som s unit testami začínal, tak moje pocity boli rozpačité. Nebolo to moje rozhodnutie — jedného dňa mi tímlíder oznámil, že sa odo mňa očakáva, že ich budem robiť. Netušil som ako majú vyzerať, ako ich efektívne vytvárať, ani to že je príliš ľahké vytvoriť zlé a „pomstychtivé” testy. Ich programovanie bolo nudné, trvalo dlho a zdržovalo od toho uspokojujúceho — pridávania novej funkcionality. Ale to nebol najväčší problém.

Všetky moje testy ako aj tie, čo naprogramovali moji kolegovia nijak nespĺňali naše očakávania. Boli obrovské, nečitateľné a nikto po určitom čase nevedel čo robia. Ich programovanie nás spomaľovalo a nemali sme pocit, že nám pomáhajú pri vývoji produktu. Prípadne existujúce testy bránili pridávaniu novej funkcionality.

Vôbec sme neverili, že dokážu odchytiť dosť chýb, aby stálo za to ich vytvárať a udržiavať. Skôr sme mali pocit, že ich prítomnosť robí našu prácu ťažšou.

Určite existuje lepšia cesta

Na druhej strane, Martin Fowler a ďalší priekopníci Extreme Programming nedali na ne dopustiť. Nedávalo mi to zmysel. Robíme to zle a určite existuje spôsob ako sa to má robiť. Len sme naň ešte neprišli.

Rozhodol som sa, že na to musím prísť. Začal som hľadať informácie a kupovať knihy. Naučil som sa, že dizajn testovaného kódu má obrovský vplyv na kvalitu testov. Prišiel som na to, že kratšie testy sú skoro vždy kvalitnejšie a nespôsobujú toľko problémov. Aj na to, ako riešiť typické problémy, ktoré nás trápili — veľký setup testu, neopakovateľné zlyhania, pomalé testy a podobne.

Ale stále mi vadilo, že písanie testov je nudné a otravné. Hľadal som ďalej, až som objavil Test-Driven Development, kde sa test naprogramuje pred produkčným kódom. TDD sľuboval nápravu všetkých našich problémov. Ale dá sa tomu veriť po všetkých sklamaniach s unit testingom?

Skúsil som to. Snažil som sa to robiť presne tak ako to popisuje Kent Beck vo svojej knihe. Aby som zase niečo nerobil zle. Zo začiatku to šlo ťažko, lebo to bolo divné. Celé naopak. Možno ešte ťažšie ako písanie testov až po funkčnom produkčnom kóde.

Ale postupne proces a dôvody k nemu začali dávať zmysel. Mal som niekoľko Aha momentov — testy sa stali menšími, rozhrania komponentov použiteľnejšími, vytvorené komponenty viac kompaktné a zamerané na jednu vec. Ale najmä som zistil, že TDD je oveľa príjemnejší po psychologickej stránke — každých pár minút je niečo dokončené a je jasnejšie ako to smeruje k finále.

Celé moje myslenie, prístup k dizajnu a programovaniu sa postupne zmenil. Práve vďaka tomu, že TDD stavia vývoj softvéru na hlavu.

Prečo vznikol tento blog?

Možno môj príbeh vzbudzuje dojem, že to bol priamočiary proces. Celé to trvalo pár rokov, kým som bol zo sebou spokojný. Vždy keď som si myslel, že „už to mám” objavila sa nová výzva. A je mi jasné, že výzvy sa budú objavovať aj naďalej, aj keď sa unit testovaniu venujem už 20 rokov.

V posledných pár mesiacov som si začal viac uvedomovať, že za mnou chodia kolegovia a pýtajú sa ako majú testovať a čo všetko. Dokonca som zažil ako ma kolega „ponúkol” inému tímu: „Mali by ste si zobrať Paľa, ten by vám projekt pokryl testami”. Bol to celkom príjemný pocit.

Vtedy som si uvedomil, že viem niečo, čo u mnohých profesionálnych programátorov nie je také samozrejmé ako sa mi zdalo. Že aj iní ľudia majú tie isté problémy a pochybnosti ako som mal ja pred rokmi. Tak som nabral odvahu „vyliezť zo svojho úkrytu” a ponúknuť vám moje know-how vo forme tohto blogu zameraného na Test-Driven Development.

1 komentár k “Môj príbeh”

Nie je možné pridávať komentáre.