<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.1.3" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Enjoyable development</title>
	<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/</link>
	<description>Johannes Brodwall's Musings on Software Architecture and Programming</description>
	<pubDate>Wed, 08 Oct 2008 11:29:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.3</generator>

	<item>
		<title>By: Geir Hedemark</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84562</link>
		<author>Geir Hedemark</author>
		<pubDate>Wed, 14 May 2008 05:17:08 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84562</guid>
					<description>I don&#39;t know if you have heard of this already, but it follows up on your thoughts on the time it should take to run tests.&lt;br&gt;&lt;br&gt;There is something called flow psychology ( &lt;a href="http://en.wikipedia.org/wiki/Flow_%28psychology"&gt;http://en.wikipedia.org/wiki/Flow_(psychology&lt;/a&gt;) ) which describes the conditions that need to be fulfilled if you are to experience "flow" (Which at least for me is a precondition for not being caught my my mail reader). I learnt a lot from that as a project manager.&lt;br&gt;&lt;br&gt;On to a question I have:&lt;br&gt;&lt;br&gt;What would happen if all your tests took less than a second to run? Would you structure your tests differently?</description>
		<content:encoded><![CDATA[<p>I don&#39;t know if you have heard of this already, but it follows up on your thoughts on the time it should take to run tests.</p>
<p>There is something called flow psychology ( <a href="http://en.wikipedia.org/wiki/Flow_%28psychology"></a><a href="http://en.wikipedia.org/wiki/Flow_" rel="nofollow">http://en.wikipedia.org/wiki/Flow_</a>(psychology) ) which describes the conditions that need to be fulfilled if you are to experience &#8220;flow&#8221; (Which at least for me is a precondition for not being caught my my mail reader). I learnt a lot from that as a project manager.</p>
<p>On to a question I have:</p>
<p>What would happen if all your tests took less than a second to run? Would you structure your tests differently?</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Geir Hedemark</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45138</link>
		<author>Geir Hedemark</author>
		<pubDate>Wed, 14 May 2008 07:17:08 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45138</guid>
					<description>I don't know if you have heard of this already, but it follows up on your thoughts on the time it should take to run tests.

There is something called flow psychology ( http://en.wikipedia.org/wiki/Flow_(psychology) ) which describes the conditions that need to be fulfilled if you are to experience "flow" (Which at least for me is a precondition for not being caught my my mail reader). I learnt a lot from that as a project manager.

On to a question I have:

What would happen if all your tests took less than a second to run? Would you structure your tests differently?</description>
		<content:encoded><![CDATA[<p>I don&#8217;t know if you have heard of this already, but it follows up on your thoughts on the time it should take to run tests.</p>
<p>There is something called flow psychology ( <a href="http://en.wikipedia.org/wiki/Flow_" rel="nofollow">http://en.wikipedia.org/wiki/Flow_</a>(psychology) ) which describes the conditions that need to be fulfilled if you are to experience &#8220;flow&#8221; (Which at least for me is a precondition for not being caught my my mail reader). I learnt a lot from that as a project manager.</p>
<p>On to a question I have:</p>
<p>What would happen if all your tests took less than a second to run? Would you structure your tests differently?</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Johannes Brodwall</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84563</link>
		<author>Johannes Brodwall</author>
		<pubDate>Wed, 14 May 2008 17:14:00 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84563</guid>
					<description>Flow is definitively an important component of happiness.&lt;br&gt;&lt;br&gt;"If all my tests took less than a second"? Do you mean &lt;b&gt;more&lt;/b&gt; than a second?&lt;br&gt;&lt;br&gt;Most of the tests I write first are independent of infrastructure, which means that they run really fast. I try to separate out my slow-running tests (e.g. test that a search generates SQL that retrieves the correct result from the database). I haven&#39;t doing any soft of formal categorization here, though.&lt;br&gt;&lt;br&gt;I find that either I run a single test in the IDE. Then it should run fast. Or I run all my tests for the command line. Then everything should be run. So I don&#39;t need to categorize stuff now.</description>
		<content:encoded><![CDATA[<p>Flow is definitively an important component of happiness.</p>
<p>&#8220;If all my tests took less than a second&#8221;? Do you mean <b>more</b> than a second?</p>
<p>Most of the tests I write first are independent of infrastructure, which means that they run really fast. I try to separate out my slow-running tests (e.g. test that a search generates SQL that retrieves the correct result from the database). I haven&#39;t doing any soft of formal categorization here, though.</p>
<p>I find that either I run a single test in the IDE. Then it should run fast. Or I run all my tests for the command line. Then everything should be run. So I don&#39;t need to categorize stuff now.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Johannes Brodwall</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45214</link>
		<author>Johannes Brodwall</author>
		<pubDate>Wed, 14 May 2008 19:14:00 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45214</guid>
					<description>Flow is definitively an important component of happiness.

"If all my tests took less than a second"? Do you mean &lt;b&gt;more&lt;/b&gt; than a second?

Most of the tests I write first are independent of infrastructure, which means that they run really fast. I try to separate out my slow-running tests (e.g. test that a search generates SQL that retrieves the correct result from the database). I haven't doing any soft of formal categorization here, though.

I find that either I run a single test in the IDE. Then it should run fast. Or I run all my tests for the command line. Then everything should be run. So I don't need to categorize stuff now.</description>
		<content:encoded><![CDATA[<p>Flow is definitively an important component of happiness.</p>
<p>&#8220;If all my tests took less than a second&#8221;? Do you mean <b>more</b> than a second?</p>
<p>Most of the tests I write first are independent of infrastructure, which means that they run really fast. I try to separate out my slow-running tests (e.g. test that a search generates SQL that retrieves the correct result from the database). I haven&#8217;t doing any soft of formal categorization here, though.</p>
<p>I find that either I run a single test in the IDE. Then it should run fast. Or I run all my tests for the command line. Then everything should be run. So I don&#8217;t need to categorize stuff now.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Geir Hedemark</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84564</link>
		<author>Geir Hedemark</author>
		<pubDate>Thu, 15 May 2008 06:09:50 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84564</guid>
					<description>I was unclear, once again. Let me clarify.&lt;br&gt;&lt;br&gt;If all of your tests - system tests, unit tests, integration tests, the works, all completed in less than a second - would you structure your test suite differently? Would you still keep your unit tests around? Would you hang on to your CI server?</description>
		<content:encoded><![CDATA[<p>I was unclear, once again. Let me clarify.</p>
<p>If all of your tests - system tests, unit tests, integration tests, the works, all completed in less than a second - would you structure your test suite differently? Would you still keep your unit tests around? Would you hang on to your CI server?</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Johannes Brodwall</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84565</link>
		<author>Johannes Brodwall</author>
		<pubDate>Thu, 15 May 2008 06:35:25 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84565</guid>
					<description>Hi, Geir&lt;br&gt;&lt;br&gt;Thanks for a very interesting question. I think I might want to expand this into a full entry eventually.&lt;br&gt;&lt;br&gt;I think the risk of my tests running this quickly are fairly slim. But if it did happen, I would still want to separate out the functional tests that we create in cooperation with domain experts and the system level tests that simulate realistic operating conditions. I&#39;m happy with the system level tests we have now, which stress the system. There&#39;s no way these could run in under 1 second.&lt;br&gt;&lt;br&gt;But neither of these types tests are JUnit tests. Our functional tests are implemented in FitNesse and our system tests are scripts that push data on the system (for a web based system, I would consider JMeter).&lt;br&gt;&lt;br&gt;For tests implemented with JUnit, I would not see any usefulness in the distinction if things ran sufficiently fast. I might consider deleting tests that were covered sufficiently by the functional tests, but since these are run by different tools, it might be hard to find out exactly what tests could be deleted.&lt;br&gt;&lt;br&gt;I would keep my CI server, though, so I was sure that changes by every member of the team (myself included!) actually passed the test suite. I might even add a failure condition if the tests ran for too long, to make sure that we didn&#39;t start down the slippery slope of slow tests.</description>
		<content:encoded><![CDATA[<p>Hi, Geir</p>
<p>Thanks for a very interesting question. I think I might want to expand this into a full entry eventually.</p>
<p>I think the risk of my tests running this quickly are fairly slim. But if it did happen, I would still want to separate out the functional tests that we create in cooperation with domain experts and the system level tests that simulate realistic operating conditions. I&#39;m happy with the system level tests we have now, which stress the system. There&#39;s no way these could run in under 1 second.</p>
<p>But neither of these types tests are JUnit tests. Our functional tests are implemented in FitNesse and our system tests are scripts that push data on the system (for a web based system, I would consider JMeter).</p>
<p>For tests implemented with JUnit, I would not see any usefulness in the distinction if things ran sufficiently fast. I might consider deleting tests that were covered sufficiently by the functional tests, but since these are run by different tools, it might be hard to find out exactly what tests could be deleted.</p>
<p>I would keep my CI server, though, so I was sure that changes by every member of the team (myself included!) actually passed the test suite. I might even add a failure condition if the tests ran for too long, to make sure that we didn&#39;t start down the slippery slope of slow tests.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Geir Hedemark</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84566</link>
		<author>Geir Hedemark</author>
		<pubDate>Thu, 15 May 2008 07:03:23 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84566</guid>
					<description>I agree when it comes to performance tests. Those are, by design, meant to take longer.&lt;br&gt;&lt;br&gt;My idea when it comes to functional testing doesn&#39;t really lend itself to fitnesse. I want to also veryify that all interfaces to the system do what they should. I can&#39;t really see that happening with fitnesse the way I want it to.&lt;br&gt;&lt;br&gt;The good news is that we are almost there. I have created functional test suites which ran a full regression test for a module in less than a minute or so. The drawback was the setup time, which also was on the order of a minute. This minute was caused by spring/hibernate.&lt;br&gt;&lt;br&gt;Good point about the CI server. What if eclipse (or whatever) continually ran your tests, using the second processor everyone seems to have but not use these days, just as your code gets compiled "continually" behind the scenes?</description>
		<content:encoded><![CDATA[<p>I agree when it comes to performance tests. Those are, by design, meant to take longer.</p>
<p>My idea when it comes to functional testing doesn&#39;t really lend itself to fitnesse. I want to also veryify that all interfaces to the system do what they should. I can&#39;t really see that happening with fitnesse the way I want it to.</p>
<p>The good news is that we are almost there. I have created functional test suites which ran a full regression test for a module in less than a minute or so. The drawback was the setup time, which also was on the order of a minute. This minute was caused by spring/hibernate.</p>
<p>Good point about the CI server. What if eclipse (or whatever) continually ran your tests, using the second processor everyone seems to have but not use these days, just as your code gets compiled &#8220;continually&#8221; behind the scenes?</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Geir Hedemark</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45328</link>
		<author>Geir Hedemark</author>
		<pubDate>Thu, 15 May 2008 08:09:50 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45328</guid>
					<description>I was unclear, once again. Let me clarify.

If all of your tests - system tests, unit tests, integration tests, the works, all completed in less than a second - would you structure your test suite differently? Would you still keep your unit tests around? Would you hang on to your CI server?</description>
		<content:encoded><![CDATA[<p>I was unclear, once again. Let me clarify.</p>
<p>If all of your tests - system tests, unit tests, integration tests, the works, all completed in less than a second - would you structure your test suite differently? Would you still keep your unit tests around? Would you hang on to your CI server?</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Johannes Brodwall</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45333</link>
		<author>Johannes Brodwall</author>
		<pubDate>Thu, 15 May 2008 08:35:25 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45333</guid>
					<description>Hi, Geir

Thanks for a very interesting question. I think I might want to expand this into a full entry eventually.

I think the risk of my tests running this quickly are fairly slim. But if it did happen, I would still want to separate out the functional tests that we create in cooperation with domain experts and the system level tests that simulate realistic operating conditions. I'm happy with the system level tests we have now, which stress the system. There's no way these could run in under 1 second.

But neither of these types tests are JUnit tests. Our functional tests are implemented in FitNesse and our system tests are scripts that push data on the system (for a web based system, I would consider JMeter).

For tests implemented with JUnit, I would not see any usefulness in the distinction if things ran sufficiently fast. I might consider deleting tests that were covered sufficiently by the functional tests, but since these are run by different tools, it might be hard to find out exactly what tests could be deleted.

I would keep my CI server, though, so I was sure that changes by every member of the team (myself included!) actually passed the test suite. I might even add a failure condition if the tests ran for too long, to make sure that we didn't start down the slippery slope of slow tests.</description>
		<content:encoded><![CDATA[<p>Hi, Geir</p>
<p>Thanks for a very interesting question. I think I might want to expand this into a full entry eventually.</p>
<p>I think the risk of my tests running this quickly are fairly slim. But if it did happen, I would still want to separate out the functional tests that we create in cooperation with domain experts and the system level tests that simulate realistic operating conditions. I&#8217;m happy with the system level tests we have now, which stress the system. There&#8217;s no way these could run in under 1 second.</p>
<p>But neither of these types tests are JUnit tests. Our functional tests are implemented in FitNesse and our system tests are scripts that push data on the system (for a web based system, I would consider JMeter).</p>
<p>For tests implemented with JUnit, I would not see any usefulness in the distinction if things ran sufficiently fast. I might consider deleting tests that were covered sufficiently by the functional tests, but since these are run by different tools, it might be hard to find out exactly what tests could be deleted.</p>
<p>I would keep my CI server, though, so I was sure that changes by every member of the team (myself included!) actually passed the test suite. I might even add a failure condition if the tests ran for too long, to make sure that we didn&#8217;t start down the slippery slope of slow tests.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Geir Hedemark</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45336</link>
		<author>Geir Hedemark</author>
		<pubDate>Thu, 15 May 2008 09:03:23 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45336</guid>
					<description>I agree when it comes to performance tests. Those are, by design, meant to take longer.

My idea when it comes to functional testing doesn't really lend itself to fitnesse. I want to also veryify that all interfaces to the system do what they should. I can't really see that happening with fitnesse the way I want it to.

The good news is that we are almost there. I have created functional test suites which ran a full regression test for a module in less than a minute or so. The drawback was the setup time, which also was on the order of a minute. This minute was caused by spring/hibernate.

Good point about the CI server. What if eclipse (or whatever) continually ran your tests, using the second processor everyone seems to have but not use these days, just as your code gets compiled "continually" behind the scenes?</description>
		<content:encoded><![CDATA[<p>I agree when it comes to performance tests. Those are, by design, meant to take longer.</p>
<p>My idea when it comes to functional testing doesn&#8217;t really lend itself to fitnesse. I want to also veryify that all interfaces to the system do what they should. I can&#8217;t really see that happening with fitnesse the way I want it to.</p>
<p>The good news is that we are almost there. I have created functional test suites which ran a full regression test for a module in less than a minute or so. The drawback was the setup time, which also was on the order of a minute. This minute was caused by spring/hibernate.</p>
<p>Good point about the CI server. What if eclipse (or whatever) continually ran your tests, using the second processor everyone seems to have but not use these days, just as your code gets compiled &#8220;continually&#8221; behind the scenes?</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Johannes Brodwall</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84567</link>
		<author>Johannes Brodwall</author>
		<pubDate>Thu, 15 May 2008 21:53:27 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-84567</guid>
					<description>If everyone (including the questionable professionals who currently don&#39;t really test!) ran continuous testing in their IDE, I wouldn&#39;t feel the need to run these tests in CI. But we use our CI server also to build the software and push it out to test servers for performance testing. So I don&#39;t know what the point of disabling the tests would be. :-)&lt;br&gt;&lt;br&gt;I think functional tests will tend to vary a lot from project to project. It really depends on what your interface to the outside world is.&lt;br&gt;&lt;br&gt;A minute to start up Hibernate (Spring is seldom to blame) is unacceptable for a functional test. In my functional tests, I have replaced the whole persistence layer with a stupid in-memory replacement.</description>
		<content:encoded><![CDATA[<p>If everyone (including the questionable professionals who currently don&#39;t really test!) ran continuous testing in their IDE, I wouldn&#39;t feel the need to run these tests in CI. But we use our CI server also to build the software and push it out to test servers for performance testing. So I don&#39;t know what the point of disabling the tests would be. :-)</p>
<p>I think functional tests will tend to vary a lot from project to project. It really depends on what your interface to the outside world is.</p>
<p>A minute to start up Hibernate (Spring is seldom to blame) is unacceptable for a functional test. In my functional tests, I have replaced the whole persistence layer with a stupid in-memory replacement.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Johannes Brodwall</title>
		<link>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45443</link>
		<author>Johannes Brodwall</author>
		<pubDate>Thu, 15 May 2008 23:53:27 +0000</pubDate>
		<guid>http://www.brodwall.com/johannes/blog/2008/05/07/enjoyable-development/#comment-45443</guid>
					<description>If everyone (including the questionable professionals who currently don't really test!) ran continuous testing in their IDE, I wouldn't feel the need to run these tests in CI. But we use our CI server also to build the software and push it out to test servers for performance testing. So I don't know what the point of disabling the tests would be. :-)

I think functional tests will tend to vary a lot from project to project. It really depends on what your interface to the outside world is.

A minute to start up Hibernate (Spring is seldom to blame) is unacceptable for a functional test. In my functional tests, I have replaced the whole persistence layer with a stupid in-memory replacement.</description>
		<content:encoded><![CDATA[<p>If everyone (including the questionable professionals who currently don&#8217;t really test!) ran continuous testing in their IDE, I wouldn&#8217;t feel the need to run these tests in CI. But we use our CI server also to build the software and push it out to test servers for performance testing. So I don&#8217;t know what the point of disabling the tests would be. :-)</p>
<p>I think functional tests will tend to vary a lot from project to project. It really depends on what your interface to the outside world is.</p>
<p>A minute to start up Hibernate (Spring is seldom to blame) is unacceptable for a functional test. In my functional tests, I have replaced the whole persistence layer with a stupid in-memory replacement.</p>
]]></content:encoded>
				</item>
</channel>
</rss>
