Zásady extrémneho programovania: najprv vytvorte testy

Podľa XP Rules: Code the Unit Test First, (C) 2000 Don Wells

Ak začnete tvoriť testy skôr než kód, časom zistíte, že písanie samotného kódu vám pôjde ľahšie a rýchlejšie. Celkový čas, ktorý strávite písaním testu a tvorbou kódu, vďaka ktorému test úspešne prejde, bude približne rovnaký ako priame písanie kódu. Ak už máte napísané jednotkové testy, ušetríte si nejaký čas teraz, a omnoho viac neskôr, oproti ich spätnému dotváraniu.

Písanie jednotkového testu uľahčuje vývojárovi určiť, čo je naozaj potrebné dokončiť. Vďaka testom sa pevne ukotvia požiadavky. Špecifikácia zapísaná v podobe spustiteľného kódu zabraňuje nedorozumeniam.

Pri práci zároveň získavate okamžitú spätnú väzbu. Neraz totiž nie je úplne zrejmé, či vývojár naozaj dokončil všetku požadovanú funkcionalitu. Pri úvahách nad rozširovaním systému a chybovými stavmi často dochádza k nevedomému rozvoľňovaniu projektu. Ak najprv vytvoríme testy, budeme vedieť, kedy máme hotovo: je to práve vtedy, ak úspešne prebehnú všetky testy.

Výhody sa prejavia aj v návrhu systému. Niektoré softvérové systémy sa totiž testujú len veľmi ťažko, najmä v prípadoch, ak sa testy vytvárajú až po dokončení kódu a to nezriedka v úplne inom tíme. Ak vytvoríte testy skôr než kód, váš dizajn bude vychádzať z potreby otestovať všetko, čo má pre zákazníka hodnotu, čo prirodzene povedie k jednoduchšiemu testovaniu.

Tvorba jednotkových testov má svoj rytmus. Najprv vytvoríte test, ktorým definujete drobnú časť problému, ktorý riešite. Vytvoríte najjednoduchší možný kód, vďaka ktorému test úspešne prejde. Potom vytvoríte druhý test a k nemu kód, ktorý povedie k jeho vykonaniu. Nadbytočný kód nie je potrebný! Prinajmenšom nie do chvíle, kým nenapíšete tretí test. Týmto spôsobom pokračujte dovtedy, kým nezvýši nič na testovanie.

Kód, ktorý vytvoríte, bude hutný a zároveň jednoduchý, a bude pokrývať len tie vlastnosti, ktoré ste naozaj potrebovali. Ostatní vývojári ľahko pochopia jeho použitie, pretože budú môcť nahliadať do testov. Vstupy, ktorých výsledky sú nedefinované, sa nenápadne vytratia z testovacej sady.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *