dagblog.
← Archiv

Programovat znamená psát testy


Programovaní stejně jako programovací techniky se neustále rozvíjejí, v současnosti 
 se stále začínají prosazovat metodiky na stolené odnoží, v budoucnu třeba mainstreamem,
 jménem Xtrémní programování. Především důraz
 na testování a testovací techniky a jejich metodické rozpracování, které zavedlo jako naprosto 
 nepostradatelnou součást vývoje softwaru, dalo vzniknout směru vývoje, který se označuje jako
 test-driven development (TDD).

Prvním krokem, který sem musí vždy udělat není implementace vlastní funkčnosti, ale testu který tuto funkčnost 
 prověří. Pokud bychom například chtěli implementovat jednoduchý objekt pro základní matematické operace, napsali bychom
 nejdříve test, který by tyto prověřil. Test je ve své podstatě pouze vyjádření toho co od dané implementace očekáváme.
 Pokud očekáváme, že volání metody public int secti(int a, int b) vrátí součet argumentů a
 a b můžeme napsat jednoduchý test.

int ocekavanaHodnota = 2;
int vracenaHodnota = secti(1, 1);
if(ocekavanaHodnota != vracenaHodnota) {
//Implementace metody secti nenaplnila naše očekávání,
//je třeba jí opravit.
}

Kouzlem testů je fakt, že naše očekávaní určité funkčnosti se nemění, je pevně dané rozhraním objektu. Oproti
 implementaci, která se může časem měnit. Pokud budu mít například metodu pro třídění pole tak je věcí implementace
 jestli se použije bubble sort nebo quick sort, výsledkem(očekáváním) je stejně setříděné pole. Jinými slovy testy
 píšeme pouze jednou a zůstávají napořád. Jednotlivé testy se průběhem času na sebe nabalují a tak není problém 
 zautomatizovat proces, který je bude spouštět jejich výsledky reportovat k vyhodnocení.

Výše uvedený příklad testování je poněkud neohrabaný ovšem svůj účel plní. V současnosti je mnoho nástrojů, které
 umožňují efektivní tvorbu testovacích objektů při vývoji za všechny bych jmenoval 
 JUnit. Testy a vlastní proces testování snižuje náklady na vývoj a údržbu neboť pomáhá odhalit
 chyby při jejich počátku. Samozřejmě i testování má své hranice, pro mě osobně to je například 
 testování logiky pracující nad databázovými daty.

Pokud Vás letmé intro do testů a testování zaujalo, pak následujte sic trochu javovské nicméně
 zajímavé odkazy Using JUnit With Eclipse IDE
 a Effective Unit Testing with DbUnit.

Související články

Verze na Medium

Související články

Související epizody CZ Podcastu