Smutné je, že na téma – jak přesvědčit o správ­nosti psaní testů – mám vůbec příleži­tost něco napsat. V ideálním světě by unit testy byly nedílnou součástí vývoje software. Bohužel jsou stále vnímány jako agilní a ne všechny týmy a ne všechny projekty unit testování aplikují. Dokonce ani na kritic­kých systémech, ty pak vypadají jako věž na obrázku. No řekněte, chtěli byste na ni přidat nějakou kostku? Naštěstí je tu dost entuziastů, kteří ovšem při přesvědč­ování ostat­ních mnohdy narážejí na zeď. Podělím se o několik argumentů, které používám já. Na každou skupinu zabere něco jiného. Nejsnazší je to se začátečníky, se starými psy je to (v korporátní mluvě) výzva a občas musíte přesvědč­ovat i manage­ment.

Kolečko na křečka

Násle­dující obrázek pochází z knihy Test Driven Development: By Example, kde Kent Beck na názorném příkladu ukazuje, jak díky testům s jistotou ověřili, zda daný finanční systém bude možné bez problémů rozšířit o podporu různých měn.

Obrázek ukazuje zápornou zpětnou vazbu mezi stresem a psaním testů a mezi psaním testů a vzniku chyb. Oproti tomu mezi počtem chyb a stresem je kladná zpětná vazba. To znamená, že čím víc jste ve stresu, tím méně píšete testy. A čím méně píšete testy, tím více děláte chyb. No a čím více chybu­jete, tím ve větším stresu jste. Prostě kolečko na křečka. Přitom testy by vás nechaly vydechnout.

Litanie proti strachu

Strach paraly­zuje; testy slouží ke zbavení strachu. Jak chcete jinak zasahovat do kódu, když nemáte testy? Buď se tedy nebojíte, nebo jste hazar­déři. V knize Duna (Frank Herbert), případně ve stejnoj­menném filmu (mimo­chodem jeden z nejsro­zu­mi­tel­nějších od Davida Lynche), je silní scéna, kdy Paul Atreid unikne smrti, protože překoná svůj strach. Pomůže mu odříkat litanii proti strachu:

Nesmím se bát. Strach zabíjí myšlení. Strach je malá smrt, přinášející naprosté vyhla­zení. Budu svému strachu čelit. Dovolím mu, aby prošel kolem mne a skrze mne. A až projde a zmizí, otočím se a podívám se, kudy šel. Tam, kam strach odešel, nic nebude. Zůstanu pouze já.

Vaší litanií budou právě testy.

Doktoři si myjí ruce


ex_magician CC BY 2.0

Považu­jeme za samozřejmé, že si lékaři myjí ruce, ale ne vždy tomu tak bylo. Behaviorální ekonom Steven D. Levitt ve své knize Super Freakonomics popisuje příběh horečky omladnic. V současné době zemře při porodu 9 matek ze 100 000. Kolem roku 1846 ve Všeobecné vídeňské nemoc­nici zemřela 1 ze 6 zdravých rodiček, víc než dvakrát tolik co doma za přítom­nosti porodní báby. Nejčas­tější příčinou byla právě horečka omlad­nic. Ignác Filip Semmelweis, kterého ho nakonec propus­tili, objevil souvis­lost mezi nemocí a mytím rukou. Doktoři se nikdy nenaka­zili, až jednou jeden student řízl profe­sora, který následně zemřel s projevy horečky omladnic.

Takže až po vás někdo bude chtít, abyste nepsali testy, protože tím ušetříte čas, tak se ho zeptejte, zda by rovněž žádal lékaře, aby si před zákrokem nemyl ruce. Ušetří přeci čas.

Závěr

Nestačí o testech jen mluvit, musíte taky nějaké napsat. Nejspíš budete narážet na výmluvy typu: Nemáme čas. Skutečná příčina však může být v tom, že se programátoři bojí přiznat, že psát testy neumí. To je ideální příleži­tost pro párové progra­mování, při kterém je to můžete naučit. Držte se parafrázo­vané myšlenky Jana Amose Komen­ského (Toulky českou minulostí, díl číslo 444):

Co můžeš, udělej sám a neodk­ládej to na jiné. Sám se snaž, sám usiluj a bude-li tvé dílo dobré, ostatní ti pomohou.

A jak prosa­zu­jete testy vy? Vypadá vaše aplikace jako stabil­nější věž z kostek?