<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: Unit testy a čistota návrhu</title>
	<atom:link href="http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/</link>
	<description>Short remarks from Java world</description>
	<pubDate>Wed, 07 Jan 2009 02:26:23 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Honza Novotný</title>
		<link>http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/comment-page-1/#comment-270</link>
		<dc:creator>Honza Novotný</dc:creator>
		<pubDate>Sun, 02 Sep 2007 20:19:31 +0000</pubDate>
		<guid isPermaLink="false">http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/#comment-270</guid>
		<description>Já jsem se naopak přistihl, že v podstatě velmi málo programuji unit testy. Obvykle se jedná o testy integrační. Velmi často jsou zodpovědnosti tříd tak malé, že by ten test v podstatě nic moc neotestoval. Teprve složením více tříd dohromady vzniká nějak rozumě funkční celek. Typicky tedy dělám testy, které testují spolupráci dvou tří tříd. Mocky mi potom izolují tyto kooperující třídy od zbytku světa - a přestože refakturuji docela dost, nepřipadá mi, že by mi mocky nějak výrazně stěžovaly práci. Nicméně pravda je, že to s mocky taky extra nepřeháním ;).

Zajímalo by mě Petře, co myslíš tím, že nepoužíváte TDD. Znamená to, že nedodržujete pravidlo "Test first" nebo to, že odladíte aplikaci a teprve v závěru píšete testy?

Pokud to první, tak jsme na tom stejně. Zatím jsem nedospěl k tomu nejdřív psát testy. Obvykle nejdříve napíšu kód a pak test. Přičemž k odladění kódu právě používám test (testy). Defakto kód + test vzniká současně. Pokud bych psal test jako první, musel bych ho dost šíleně přepisovat, protože psaní vlastního kódu je u mě dost živelné. To co vypadá, že na začátku by mohla dělat jedna třída, v závěru dělají třeba třídy tři atd.

Před dvěma, tři lety jsem psal testy až když byla aplikace celá hotová - sloužily mě jen k zafixování status quo. Což považuji ze současného pohldu za pěknou pitomost. Jednak jsem musel před manažery obhajovat čas strávený nad psaním testů (prostě to bylo "strašně vidět" - přitom žádná funkčnost už nepřibývala) a jednak jsem si neušetřil žádnou práci. Pokud se ale píšou testy současně, průběžně vzniká funkcionalita s testy a psát testy je i zábavnější. Navíc se tím děsně šetří čas, protože si člověk odladí většinu aplikace jen v prostředí IDE - navíc je daleko jednoduší testovat aplikaci po menších částech než jako celek s opakovanými deploymenty na server.

