Stavové a interakční testování
Když jsem dnes ráno pročítal TSS narazil
jsem na diskusi k článku Mocks Aren’t Stubs
od Martina Fowlera, kterého považuji za, průkopníka a inovátora technik vývoje softwaru.
Při psaní unit testů potřebujete po otestovaní objektu (primární objekt) i další
sekundární objekty, které primární objekt využívá. Tyto sekundární objekty můžeme
mockovat nebo stubovat. Mock nebo Stub objekt pak představuje sekundární objekt v
minimálním stavu nutném pro test primárního objektu.
Z mého pohledu představoval Mock to samé co Stub, s nepatrným rozdílem, že Mock objekty
implementovaly rozhraní sekundárního objektu. Článek Martina Fowlera
mě vyvedl z omylu. Myšlenka Mock objektů, které vycházejí z
XP (Extrémní programování) sahá do způsobu testování.
Mock objekty jsou určeny k interakčnímu testování, tedy interakce mezi primárním a
sekundárním objektem na základě nějakého očekávání. Hojně používaný způsob testování
se nazývá stavový asi většina testů, které jste viděli, byla stavová. Stavové testování
se odlišuje v tom, že se testuje výsledný očekávaný stav objektu např. hodnota x je
50.
V článku je popsáno jak interakční tak stavové testování, jejich rozdíly a autorův
pohled na oba přístupy. Samozřejmě nechybí ani vysvětlení toho co představuje
Stub a Mock.
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.