<?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: Writing Efficient Tests</title>
	<atom:link href="http://webmozarts.com/2010/03/11/writing-efficient-tests/feed/" rel="self" type="application/rss+xml" />
	<link>http://webmozarts.com/2010/03/11/writing-efficient-tests/</link>
	<description>On The Art Of Web Development</description>
	<lastBuildDate>Sun, 10 Jul 2011 10:30:26 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Karopapier, symfony und der ganze Rest &#187; Blog Archive &#187; Starting to get addicted to unit testing&#8230;</title>
		<link>http://webmozarts.com/2010/03/11/writing-efficient-tests/comment-page-1/#comment-2093</link>
		<dc:creator>Karopapier, symfony und der ganze Rest &#187; Blog Archive &#187; Starting to get addicted to unit testing&#8230;</dc:creator>
		<pubDate>Mon, 15 Mar 2010 09:59:33 +0000</pubDate>
		<guid isPermaLink="false">http://webmozarts.com/?p=469#comment-2093</guid>
		<description>[...] paying more attention to unit testing and writing tests in my symfony apps. But not until this awesome post from Bernhard Schussek, I really understood how you can make your testing life easier and get tests done better, faster [...]</description>
		<content:encoded><![CDATA[<p>[...] paying more attention to unit testing and writing tests in my symfony apps. But not until this awesome post from Bernhard Schussek, I really understood how you can make your testing life easier and get tests done better, faster [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Romain</title>
		<link>http://webmozarts.com/2010/03/11/writing-efficient-tests/comment-page-1/#comment-2052</link>
		<dc:creator>Romain</dc:creator>
		<pubDate>Fri, 12 Mar 2010 14:17:34 +0000</pubDate>
		<guid isPermaLink="false">http://webmozarts.com/?p=469#comment-2052</guid>
		<description>This is an excellent article. Developers knowing what is a unit test is rare nowadays...</description>
		<content:encoded><![CDATA[<p>This is an excellent article. Developers knowing what is a unit test is rare nowadays&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: uberVU - social comments</title>
		<link>http://webmozarts.com/2010/03/11/writing-efficient-tests/comment-page-1/#comment-2049</link>
		<dc:creator>uberVU - social comments</dc:creator>
		<pubDate>Thu, 11 Mar 2010 21:53:18 +0000</pubDate>
		<guid isPermaLink="false">http://webmozarts.com/?p=469#comment-2049</guid>
		<description>&lt;strong&gt;Social comments and analytics for this post...&lt;/strong&gt;

This post was mentioned on Twitter by webmozart: New blog post published. http://bit.ly/c4cxdE #efficient #testing #symfony...</description>
		<content:encoded><![CDATA[<p><strong>Social comments and analytics for this post&#8230;</strong></p>
<p>This post was mentioned on Twitter by webmozart: New blog post published. <a href="http://bit.ly/c4cxdE" rel="nofollow" target="_blank" class="liexternal">http://bit.ly/c4cxdE</a> #efficient #testing #symfony&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matthieu</title>
		<link>http://webmozarts.com/2010/03/11/writing-efficient-tests/comment-page-1/#comment-2048</link>
		<dc:creator>Matthieu</dc:creator>
		<pubDate>Thu, 11 Mar 2010 21:19:35 +0000</pubDate>
		<guid isPermaLink="false">http://webmozarts.com/?p=469#comment-2048</guid>
		<description>@NiKo Apart from the initial part (Filling the database with all the test data from YAML files) that I do just once (or each time I change my fixtures), it doesn&#039;t seem to me that using transactions is slow. 
Anyway I guess it is faster than reloading the test data.</description>
		<content:encoded><![CDATA[<p>@NiKo Apart from the initial part (Filling the database with all the test data from YAML files) that I do just once (or each time I change my fixtures), it doesn&#8217;t seem to me that using transactions is slow.<br />
Anyway I guess it is faster than reloading the test data.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christian</title>
		<link>http://webmozarts.com/2010/03/11/writing-efficient-tests/comment-page-1/#comment-2047</link>
		<dc:creator>Christian</dc:creator>
		<pubDate>Thu, 11 Mar 2010 21:12:28 +0000</pubDate>
		<guid isPermaLink="false">http://webmozarts.com/?p=469#comment-2047</guid>
		<description>Very interesting article! I think I can use a lot of this even when I&#039;m testing with PHPUnit.

But I wonder about Lime2. So far it has been mentioned that Symfony 2 is going to use PHPUnit, symfony 1.4 is not supposed to switch base technologies, Lime2 development became low priority, ..
What is the purpose and goal of Lime2? I mean I do think your ideas so far have been inspiring, but what will be the outcome?
Shouldn&#039;t there be a Lime2 website finally?</description>
		<content:encoded><![CDATA[<p>Very interesting article! I think I can use a lot of this even when I&#8217;m testing with PHPUnit.</p>
<p>But I wonder about Lime2. So far it has been mentioned that Symfony 2 is going to use PHPUnit, symfony 1.4 is not supposed to switch base technologies, Lime2 development became low priority, ..<br />
What is the purpose and goal of Lime2? I mean I do think your ideas so far have been inspiring, but what will be the outcome?<br />
Shouldn&#8217;t there be a Lime2 website finally?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: NiKo</title>
		<link>http://webmozarts.com/2010/03/11/writing-efficient-tests/comment-page-1/#comment-2046</link>
		<dc:creator>NiKo</dc:creator>
		<pubDate>Thu, 11 Mar 2010 20:29:50 +0000</pubDate>
		<guid isPermaLink="false">http://webmozarts.com/?p=469#comment-2046</guid>
		<description>One more very good article on this blog.

The transaction trick is a good one, but it&#039;s still very slow - at least regarding my quick personnal testing.

The in-memory SQLite database trick is fantastic, unfortunately hardly usable as soon as you&#039;re using RDBMS-specific features such as ones provided by MySQL or Postgresql (they&#039;re providing so many useful ones it&#039;d be a shame not to benefit from them... I know ORM are not intended to be used this way but the shared features accross RDBMS implementation are really thin actually.)

I think at some point System Tests will always end beeing slow, just by design: if the system to be tested is complex, related tests will test this complexity; and testing complexity naturally takes time. But of course I agree we should always try to reduce at max the amount of unnecessary executions to gain maximum efficiency, and rapid feedback to keep agility.

Personnaly, I&#039;m a big fan of continuous integration, the tests are run periodically so I can keep concentrate on the code and I get alerts as soon as something breaks (so you need of course to commit atomically to reduce the surprise effect ;) I didn&#039;t find the perfect compromise yet, but will look forwards giving a try to lime2 because its mocking api is really interesting by itself :)

Keep up the good work!</description>
		<content:encoded><![CDATA[<p>One more very good article on this blog.</p>
<p>The transaction trick is a good one, but it&#8217;s still very slow &#8211; at least regarding my quick personnal testing.</p>
<p>The in-memory SQLite database trick is fantastic, unfortunately hardly usable as soon as you&#8217;re using RDBMS-specific features such as ones provided by MySQL or Postgresql (they&#8217;re providing so many useful ones it&#8217;d be a shame not to benefit from them&#8230; I know ORM are not intended to be used this way but the shared features accross RDBMS implementation are really thin actually.)</p>
<p>I think at some point System Tests will always end beeing slow, just by design: if the system to be tested is complex, related tests will test this complexity; and testing complexity naturally takes time. But of course I agree we should always try to reduce at max the amount of unnecessary executions to gain maximum efficiency, and rapid feedback to keep agility.</p>
<p>Personnaly, I&#8217;m a big fan of continuous integration, the tests are run periodically so I can keep concentrate on the code and I get alerts as soon as something breaks (so you need of course to commit atomically to reduce the surprise effect <img src='http://webmozarts.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  I didn&#8217;t find the perfect compromise yet, but will look forwards giving a try to lime2 because its mocking api is really interesting by itself <img src='http://webmozarts.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Keep up the good work!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bernhard</title>
		<link>http://webmozarts.com/2010/03/11/writing-efficient-tests/comment-page-1/#comment-2045</link>
		<dc:creator>Bernhard</dc:creator>
		<pubDate>Thu, 11 Mar 2010 19:07:49 +0000</pubDate>
		<guid isPermaLink="false">http://webmozarts.com/?p=469#comment-2045</guid>
		<description>@Matthieu: Sounds like a good solution, too. I probably need to experiment a little more with that approach.</description>
		<content:encoded><![CDATA[<p>@Matthieu: Sounds like a good solution, too. I probably need to experiment a little more with that approach.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matthieu</title>
		<link>http://webmozarts.com/2010/03/11/writing-efficient-tests/comment-page-1/#comment-2044</link>
		<dc:creator>Matthieu</dc:creator>
		<pubDate>Thu, 11 Mar 2010 19:03:24 +0000</pubDate>
		<guid isPermaLink="false">http://webmozarts.com/?p=469#comment-2044</guid>
		<description>Great post!

What do you think about transactions?

Between the execution of each function in my (Lime2) test class, a beginTransaction() and endTransaction() is called to revert the database to its previous state. This is really fast I think.</description>
		<content:encoded><![CDATA[<p>Great post!</p>
<p>What do you think about transactions?</p>
<p>Between the execution of each function in my (Lime2) test class, a beginTransaction() and endTransaction() is called to revert the database to its previous state. This is really fast I think.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bernhard</title>
		<link>http://webmozarts.com/2010/03/11/writing-efficient-tests/comment-page-1/#comment-2043</link>
		<dc:creator>Bernhard</dc:creator>
		<pubDate>Thu, 11 Mar 2010 18:26:12 +0000</pubDate>
		<guid isPermaLink="false">http://webmozarts.com/?p=469#comment-2043</guid>
		<description>Thanks for the comment, Thomas. You are absolutely right. I think I will publish another post that will deal exclusively with concurrent testing.</description>
		<content:encoded><![CDATA[<p>Thanks for the comment, Thomas. You are absolutely right. I think I will publish another post that will deal exclusively with concurrent testing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas R.</title>
		<link>http://webmozarts.com/2010/03/11/writing-efficient-tests/comment-page-1/#comment-2042</link>
		<dc:creator>Thomas R.</dc:creator>
		<pubDate>Thu, 11 Mar 2010 18:24:06 +0000</pubDate>
		<guid isPermaLink="false">http://webmozarts.com/?p=469#comment-2042</guid>
		<description>Very nice post !

One important thing, when dealing with multi process tests,  is that you might conflicts between concurrent process. So if you tests generate or use temporary files you need to make sure the configuration/log/temp folders are unique per process.</description>
		<content:encoded><![CDATA[<p>Very nice post !</p>
<p>One important thing, when dealing with multi process tests,  is that you might conflicts between concurrent process. So if you tests generate or use temporary files you need to make sure the configuration/log/temp folders are unique per process.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