Mám ten pocit (neověřený), že v současné době píšu výsledný kód i testy rychleji, než kdybych vyvíjel jen samotnou aplikaci s neustálými deploymenty + ručním ověřováním a laděním chování této aplikace. Samozřejmě významnou měrou k tomu přispívá i Spring - ten člověka jednak vede k lepšímu rozpadu funkčnosti a navíc má skělou podporu pro testování.</description>
		<content:encoded><![CDATA[<p>Já jsem se naopak přistihl, že v podstatě velmi málo programuji unit testy. Obvykle se jedná o testy integrační. Velmi často jsou zodpovědnosti tříd tak malé, že by ten test v podstatě nic moc neotestoval. Teprve složením více tříd dohromady vzniká nějak rozumě funkční celek. Typicky tedy dělám testy, které testují spolupráci dvou tří tříd. Mocky mi potom izolují tyto kooperující třídy od zbytku světa - a přestože refakturuji docela dost, nepřipadá mi, že by mi mocky nějak výrazně stěžovaly práci. Nicméně pravda je, že to s mocky taky extra nepřeháním ;).</p>
<p>Zajímalo by mě Petře, co myslíš tím, že nepoužíváte TDD. Znamená to, že nedodržujete pravidlo &#8220;Test first&#8221; nebo to, že odladíte aplikaci a teprve v závěru píšete testy?</p>
<p>Pokud to první, tak jsme na tom stejně. Zatím jsem nedospěl k tomu nejdřív psát testy. Obvykle nejdříve napíšu kód a pak test. Přičemž k odladění kódu právě používám test (testy). Defakto kód + test vzniká současně. Pokud bych psal test jako první, musel bych ho dost šíleně přepisovat, protože psaní vlastního kódu je u mě dost živelné. To co vypadá, že na začátku by mohla dělat jedna třída, v závěru dělají třeba třídy tři atd.</p>
<p>Před dvěma, tři lety jsem psal testy až když byla aplikace celá hotová - sloužily mě jen k zafixování status quo. Což považuji ze současného pohldu za pěknou pitomost. Jednak jsem musel před manažery obhajovat čas strávený nad psaním testů (prostě to bylo &#8220;strašně vidět&#8221; - přitom žádná funkčnost už nepřibývala) a jednak jsem si neušetřil žádnou práci. Pokud se ale píšou testy současně, průběžně vzniká funkcionalita s testy a psát testy je i zábavnější. Navíc se tím děsně šetří čas, protože si člověk odladí většinu aplikace jen v prostředí IDE - navíc je daleko jednoduší testovat aplikaci po menších částech než jako celek s opakovanými deploymenty na server.</p>
<p>Mám ten pocit (neověřený), že v současné době píšu výsledný kód i testy rychleji, než kdybych vyvíjel jen samotnou aplikaci s neustálými deploymenty + ručním ověřováním a laděním chování této aplikace. Samozřejmě významnou měrou k tomu přispívá i Spring - ten člověka jednak vede k lepšímu rozpadu funkčnosti a navíc má skělou podporu pro testování.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Petr Jůza</title>
		<link>http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/comment-page-1/#comment-124</link>
		<dc:creator>Petr Jůza</dc:creator>
		<pubDate>Mon, 18 Jun 2007 11:39:09 +0000</pubDate>
		<guid isPermaLink="false">http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/#comment-124</guid>
		<description>Naprosto s tebou souhlasim, ze na testech se hodne dobre pozna, zda produkcni kod je dobre navrzen. S tim (snad) problemy nemam, ale me proste vadi, ze je narovne ty mock testy behem vyvoje udrzovat a to ani nemluvim o tom, kolik moznych kombinaci je nutne prokryt v urcitych pripadech. Z toho prameni moje pochybnosti, zda ten cas venovany psani mock testu je pro me takovym prinosem.</description>
		<content:encoded><![CDATA[<p>Naprosto s tebou souhlasim, ze na testech se hodne dobre pozna, zda produkcni kod je dobre navrzen. S tim (snad) problemy nemam, ale me proste vadi, ze je narovne ty mock testy behem vyvoje udrzovat a to ani nemluvim o tom, kolik moznych kombinaci je nutne prokryt v urcitych pripadech. Z toho prameni moje pochybnosti, zda ten cas venovany psani mock testu je pro me takovym prinosem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lukáš Křečan</title>
		<link>http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/comment-page-1/#comment-123</link>
		<dc:creator>Lukáš Křečan</dc:creator>
		<pubDate>Mon, 18 Jun 2007 07:13:11 +0000</pubDate>
		<guid isPermaLink="false">http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/#comment-123</guid>
		<description>Já používám EasyMock s kterým jsem spokojen. A mám takovou zkušenost, že když se něco špatně testuje, tak je to špatně navrženo. Neplatí to vždy, ale často je to dobrý indikátor příliš úzké vazby mezi třídami nebo toho, že jedna třída toho dělá víc než by měla.</description>
		<content:encoded><![CDATA[<p>Já používám EasyMock s kterým jsem spokojen. A mám takovou zkušenost, že když se něco špatně testuje, tak je to špatně navrženo. Neplatí to vždy, ale často je to dobrý indikátor příliš úzké vazby mezi třídami nebo toho, že jedna třída toho dělá víc než by měla.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Petr Jůza</title>
		<link>http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/comment-page-1/#comment-122</link>
		<dc:creator>Petr Jůza</dc:creator>
		<pubDate>Mon, 18 Jun 2007 06:49:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/#comment-122</guid>
		<description>Co se týká Mock testování, tak se musím přiznat, že pořád si nejsem 100% jistý, že ten čas věnovaný Mock testů byl dobře využitý. 

Co tím mám na mysli? Mock testy mi přijdou celkem náročné na údržbu - během vývoje se určité věci celkem mění, navíc používám JMock, kde se zapisuje jméno metody pomocí řetězce, takže zde není možné použít refactoring. 
To samo o sobě mi ještě tak nevadí, kdybych ovšem viděl pořadný přínos těchto testů. Jako jedinou hmatatelnou výhodu vidím v tom, že mi ty Mock testy udržují správné hranice uvnitř systému. Jinak řečeno díky těm testům se mohu spolehnout, že jiní členové týmu mi tam něco nezměnili, že to pořád funguje stejně jak má. 
A zde si právě nejsem jistý, zda to není málo za ten čas strávený psaním těchto testů, zda by nebylo lepší tento čas investovat do jiných typů testů, např. testování GUI?

Jen pro info: vyvijíme v rámci 2-3 členého týmu, nepoužíváme TDD, testy píšeme na úrovni rozhraních (mezi jednotlivými vrstvami aplikace) a pak funkční testy dle potřeby.</description>
		<content:encoded><![CDATA[<p>Co se týká Mock testování, tak se musím přiznat, že pořád si nejsem 100% jistý, že ten čas věnovaný Mock testů byl dobře využitý. </p>
<p>Co tím mám na mysli? Mock testy mi přijdou celkem náročné na údržbu - během vývoje se určité věci celkem mění, navíc používám JMock, kde se zapisuje jméno metody pomocí řetězce, takže zde není možné použít refactoring.<br />
To samo o sobě mi ještě tak nevadí, kdybych ovšem viděl pořadný přínos těchto testů. Jako jedinou hmatatelnou výhodu vidím v tom, že mi ty Mock testy udržují správné hranice uvnitř systému. Jinak řečeno díky těm testům se mohu spolehnout, že jiní členové týmu mi tam něco nezměnili, že to pořád funguje stejně jak má.<br />
A zde si právě nejsem jistý, zda to není málo za ten čas strávený psaním těchto testů, zda by nebylo lepší tento čas investovat do jiných typů testů, např. testování GUI?</p>
<p>Jen pro info: vyvijíme v rámci 2-3 členého týmu, nepoužíváme TDD, testy píšeme na úrovni rozhraních (mezi jednotlivými vrstvami aplikace) a pak funkční testy dle potřeby.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Honza Novotný</title>
		<link>http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/comment-page-1/#comment-121</link>
		<dc:creator>Honza Novotný</dc:creator>
		<pubDate>Fri, 15 Jun 2007 09:50:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.krecan.net/2007/06/14/unit-testy-a-cistota-navrhu/#comment-121</guid>
		<description>Zlatá pravda - testy se vyplatí i jen ve chvíli kdy se kód vyvíjí - už v tom momentě začínají pomáhat čistit návrh. A druhá zlatá pravda - s mocky se to nedá přehánět, jsou sice řádově mnohonásobně rychlejší, ale nejsou tak spolehlivé jako integrační testy. Na druhou stranu nejsou tak náchylné na změny. No prostě jak říká Testuvius "Sometimes your thirst is best quenched by beer and your hunger by buffallo wings."</description>
		<content:encoded><![CDATA[<p>Zlatá pravda - testy se vyplatí i jen ve chvíli kdy se kód vyvíjí - už v tom momentě začínají pomáhat čistit návrh. A druhá zlatá pravda - s mocky se to nedá přehánět, jsou sice řádově mnohonásobně rychlejší, ale nejsou tak spolehlivé jako integrační testy. Na druhou stranu nejsou tak náchylné na změny. No prostě jak říká Testuvius &#8220;Sometimes your thirst is best quenched by beer and your hunger by buffallo wings.&#8221;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
