<?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"
	>
<channel>
	<title>Comments on: Where do Acceptance Tests go to Die?</title>
	<atom:link href="http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/feed/" rel="self" type="application/rss+xml" />
	<link>http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/</link>
	<description>Repeat after me: Data is code, code is data.</description>
	<pubDate>Fri, 10 Sep 2010 18:45:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
		<item>
		<title>By: My Submission for Agile Australia 2009 at Fragmental.tw</title>
		<link>http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/#comment-1814</link>
		<dc:creator>My Submission for Agile Australia 2009 at Fragmental.tw</dc:creator>
		<pubDate>Tue, 23 Jun 2009 12:03:14 +0000</pubDate>
		<guid isPermaLink="false">http://fragmental.tw/?p=111#comment-1814</guid>
		<description>[...] is based on my blog posts about acceptance testing and user story [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] is based on my blog posts about acceptance testing and user story [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phillip Calçado "Shoes"</title>
		<link>http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/#comment-1380</link>
		<dc:creator>Phillip Calçado "Shoes"</dc:creator>
		<pubDate>Tue, 04 Nov 2008 22:34:02 +0000</pubDate>
		<guid isPermaLink="false">http://fragmental.tw/?p=111#comment-1380</guid>
		<description>Hi,

I'm not saying you shouldn't do acceptance tests. What the post suggests is that after your got your story done you migrate the acceptance tests to the functional test suite. 

In your example you would still have the acceptance tests demanded but once you have those working you just convert them into functional testing. That is probably good enough as you won't play the same story twice and acceptance tests are tied to specific stories.

Anyway there is a difference between what's the ideal process for a given project and what the client demands from you. Clients demand all sorts of things, if yours require a passing acceptance test to pay the bill then you have to create one or prove it worthless to your client.

It is the same situation when your client requires BDUF or any other non-agile (i.e. worthless) artifact. This has nothing to do with software development itself, it is about contracts and agreements between companies.

Thanks for your comment.</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>I&#8217;m not saying you shouldn&#8217;t do acceptance tests. What the post suggests is that after your got your story done you migrate the acceptance tests to the functional test suite. </p>
<p>In your example you would still have the acceptance tests demanded but once you have those working you just convert them into functional testing. That is probably good enough as you won&#8217;t play the same story twice and acceptance tests are tied to specific stories.</p>
<p>Anyway there is a difference between what&#8217;s the ideal process for a given project and what the client demands from you. Clients demand all sorts of things, if yours require a passing acceptance test to pay the bill then you have to create one or prove it worthless to your client.</p>
<p>It is the same situation when your client requires BDUF or any other non-agile (i.e. worthless) artifact. This has nothing to do with software development itself, it is about contracts and agreements between companies.</p>
<p>Thanks for your comment.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PM Hut</title>
		<link>http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/#comment-1379</link>
		<dc:creator>PM Hut</dc:creator>
		<pubDate>Tue, 04 Nov 2008 20:23:06 +0000</pubDate>
		<guid isPermaLink="false">http://fragmental.tw/?p=111#comment-1379</guid>
		<description>Hi Philip,

I have commented on Sarah's article and I ran into yours. My comment is still the same, what about the financial aspect of acceptance testing (eg. clients withholding payments because of a failed acceptance). The acceptance will still be demanded by the client (where some do their best to discover flaws in the testing)...</description>
		<content:encoded><![CDATA[<p>Hi Philip,</p>
<p>I have commented on Sarah&#8217;s article and I ran into yours. My comment is still the same, what about the financial aspect of acceptance testing (eg. clients withholding payments because of a failed acceptance). The acceptance will still be demanded by the client (where some do their best to discover flaws in the testing)&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: thekua.com@work &#187; Automated story-based acceptance tests lead to unmaintainable systems</title>
		<link>http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/#comment-1333</link>
		<dc:creator>thekua.com@work &#187; Automated story-based acceptance tests lead to unmaintainable systems</dc:creator>
		<pubDate>Sun, 12 Oct 2008 20:24:16 +0000</pubDate>
		<guid isPermaLink="false">http://fragmental.tw/?p=111#comment-1333</guid>
		<description>[...] not many teams seem to know what to do. It sounds exactly like the scenarios that my colleagues, Phillip and Sarah are experiencing or experienced [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] not many teams seem to know what to do. It sounds exactly like the scenarios that my colleagues, Phillip and Sarah are experiencing or experienced [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: It&#8217;s not all about the acceptance tests at Mark Needham</title>
		<link>http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/#comment-1300</link>
		<dc:creator>It&#8217;s not all about the acceptance tests at Mark Needham</dc:creator>
		<pubDate>Thu, 02 Oct 2008 15:30:30 +0000</pubDate>
		<guid isPermaLink="false">http://fragmental.tw/?p=111#comment-1300</guid>
		<description>[...] few of my colleagues recently posted their opinions about acceptance tests which tied in nicely with a [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] few of my colleagues recently posted their opinions about acceptance tests which tied in nicely with a [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: User Stories are Just Schedulable Change at Fragmental.tw</title>
		<link>http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/#comment-1295</link>
		<dc:creator>User Stories are Just Schedulable Change at Fragmental.tw</dc:creator>
		<pubDate>Tue, 30 Sep 2008 15:32:37 +0000</pubDate>
		<guid isPermaLink="false">http://fragmental.tw/?p=111#comment-1295</guid>
		<description>[...] Research        _uacct = "UA-134259-3"; urchinTracker();        &#171; Where do Acceptance Tests go to Die? [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Research        _uacct = &#8220;UA-134259-3&#8243;; urchinTracker();        &laquo; Where do Acceptance Tests go to Die? [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phillip Calçado "Shoes"</title>
		<link>http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/#comment-1294</link>
		<dc:creator>Phillip Calçado "Shoes"</dc:creator>
		<pubDate>Tue, 30 Sep 2008 12:35:38 +0000</pubDate>
		<guid isPermaLink="false">http://fragmental.tw/?p=111#comment-1294</guid>
		<description>Hi Jeff,

Thanks for your comments. I guess this point is a bit too abstract, I'll probably write a post with an example of what we're doing.

The argument for documentation (I prefer to refer to that as 'executable specification') is a nice one. Anyway, I don't think acceptance tests add much value to that per se. I still have unit, integration and system tests so I don't think that not having tests that describes something that is temporal in nature  is missed at all (remember that system tests are part of our build and written in dev-friendly tools).

I think that acceptance tests are important as documentation for the story, not for the system. What should be represented in an permanent executable spec is not the change (the story) but the final result. Therefore I think acceptance tests *are* different. They test the very specific acceptance criteria for a story; and a story is just a modification in a system. 

The change on the user login screen may break acceptance tests for stories that were played a long time ago. My point is that instead of maintaining executable specs for those old stories you should maintain executable specs for the system itself. Stories are not like use cases in the sense that you can describe a system by those. Stories are just scheduled change.

Notice that in my current project we happen to have a decent QA team that work together with the development team and make their tests part of the build. If that wasn't the case I probably would refrain from even suggesting the 'acceptance test promoted to system test' strategy.

Avoiding duplicated acceptance criteria verification is a very nice idea, but I found it hard to implement in practice. It is very common for a given acceptance criterion to be repeated between stories and if you have story-based testing (in opposite of the scenario-based testing provided by system tests) it is often too hard to verify all acceptance criteria for multiple stories in a single test.

I don't think that not using UI (or a real user API) for a system is valuable for an acceptance test. The acceptance criteria should be about externally observable behaviour and that's the level where the acceptance tests should be written. Actually, if we don't use UI-drivers for acceptance tests probably just unit and integration testing would be enough (and that's Sarah's point, I guess).</description>
		<content:encoded><![CDATA[<p>Hi Jeff,</p>
<p>Thanks for your comments. I guess this point is a bit too abstract, I&#8217;ll probably write a post with an example of what we&#8217;re doing.</p>
<p>The argument for documentation (I prefer to refer to that as &#8216;executable specification&#8217;) is a nice one. Anyway, I don&#8217;t think acceptance tests add much value to that per se. I still have unit, integration and system tests so I don&#8217;t think that not having tests that describes something that is temporal in nature  is missed at all (remember that system tests are part of our build and written in dev-friendly tools).</p>
<p>I think that acceptance tests are important as documentation for the story, not for the system. What should be represented in an permanent executable spec is not the change (the story) but the final result. Therefore I think acceptance tests *are* different. They test the very specific acceptance criteria for a story; and a story is just a modification in a system. </p>
<p>The change on the user login screen may break acceptance tests for stories that were played a long time ago. My point is that instead of maintaining executable specs for those old stories you should maintain executable specs for the system itself. Stories are not like use cases in the sense that you can describe a system by those. Stories are just scheduled change.</p>
<p>Notice that in my current project we happen to have a decent QA team that work together with the development team and make their tests part of the build. If that wasn&#8217;t the case I probably would refrain from even suggesting the &#8216;acceptance test promoted to system test&#8217; strategy.</p>
<p>Avoiding duplicated acceptance criteria verification is a very nice idea, but I found it hard to implement in practice. It is very common for a given acceptance criterion to be repeated between stories and if you have story-based testing (in opposite of the scenario-based testing provided by system tests) it is often too hard to verify all acceptance criteria for multiple stories in a single test.</p>
<p>I don&#8217;t think that not using UI (or a real user API) for a system is valuable for an acceptance test. The acceptance criteria should be about externally observable behaviour and that&#8217;s the level where the acceptance tests should be written. Actually, if we don&#8217;t use UI-drivers for acceptance tests probably just unit and integration testing would be enough (and that&#8217;s Sarah&#8217;s point, I guess).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Santini</title>
		<link>http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/#comment-1293</link>
		<dc:creator>Jeff Santini</dc:creator>
		<pubDate>Tue, 30 Sep 2008 09:53:41 +0000</pubDate>
		<guid isPermaLink="false">http://fragmental.tw/?p=111#comment-1293</guid>
		<description>Phillip,

A couple of comments.  

First I think your original post suffered by not giving a concrete example of these wasteful acceptence tests.  You did so in a comment above and that helps me understand your point.

I would counter with the idea that tests are meant to document a system.  If the function of a login process changes you would expect a broken test and I would expect someone on my team to fix it or throw it away if it is no longer valuable.  If I break 20 tests by introducing a change that is a different problem.  That is a problem of duplication in my tests.  Whether they are unit tests or any other kind of test that is unacceptable.  Why would accptence tests be a special case of test?  If there is lots of duplication in your acceptence tests then the job of your team is to find a way to remove that duplication.  I would shy away from dumping on the nature of acceptence tests and look for problems with your particular acceptence test writing process.  Maybe that is what you are doing and just describing it differently than I would.

Also the problem of build time skyrocketing.  Carlos mentioned avoiding the GUI in your tests.  That is often a way to speed up tests by an order of magnitude.  Another strategy is to remove all this duplication in your acceptence tests.</description>
		<content:encoded><![CDATA[<p>Phillip,</p>
<p>A couple of comments.  </p>
<p>First I think your original post suffered by not giving a concrete example of these wasteful acceptence tests.  You did so in a comment above and that helps me understand your point.</p>
<p>I would counter with the idea that tests are meant to document a system.  If the function of a login process changes you would expect a broken test and I would expect someone on my team to fix it or throw it away if it is no longer valuable.  If I break 20 tests by introducing a change that is a different problem.  That is a problem of duplication in my tests.  Whether they are unit tests or any other kind of test that is unacceptable.  Why would accptence tests be a special case of test?  If there is lots of duplication in your acceptence tests then the job of your team is to find a way to remove that duplication.  I would shy away from dumping on the nature of acceptence tests and look for problems with your particular acceptence test writing process.  Maybe that is what you are doing and just describing it differently than I would.</p>
<p>Also the problem of build time skyrocketing.  Carlos mentioned avoiding the GUI in your tests.  That is often a way to speed up tests by an order of magnitude.  Another strategy is to remove all this duplication in your acceptence tests.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phillip Calçado "Shoes"</title>
		<link>http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/#comment-1292</link>
		<dc:creator>Phillip Calçado "Shoes"</dc:creator>
		<pubDate>Tue, 30 Sep 2008 05:00:57 +0000</pubDate>
		<guid isPermaLink="false">http://fragmental.tw/?p=111#comment-1292</guid>
		<description>Carlos,

We use GUI to drive tests since decades ago and this was never the real cause for duplicated tests. The cause for duplicated tests is because tests have bad quality.

Acceptance tests ARE temporary just because acceptance criteria ARE temporary. There's no real doubt here as one story will break the acceptance criteria for previous stories all the time. 

Example: If you play an story named "User should be able to login"  that could mean that after logging in a user should be directed to the system's home page. You acceptance tests verify this criteria.

After playing this card you get a new one where name "Improved login"  where the user should be related to, say, his favourite page. Not only you have to write acceptance tests for this but you change to change the former story's, played hours ago.

This is a simple example but it's not hard to imagine how this scales up in a project with more than one developer. And I'm not talking about teams new to agile but with seasoned developers, BAs and QAs. The tests are not updated just because in a large codebase it is *very* hard to identify which old criteria your story just broke, specially because sometimes old tests won't break at all.


Given that the question is that if there is any value in keeping old acceptance tests around, as they have to be changed all the time as what were their acceptance criteria change.

Also, I think you may be saying 'acceptance tests' but you mean 'user acceptance test'. The former is related to a story while the latter is related to the system and its features. Stories are not features, they are just schedulable pieces of functionality.</description>
		<content:encoded><![CDATA[<p>Carlos,</p>
<p>We use GUI to drive tests since decades ago and this was never the real cause for duplicated tests. The cause for duplicated tests is because tests have bad quality.</p>
<p>Acceptance tests ARE temporary just because acceptance criteria ARE temporary. There&#8217;s no real doubt here as one story will break the acceptance criteria for previous stories all the time. </p>
<p>Example: If you play an story named &#8220;User should be able to login&#8221;  that could mean that after logging in a user should be directed to the system&#8217;s home page. You acceptance tests verify this criteria.</p>
<p>After playing this card you get a new one where name &#8220;Improved login&#8221;  where the user should be related to, say, his favourite page. Not only you have to write acceptance tests for this but you change to change the former story&#8217;s, played hours ago.</p>
<p>This is a simple example but it&#8217;s not hard to imagine how this scales up in a project with more than one developer. And I&#8217;m not talking about teams new to agile but with seasoned developers, BAs and QAs. The tests are not updated just because in a large codebase it is *very* hard to identify which old criteria your story just broke, specially because sometimes old tests won&#8217;t break at all.</p>
<p>Given that the question is that if there is any value in keeping old acceptance tests around, as they have to be changed all the time as what were their acceptance criteria change.</p>
<p>Also, I think you may be saying &#8216;acceptance tests&#8217; but you mean &#8216;user acceptance test&#8217;. The former is related to a story while the latter is related to the system and its features. Stories are not features, they are just schedulable pieces of functionality.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Carlos Alexandre</title>
		<link>http://fragmental.tw/2008/09/29/where-do-acceptance-tests-go-to-die/#comment-1291</link>
		<dc:creator>Carlos Alexandre</dc:creator>
		<pubDate>Tue, 30 Sep 2008 02:18:24 +0000</pubDate>
		<guid isPermaLink="false">http://fragmental.tw/?p=111#comment-1291</guid>
		<description>The problem with tests redundant seems to be the consequences of acceptance tests applied to the GUI of the system. My take on this is that it makes it harder to understand the system from the point of view of business value. Also, as Daniel noted, acceptance tests are to enable communication. There is no point for example replace them with integration or system test IMO.

In the case of tests not updated, I don't think they are temporary but that we are in continous learning.</description>
		<content:encoded><![CDATA[<p>The problem with tests redundant seems to be the consequences of acceptance tests applied to the GUI of the system. My take on this is that it makes it harder to understand the system from the point of view of business value. Also, as Daniel noted, acceptance tests are to enable communication. There is no point for example replace them with integration or system test IMO.</p>
<p>In the case of tests not updated, I don&#8217;t think they are temporary but that we are in continous learning.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
