<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gojko Adzic &#187; gojko</title>
	<atom:link href="http://gojko.net/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://gojko.net</link>
	<description>Building software that matters</description>
	<lastBuildDate>Wed, 04 Aug 2010 11:38:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Let&#8217;s change the tune</title>
		<link>http://gojko.net/2010/08/04/lets-change-the-tune/</link>
		<comments>http://gojko.net/2010/08/04/lets-change-the-tune/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 11:13:21 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[acceptance testing]]></category>
		<category><![CDATA[agile testing]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1983</guid>
		<description><![CDATA[As a community, we&#8217;re very guilty of using technical terms and confusing business users. If we want to get them more involved, we have to use the right names for the right things and stop confusing people. This lesson is obvious in acceptance tests and we know that we need to keep the naming consistent [...]]]></description>
			<content:encoded><![CDATA[<p>As a community, we&#8217;re very guilty of using technical terms and confusing business users. If we want to get them more involved, we have to use the right names for the right things and stop confusing people. This lesson is obvious in acceptance tests and we know that we need to keep the naming consistent and avoid misleading terms, but we don&#8217;t do this when we talk about the process. For example, when we say continuous integration in the context of agile acceptance testing, we don&#8217;t really mean running integration tests. So why use that term, and then have to explain how acceptance tests are different from integration tests? Until I started using Specification Workshops as the name for a collaborative meeting about acceptance tests, it was very hard to convince business users to participate. But a simple change in naming made the problem go away. <span id="more-1983"></span></p>
<p>By using better names, we can avoid a lot of completely meaningless discussions and get people started on the right path straight away. So here is what I propose:</p>
<p>One of the biggest issues teams have with acceptance testing is who should write what and when. So we need to come up with a good name for the start of the process that clearly says that everyone should be involved, and that this needs to happen before developers start developing and testers start testing, because we want to use acceptance tests as a target for development. Test first is a good technical name for it, but business users don&#8217;t get it. I propose we talk about <b>Specifying Collaboratively</b> instead of test first or writing acceptance tests.</p>
<p>It sounds quite normal to put every single numerical possibility into an automated functional test, why wouldn&#8217;t you do it if it is automated. But such complex tests are unusable as a communication tool. So instead of writing functional tests, let&#8217;s talk about <b>Illustrating with Examples</b> (thanks, Dave) and expect the output of that to be <b>Key Examples</b> to point out that we only want enough to explain the context properly.</p>
<p>Key examples are raw material, but if we just talk about acceptance testing then why not just dump all those complicated 50-column 100-row tables into an acceptance test without any explanation, it&#8217;s going to be tested by a machine anyway. But these tests are for humans as well for machines, so let&#8217;s talk about a whole new step after this, about the process of extracting the minimal set of attributes and examples to specify a business rule, and about adding a title, description and so on. I propose we call this <b>Distilling the specification</b>.</p>
<p>I just don&#8217;t want to spend any more arguing with people who already paid a license for QTP that it is completely unusable for acceptance tests. As long as we talk about test automation, there is always going to be a push to use whatever horrible contraption testers already use for automation, because it&#8217;s logical to use a single tool. Acceptance testing tools don&#8217;t compete with QTP or things like that, they address a completely different problem. Instead of talking about test automation, let&#8217;s talk about automating a specification without distorting any information &#8211; <b>Literal Automation</b>. Literal automation also avoids the whole scripting horror and using technical libraries directly in test specifications. If it&#8217;s literal, it should look as it looked on the whiteboard, it should not be translated to selenium commands.</p>
<p>After Literal Automation, we get a specification that can be checked against the code automatically, an <b>Executable Specification</b>.</p>
<p>We want to run all the acceptance tests frequently to make sure that the system still does what it is supposed to do (and equally more important to check that the specification still says what the system does). If we call this regression testing, it&#8217;s very hard to explain to testers why they should not go and add five million other test cases to a previously nice, small and focused specification. If we talk about continuous integration, then we get into the trouble of explaining why these tests should not always be end-to-end and run the whole system. On the top of that, for some legacy systems we need to run acceptance tests against a live, deployed environment. Technical integration tests run before deployment. So let&#8217;s not talk about regression testing or continuous integration, let&#8217;s talk about<br />
<b>Continuous Validation</b> (or even <b>Frequent Validation</b>). </p>
<p>The long term pay-off from agile acceptance testing is having a reference on what the system does that is as relevant as the code itself, but much easier to read. That makes development much more efficient long term, facilitates collaboration with business users, leads to an alignment of software design and business models and just makes everyone&#8217;s life much easier. But to do this, the reference really has to be relevant, it has to be maintained, it has to be consistent with itself and with code. we should not have silos of tests that use terms we had three years ago, and those we used a year ago, and so on. Going back and updating tests is a very hard thing to sell to teams who are busy, but going back to update documentation after a big change is expected. So let&#8217;s not talk about folders filled with hundreds of tests, let&#8217;s talk about a <b>Living Documentation</b> system. That makes it much easier to explain why things should be self-explanatory, why business users need access to this as well and why it has to be nicely organised so that things are easy to find.</p>
<p>What do you think about this? Does it make sense? Will it help? Do you have a better name for one of these concepts, that explains it more clearly?</p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2010/08/04/lets-change-the-tune/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Webinar: Effect Maps &#8211; Tomorrow</title>
		<link>http://gojko.net/2010/08/03/webinar-effect-maps-tomorrow/</link>
		<comments>http://gojko.net/2010/08/03/webinar-effect-maps-tomorrow/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 12:28:37 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1978</guid>
		<description><![CDATA[Donna Reed generously offered to organise a follow-up webinar to the one I did recently on effective specifications for agile teams. I&#8217;ll run through an interactive exercise of creating an effect map and then do Q&#038;A on all the topics we did not have time to answer the last time. The webinar is tomorrow. Register [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.agilistapm.com">Donna Reed</a> generously offered to organise a follow-up webinar to the one I did recently on effective specifications for agile teams. I&#8217;ll run through an interactive exercise of creating an effect map and then do Q&#038;A on all the topics we did not have time to answer the last time. </p>
<p>The webinar is tomorrow. <a href="http://www.agilistapm.com/creating_user_story_maps/">Register now</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2010/08/03/webinar-effect-maps-tomorrow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Sine of Death by UI Test Automation</title>
		<link>http://gojko.net/2010/07/29/the-sine-of-death-by-ui-test-automation/</link>
		<comments>http://gojko.net/2010/07/29/the-sine-of-death-by-ui-test-automation/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 22:37:42 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[test automation]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1974</guid>
		<description><![CDATA[I came up with this yesterday while running my agile acceptance testing workshop for a client. Sounds familiar? Read How to implement UI Testing without shooting yourself in the foot]]></description>
			<content:encoded><![CDATA[<p>I came up with this yesterday while running my <a href="http://neuri.co.uk/training/hands-on-agile-acceptance-testing/">agile acceptance testing</a> workshop for a client.</p>
<p><img src="http://gojko.s3.amazonaws.com/the_sine_of_death.png" /></p>
<p>Sounds familiar? Read <a href="http://gojko.net/2010/04/13/how-to-implement-ui-testing-without-shooting-yourself-in-the-foot-2/">How to implement UI Testing without shooting yourself in the foot</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2010/07/29/the-sine-of-death-by-ui-test-automation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Clean Acceptance Tests, August 3rd, central London</title>
		<link>http://gojko.net/2010/07/26/clean-acceptance-tests-august-3rd-central-london/</link>
		<comments>http://gojko.net/2010/07/26/clean-acceptance-tests-august-3rd-central-london/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 19:04:51 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile testing]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1956</guid>
		<description><![CDATA[The next meeting of the UK agile testing user group is on the 3rd of August in central London. Here are the details of the talk: Dan Leong on Clean Acceptance Tests This presentation discusses how our agile team renewed our focus and understanding of our acceptance tests when the team members changed. Our group [...]]]></description>
			<content:encoded><![CDATA[<p>The next meeting of the UK agile testing user group is on the 3rd of August in central London. Here are the details of the talk:</p>
<h2>Dan Leong on Clean Acceptance Tests</h2>
<p>This presentation discusses how our agile team renewed our focus and understanding of our acceptance tests when the team members changed. Our group found some core shared values in the context of acceptance testing which we expressed in the style of the agile manifesto. We then looked at our existing tests to find bad test smells that we could learn from. The whole exercise was a good experience and we encourage you to try something similar in your teams.</p>
<p>Dan Leong is a team lead at Sky Network Services, where they have been using agile/XP techniques for over 4 years to deliver the company&#8217;s broadband and voice provisioning system. He has over 10+ experience working in companies ranging from small .com start-ups to global advertising and media companies. Like the rest of us, he&#8217;s trying to figure out how to do things better.</p>
<p>The event is free to attend, but up front registration is required. <b><a href="http://tinyurl.com/2w3hbhw">Register now</a></b></p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2010/07/26/clean-acceptance-tests-august-3rd-central-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Driving CRUD screens with BDD</title>
		<link>http://gojko.net/2010/07/22/driving-crud-screens-with-bdd/</link>
		<comments>http://gojko.net/2010/07/22/driving-crud-screens-with-bdd/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 09:39:25 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[user stories]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1966</guid>
		<description><![CDATA[There is a discussion on the UK agile testing mailing list on driving the development of an administrative application with BDD. It illustrates a problem that many teams have, so I&#8217;ll post my response here as well. Although we have a long way to go things are going OK at the moment and we feel [...]]]></description>
			<content:encoded><![CDATA[<p>There is a discussion on the <a href='http://groups.google.com/group/agile-testing-uk/browse_thread/thread/ff19a11ebb2c3609'>UK agile testing mailing list</a> on driving the development of an administrative application with BDD. It illustrates a problem that many teams have, so I&#8217;ll post my response here as well.</p>
<blockquote><p>
Although we have a long way to go things are going OK at the moment and we feel it is bringing some real focus to the development process. However a lot of the early stories are largely admin type CRUD &#8211; for<br />
 example functionaility to set up user defined entities and their user defined properties within the system and to provide a mechanism for relating these entities to each other<br />
&#8230;<br />
Does anyone have any advice about how to write tests for this sort of stuff or any experiences in starting out with BDD they can share. </p></blockquote>
<p>CRUD is not a user story, it&#8217;s a screen. It&#8217;s not a business function, but implementation detail. Why do the business users need a particular CRUD screen? (I know it sounds as a stupid rhetorical question, but I&#8217;m serious) What does it allow them to do?</p>
<p>Often you don&#8217;t need to implement an entire CRUD screen and deliver them one by one. Sometimes there is value in releasing two screens that allow you to set a subset of properties but together they bring value. You can then automate these tests through the UI and use the CRUD screens, but that will be hidden in the automation layer. Say for example that we have a risk report that lists users and their card numbers:</p>
<pre>
Scenario: Only regular customers with a specific risk category and 
              card type show up in risk reports
Given the following users
|name| type| card type| card number| risk category|
|Mike |VIP | Mastercard |53111 11111 11111 1111|X|
|Tom |VIP| Visa |41111 11111 11111 1111|Y|
John |Regular |Mastercard |51111 11111 11111 1111|X|
|Steve |Regular |Mastercard |52111 11111 11111 1111|Y|
Then the risk report for Mastercard and category X contains the following data
|John | 51111 11111 11111 1111|
</pre>
<p>This could, for example, invoke the user CRUD to save a user name, type and risk category and a completely different CRUD to save card details for that user. Any other information that would go on that CRUD (addresses, card expiry dates etc) aren&#8217;t part of this story or criteria because they are not important for this particular report.</p>
<p>Start with the outputs, the reports that the system produces, instead of data entry operations. this ensures that you have the data you need to produce the reports at the end, and that you don&#8217;t have superfluous data that nobody really cares about. if you don&#8217;t do that, the resulting data schemas are often overcomplicated and contain many things that simply aren&#8217;t used at the end at all.</p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2010/07/22/driving-crud-screens-with-bdd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
