<?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: Design Driven Testing: Using tests as specifications of systemâ€™s invariants and contracts design</title>
	<atom:link href="http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/</link>
	<description>Sadek Drobi</description>
	<lastBuildDate>Mon, 02 Nov 2009 05:56:20 +0100</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Fingerprints of Casper Fabricius &#187; Talking at BarCamp Copenhagen</title>
		<link>http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/comment-page-1/#comment-1830</link>
		<dc:creator>Fingerprints of Casper Fabricius &#187; Talking at BarCamp Copenhagen</dc:creator>
		<pubDate>Wed, 16 Jan 2008 19:29:34 +0000</pubDate>
		<guid isPermaLink="false">http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/#comment-1830</guid>
		<description>[...] I could of course be preaching test-driven development (TDD) and show how Rails makes this approach quite easy, but haven&#8217;t TDD&#8217;ed much in my latest projects, because I was tired of having this huge, always-breaking test suite, which rarely caught any real bugs, and mostly just indicated that my tests was buggy. I&#8217;m starting to get a feeling that Cope is right when he says that unit testing can be harmful. [...]</description>
		<content:encoded><![CDATA[<p>[...] I could of course be preaching test-driven development (TDD) and show how Rails makes this approach quite easy, but haven&#8217;t TDD&#8217;ed much in my latest projects, because I was tired of having this huge, always-breaking test suite, which rarely caught any real bugs, and mostly just indicated that my tests was buggy. I&#8217;m starting to get a feeling that Cope is right when he says that unit testing can be harmful. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Julien Delhomme&#8217;s Blog &#187; Are you really sure Agile is not bad for Design?</title>
		<link>http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/comment-page-1/#comment-778</link>
		<dc:creator>Julien Delhomme&#8217;s Blog &#187; Are you really sure Agile is not bad for Design?</dc:creator>
		<pubDate>Sat, 13 Oct 2007 23:33:21 +0000</pubDate>
		<guid isPermaLink="false">http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/#comment-778</guid>
		<description>[...] bugs. The goal of Unit testing must be to define system boundaries and to specify invariants (Design Driven Testing: Using tests as specifications of system&#8217;s invariants and contracts desi... â€“ Sadek [...]</description>
		<content:encoded><![CDATA[<p>[...] bugs. The goal of Unit testing must be to define system boundaries and to specify invariants (Design Driven Testing: Using tests as specifications of system&#8217;s invariants and contracts desi&#8230; â€“ Sadek [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sadek Drobi</title>
		<link>http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/comment-page-1/#comment-750</link>
		<dc:creator>Sadek Drobi</dc:creator>
		<pubDate>Tue, 02 Oct 2007 11:28:06 +0000</pubDate>
		<guid isPermaLink="false">http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/#comment-750</guid>
		<description>There are a lot of interesting ideas in our previous discussions, including the &quot;Tools and Materials&quot; metaphor youâ€™ve just mentioned. I really would like to have such discussions public because I guess we tend all to agree on a lot of values and concepts. And we share some understanding of what agile really means.
On the other hand, I would prefer to have this kind of discussion in a more neutral place than my personal blog that can be influenced by my ideas. I can suggest publishing a WIKI where we can discuss such ideas, then publish our shared understanding about agile development.  I wonâ€™t go personally for choosing Wikipedia as I concerned about spam. I can arrange for the host/domain name/installation. I also welcome any other suggestions.
For the business invariants, yes I am talking about the integration level, but also talking about tracing them down till the coherent units/elements of the program, be it classes, methods or a whole structure of classes. The aim is to make developers&#039; intention and assumptions more visible.
I agree with you that defining business invariants in an up-front manner in the level of integration will have its effects on velocity. Thatâ€™s why I tried to avoid using the term &quot;test-first&quot; that I, mistakenly, used in the previous post. I tend to agree on the importance of the â€œtest-whileâ€ over the rigid â€œtest-firstâ€ term. Thatâ€™s why I mentioned that I do this approach in an iterative way. Still that can be misunderstood as to be a test-first approach. But what I want to say is that at any moment of implementation/test we can go back and modify invariants and assumption in all the levels (from integration level down to the deepest coherent set of elements of the implementation). I guess I should update the post to add that the process I am using is recursive, and that it can go down and up defining/modifying/adding invariants in all the levels of coherent elements of the implementation.</description>
		<content:encoded><![CDATA[<p>There are a lot of interesting ideas in our previous discussions, including the &#8220;Tools and Materials&#8221; metaphor youâ€™ve just mentioned. I really would like to have such discussions public because I guess we tend all to agree on a lot of values and concepts. And we share some understanding of what agile really means.<br />
On the other hand, I would prefer to have this kind of discussion in a more neutral place than my personal blog that can be influenced by my ideas. I can suggest publishing a WIKI where we can discuss such ideas, then publish our shared understanding about agile development.  I wonâ€™t go personally for choosing Wikipedia as I concerned about spam. I can arrange for the host/domain name/installation. I also welcome any other suggestions.<br />
For the business invariants, yes I am talking about the integration level, but also talking about tracing them down till the coherent units/elements of the program, be it classes, methods or a whole structure of classes. The aim is to make developers&#8217; intention and assumptions more visible.<br />
I agree with you that defining business invariants in an up-front manner in the level of integration will have its effects on velocity. Thatâ€™s why I tried to avoid using the term &#8220;test-first&#8221; that I, mistakenly, used in the previous post. I tend to agree on the importance of the â€œtest-whileâ€ over the rigid â€œtest-firstâ€ term. Thatâ€™s why I mentioned that I do this approach in an iterative way. Still that can be misunderstood as to be a test-first approach. But what I want to say is that at any moment of implementation/test we can go back and modify invariants and assumption in all the levels (from integration level down to the deepest coherent set of elements of the implementation). I guess I should update the post to add that the process I am using is recursive, and that it can go down and up defining/modifying/adding invariants in all the levels of coherent elements of the implementation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cope</title>
		<link>http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/comment-page-1/#comment-748</link>
		<dc:creator>Cope</dc:creator>
		<pubDate>Tue, 02 Oct 2007 07:01:09 +0000</pubDate>
		<guid isPermaLink="false">http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/#comment-748</guid>
		<description>Sadek, I think your description of the architecture/design approach summarizes my JaOO talk beautifully. Add to that the Tools and Materials metaphor that Serge pointed out to us, and the use of Java abstract classes for the domain architecture and of Java interfaces for the tool architecture, and it pretty much sums it up.

I like your notion of tieing the tests back to business invariants. Those can usually be found in the Use Cases. However, I can&#039;t follow your reasoning of how to bring these invariants to the level of components. I think too many people guess about individual components&#039; invariants at the time they are coding them up. This is reminiscent of what Bas Vodde said at JaOO: that you can use a modified TDD at the integration level. I claim that that&#039;s not TDD any more, at least not in the sense of driving the design, and certainly not in the sense that Bob Martin defined TDD. You really are going to write all the integration tests at that level *before* writing any code subject to that scope of integration? A sane person would develop the tests and code in parallel. To do this serialization will greatly decrease your velocity.

As Gertrud BjÃ¸rnvig points out, It&#039;s not &quot;test first&quot; that&#039;s important: it&#039;s &quot;test-while.&quot;</description>
		<content:encoded><![CDATA[<p>Sadek, I think your description of the architecture/design approach summarizes my JaOO talk beautifully. Add to that the Tools and Materials metaphor that Serge pointed out to us, and the use of Java abstract classes for the domain architecture and of Java interfaces for the tool architecture, and it pretty much sums it up.</p>
<p>I like your notion of tieing the tests back to business invariants. Those can usually be found in the Use Cases. However, I can&#8217;t follow your reasoning of how to bring these invariants to the level of components. I think too many people guess about individual components&#8217; invariants at the time they are coding them up. This is reminiscent of what Bas Vodde said at JaOO: that you can use a modified TDD at the integration level. I claim that that&#8217;s not TDD any more, at least not in the sense of driving the design, and certainly not in the sense that Bob Martin defined TDD. You really are going to write all the integration tests at that level *before* writing any code subject to that scope of integration? A sane person would develop the tests and code in parallel. To do this serialization will greatly decrease your velocity.</p>
<p>As Gertrud BjÃ¸rnvig points out, It&#8217;s not &#8220;test first&#8221; that&#8217;s important: it&#8217;s &#8220;test-while.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sadek Drobi&#8217;s Blog &#187; I always write tests before code, but I donâ€™t do Test Driven Development</title>
		<link>http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/comment-page-1/#comment-742</link>
		<dc:creator>Sadek Drobi&#8217;s Blog &#187; I always write tests before code, but I donâ€™t do Test Driven Development</dc:creator>
		<pubDate>Sat, 29 Sep 2007 17:38:06 +0000</pubDate>
		<guid isPermaLink="false">http://sadekdrobi.com/2007/09/29/draft-design-driven-testing-using-tests-as-specifications-of-system%e2%80%99s-invariants-and-contracts-design/#comment-742</guid>
		<description>[...] about this approach to testing in my newer post Design Driven Testing: Using tests as specifications of system&#8217;s invariants and contracts desi...â€¦   del.icio.us, [...]</description>
		<content:encoded><![CDATA[<p>[...] about this approach to testing in my newer post Design Driven Testing: Using tests as specifications of system&#8217;s invariants and contracts desi&#8230;â€¦   del.icio.us, [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
