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
- (12.2003 TheServerSide.com) Test Driven Development
- (20.11.2003 TheServerSide.com) Book Review of JUnit In Action, New Manning Page on TSS
- (17.1.2003 Dagblog) Testujeme pomocí jUnit v prostředí Eclipse
- (17.12.2002 Interval.cz) Pavel Kolesnikov — Extrémní programování v praxi
- (11.2.2004 Jablok) Testování JUnitem
Související články
Související epizody CZ Podcastu
- #261 · Leadership
O vedení lidí a týmů.
- #3 · Java 6 SE, Vývoj webových aplikací
Dagi a Filemon o novinkách v Javě 6 a webových frameworcích.
- #1 · Vývojová prostředí v Javě
První díl CZ Podcastu se věnuje vývojovým prostředím pro Javu.