<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: why i broke 89 tests</title>
	<atom:link href="http://silkandspinach.net/2009/10/18/why-i-broke-89-tests/feed/" rel="self" type="application/rss+xml" />
	<link>http://silkandspinach.net/2009/10/18/why-i-broke-89-tests/</link>
	<description>development, by example</description>
	<lastBuildDate>Mon, 19 Mar 2012 12:48:20 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Caffeine Driven Development &#187; Blog Archive &#187; L33t Links #35</title>
		<link>http://silkandspinach.net/2009/10/18/why-i-broke-89-tests/#comment-15855</link>
		<dc:creator><![CDATA[Caffeine Driven Development &#187; Blog Archive &#187; L33t Links #35]]></dc:creator>
		<pubDate>Fri, 30 Oct 2009 07:35:22 +0000</pubDate>
		<guid isPermaLink="false">http://silkandspinach.net/?p=1096#comment-15855</guid>
		<description><![CDATA[[...] why i broke 89 tests [...]]]></description>
		<content:encoded><![CDATA[<p>[...] why i broke 89 tests [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Troy Frever</title>
		<link>http://silkandspinach.net/2009/10/18/why-i-broke-89-tests/#comment-15853</link>
		<dc:creator><![CDATA[Troy Frever]]></dc:creator>
		<pubDate>Thu, 29 Oct 2009 20:03:49 +0000</pubDate>
		<guid isPermaLink="false">http://silkandspinach.net/?p=1096#comment-15853</guid>
		<description><![CDATA[I agree with your general approach. In fact, the problem is not that 89 tests broke. People often complain about that type of thing, but in truth it is not the issue. What can be problematic is if it is difficult to find your code error among the failing tests. If you were able to immediately say, &quot;aha, the problem is in SimulatedPolymorphism&quot; then it doesn&#039;t matter how many other tests broke. 
  Your plan to write a unit test when this happens is one good way to solve this. Another is to try to always make sure some integration tests hit every class in a meaningful way. If you change a class and 200 tests fail, but one of the failures is in a suite named for the class you just changed, then you immediately know where to look.
  Of course, if your integration tests run slowly, that is a different issue. I am assuming that yours run as quickly as typical unit tests, in which case I find the extra test coverage to be a bonus, not a smell. Again, given that you have solved the issue of rapid location of the underlying error.

Troy Frever]]></description>
		<content:encoded><![CDATA[<p>I agree with your general approach. In fact, the problem is not that 89 tests broke. People often complain about that type of thing, but in truth it is not the issue. What can be problematic is if it is difficult to find your code error among the failing tests. If you were able to immediately say, &#8220;aha, the problem is in SimulatedPolymorphism&#8221; then it doesn&#8217;t matter how many other tests broke.<br />
  Your plan to write a unit test when this happens is one good way to solve this. Another is to try to always make sure some integration tests hit every class in a meaningful way. If you change a class and 200 tests fail, but one of the failures is in a suite named for the class you just changed, then you immediately know where to look.<br />
  Of course, if your integration tests run slowly, that is a different issue. I am assuming that yours run as quickly as typical unit tests, in which case I find the extra test coverage to be a bonus, not a smell. Again, given that you have solved the issue of rapid location of the underlying error.</p>
<p>Troy Frever</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kent Beck</title>
		<link>http://silkandspinach.net/2009/10/18/why-i-broke-89-tests/#comment-15851</link>
		<dc:creator><![CDATA[Kent Beck]]></dc:creator>
		<pubDate>Thu, 29 Oct 2009 14:40:25 +0000</pubDate>
		<guid isPermaLink="false">http://silkandspinach.net/?p=1096#comment-15851</guid>
		<description><![CDATA[Thank you for the writeup. It&#039;s always instructive to dig deeper into a situation that surprised you.

I examined the results of running 200M tests over 50 person years and found a clear power law distribution in the number of failures per test run. Sounds like you hit the fat tail (or the fat tail hit you).

I agree with your analysis of the dilemma--readability vs. jackpot failures. Like you, I&#039;ll take readability every time. 40% of the tests for JUnit are at the API level and we don&#039;t regret it, in spite of the occasional multiple failure.]]></description>
		<content:encoded><![CDATA[<p>Thank you for the writeup. It&#8217;s always instructive to dig deeper into a situation that surprised you.</p>
<p>I examined the results of running 200M tests over 50 person years and found a clear power law distribution in the number of failures per test run. Sounds like you hit the fat tail (or the fat tail hit you).</p>
<p>I agree with your analysis of the dilemma&#8211;readability vs. jackpot failures. Like you, I&#8217;ll take readability every time. 40% of the tests for JUnit are at the API level and we don&#8217;t regret it, in spite of the occasional multiple failure.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Rutherford</title>
		<link>http://silkandspinach.net/2009/10/18/why-i-broke-89-tests/#comment-15848</link>
		<dc:creator><![CDATA[Kevin Rutherford]]></dc:creator>
		<pubDate>Mon, 19 Oct 2009 19:08:37 +0000</pubDate>
		<guid isPermaLink="false">http://silkandspinach.net/?p=1096#comment-15848</guid>
		<description><![CDATA[Yes, I test-drove a fix for SimulatedPolymorphism and then set about writing this up.

I do think it&#039;s always worth paying attention to the little nagging voice whenever I&#039;m developing, because that voice is almost always telling me something important. When I can figure out what it&#039;s saying...]]></description>
		<content:encoded><![CDATA[<p>Yes, I test-drove a fix for SimulatedPolymorphism and then set about writing this up.</p>
<p>I do think it&#8217;s always worth paying attention to the little nagging voice whenever I&#8217;m developing, because that voice is almost always telling me something important. When I can figure out what it&#8217;s saying&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marty Andrews</title>
		<link>http://silkandspinach.net/2009/10/18/why-i-broke-89-tests/#comment-15847</link>
		<dc:creator><![CDATA[Marty Andrews]]></dc:creator>
		<pubDate>Mon, 19 Oct 2009 00:42:49 +0000</pubDate>
		<guid isPermaLink="false">http://silkandspinach.net/?p=1096#comment-15847</guid>
		<description><![CDATA[FWIW, I have the same attitude, and the same problem, in the Roodi code base.  The integration tests are much more expressive, and seem to be where I focus now that the code is reasonably stable.]]></description>
		<content:encoded><![CDATA[<p>FWIW, I have the same attitude, and the same problem, in the Roodi code base.  The integration tests are much more expressive, and seem to be where I focus now that the code is reasonably stable.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Lewis</title>
		<link>http://silkandspinach.net/2009/10/18/why-i-broke-89-tests/#comment-15846</link>
		<dc:creator><![CDATA[Robert Lewis]]></dc:creator>
		<pubDate>Sun, 18 Oct 2009 22:44:37 +0000</pubDate>
		<guid isPermaLink="false">http://silkandspinach.net/?p=1096#comment-15846</guid>
		<description><![CDATA[So, once you fix SimulatedPolymorphism your 86 tests will pass again, right? 

I don&#039;t think this is anything to get too worked up about. I know people complain a lot about how fragile integration tests can be, but if the tests are valid and maintainable they are valuable checks on the behavior of the system. If you have a reliable integration environment, they can be very quick to write as well.

I would tend to segregate them from more focused unit tests, because they tell you different things. It sounds like you&#039;re approaching this the same way I would -- write a focused unit test that shows the problem, then fix it. All your tests pass again, and life is good!]]></description>
		<content:encoded><![CDATA[<p>So, once you fix SimulatedPolymorphism your 86 tests will pass again, right? </p>
<p>I don&#8217;t think this is anything to get too worked up about. I know people complain a lot about how fragile integration tests can be, but if the tests are valid and maintainable they are valuable checks on the behavior of the system. If you have a reliable integration environment, they can be very quick to write as well.</p>
<p>I would tend to segregate them from more focused unit tests, because they tell you different things. It sounds like you&#8217;re approaching this the same way I would &#8212; write a focused unit test that shows the problem, then fix it. All your tests pass again, and life is good!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

