<?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/"
	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>James King &#187; Implementation</title>
	<atom:link href="http://kingsinsight.com/category/consulting/implementation/feed/" rel="self" type="application/rss+xml" />
	<link>http://kingsinsight.com</link>
	<description>What you do next matters</description>
	<lastBuildDate>Wed, 09 May 2012 19:57:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='kingsinsight.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/92e7dac75b6b159e84a58c64a1a8daf3?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>James King &#187; Implementation</title>
		<link>http://kingsinsight.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://kingsinsight.com/osd.xml" title="James King" />
	<atom:link rel='hub' href='http://kingsinsight.com/?pushpress=hub'/>
		<item>
		<title>Using a moments of truth analysis to assess a team&#8217;s readiness for change</title>
		<link>http://kingsinsight.com/2012/05/10/using-a-moments-of-truth-analysis-to-assess-a-teams-readiness-for-change/</link>
		<comments>http://kingsinsight.com/2012/05/10/using-a-moments-of-truth-analysis-to-assess-a-teams-readiness-for-change/#comments</comments>
		<pubDate>Wed, 09 May 2012 19:39:15 +0000</pubDate>
		<dc:creator>James King</dc:creator>
				<category><![CDATA[Implementation]]></category>
		<category><![CDATA[Investigation]]></category>
		<category><![CDATA[Leading change]]></category>
		<category><![CDATA[moment of truth]]></category>
		<category><![CDATA[user based service design]]></category>

		<guid isPermaLink="false">http://kingsinsight.com/?p=739</guid>
		<description><![CDATA[I have previously blogged about a number of approaches to assessing a team&#8217;s readiness for change, including the 7-S framework and the arenas of change approach, but today I thought I would explain a less well known approach &#8211; the &#8220;moments of truth&#8221; assessment. Actually I made it up so it is not too well [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=739&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have previously blogged about a number of approaches to assessing a team&#8217;s readiness for change, including the <a title="The 7-S framework (+2) for evaluating change readiness" href="http://kingsinsight.com/2011/01/30/the-7-s-framework-2-for-evaluating-change-readiness/">7-S framework </a>and the <a title="The Arenas of Change for assessing change readiness" href="http://kingsinsight.com/2011/01/29/the-arenas-of-change-for-assessing-change-readiness/">arenas of change</a> approach, but today I thought I would explain a less well known approach &#8211; the &#8220;moments of truth&#8221; assessment.</p>
<p>Actually I made it up so it is not too well understood outside of my own loungeroom.  The approach is essentially the same as the 7-S style of assessing the interaction of the multiple systems, skills, stucture and other elements of the team&#8217;s whole ecosystem. But this is a little different because we start by looking at when (and why) the team&#8217;s internal or external customers interact with it.  Then we assess the team&#8217;s ability to support those interactions.</p>
<blockquote>
<p align="center"><em>Moment of truth(n)  a moment when a person or thing is put to the test</em></p>
<p align="center"><em>Collins English Dictionary as quoted at www.thefreedictionary.com</em></p>
</blockquote>
<p>Any interaction with a client is “a moment of truth” for the team. It tests the connection between the team’s value proposition, strategy, implementation, staff, skills and systems and it generates the experience that lasts in the customer’s memory until he or she interacts with the team again.</p>
<p>A “moments of truth analysis” therefore starts by identifying the interactions a team has with its customers, stakeholders and potentially vendors.</p>
<p><span id="more-739"></span></p>
<p style="text-align:center;"><a href="http://kingsinsight.files.wordpress.com/2012/05/moment-of-truth.png"><img class="aligncenter  wp-image-740" title="moment of truth" src="http://kingsinsight.files.wordpress.com/2012/05/moment-of-truth.png?w=864&h=540" alt="" width="864" height="540" /></a></p>
<h3>When do customers interact with the team?</h3>
<p>Starting this analysis is quite simple, although it could potentially be time consuming.</p>
<ol>
<li>Find out what products or services the team provides to customers or stakeholders. This would involve their official products and also complaints, requests for information and other “back-office” approaches.</li>
<li>For each product and service, identify the times and context in which the customer interacts with the team. These are the “moments of truth”.</li>
<li>For each moment of truth, find out why the customer is interacting with the team and what they want to achieve out of the interaction.</li>
</ol>
<h3>What happens when customers interact with the team?</h3>
<p>The next step is to understand how the team interacts with the customer in the moment of truth.</p>
<ul>
<li>Who initiates the contact?</li>
<li>Is it a one off thing or part of an ongoing process?</li>
<li>What happens?</li>
</ul>
<p>Once you know when and how customers interact with the team you can map these into the series of interactions that typically create a “customer journey”.  This is the simply a typical accumulation of interactions the customer has with the team.  For  an internal accounting support team the journey of one of their customers (department heads) might be:</p>
<ul>
<li>Establish budget</li>
<li>Receive monthly report</li>
<li>Query strange amounts</li>
<li>Request ad hoc report</li>
<li>Prepare next year&#8217;s budget</li>
</ul>
<h3>Mapping the interactions from the team’s perspective</h3>
<p>This is the point where you start to analyse the things that may be impacted by any changes you make to the team, as well as anything that could go wrong or be improved.</p>
<p>For each interaction you can ask questions such as:</p>
<ul>
<li>How often does this occur?</li>
<li>How long does it typically take?</li>
<li>Which other interactions will potentially impact this experience?</li>
<li>What is the context in which this interaction is taking place?</li>
<li>What was the last interaction the team had with the customer and typically how long ago  would that interaction have been?</li>
<li>What inputs does the team need to support this interaction?</li>
<li>What comes out of the interaction – from the team’s point of view and the customer’s?</li>
<li>What skills and knowledge does the team member need to deliver this service?</li>
<li>Who in the team is involved?</li>
<li>What guides, manuals or tools does the team member rely on?</li>
<li>What measures or service level agreements does the team have in place?</li>
<li>What might go wrong?
<ul>
<li>What would cause this?</li>
<li>What would happen if it did?</li>
<li>What would happen next?</li>
<li>How might any potential changes make this interaction better or worse? Which of the above aspects of the interaction could potentially be impacted?  Which could negatively impact the potential change?</li>
</ul>
</li>
</ul>
<h3>Assess the supporting processes if relevant</h3>
<p>Once you have mapped out the moments of truth you can also map the internal processes that the team performs in order to be ready for those moments of truth.</p>
<h3>Wrapping up the moment of truth analysis</h3>
<p>The final stage is to consider how each of these elements interacts with the others to support or hinder the team’s ability to provide positive “moments of truth”. This can be combined with the 7-S or arenas of change approaches to understand how the team is currently set up to provide its services and how resilient they will be if and when you implement a particular change.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kingsinsight.wordpress.com/739/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kingsinsight.wordpress.com/739/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kingsinsight.wordpress.com/739/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kingsinsight.wordpress.com/739/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kingsinsight.wordpress.com/739/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kingsinsight.wordpress.com/739/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kingsinsight.wordpress.com/739/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kingsinsight.wordpress.com/739/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kingsinsight.wordpress.com/739/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kingsinsight.wordpress.com/739/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kingsinsight.wordpress.com/739/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kingsinsight.wordpress.com/739/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kingsinsight.wordpress.com/739/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kingsinsight.wordpress.com/739/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=739&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kingsinsight.com/2012/05/10/using-a-moments-of-truth-analysis-to-assess-a-teams-readiness-for-change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a39c3c938b68cc0bd6b65ad98323b456?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamesking42</media:title>
		</media:content>

		<media:content url="http://kingsinsight.files.wordpress.com/2012/05/moment-of-truth.png" medium="image">
			<media:title type="html">moment of truth</media:title>
		</media:content>
	</item>
		<item>
		<title>What if people thought meetings were actually work?</title>
		<link>http://kingsinsight.com/2012/03/26/what-if-people-thought-meetings-were-actually-work/</link>
		<comments>http://kingsinsight.com/2012/03/26/what-if-people-thought-meetings-were-actually-work/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 06:14:42 +0000</pubDate>
		<dc:creator>James King</dc:creator>
				<category><![CDATA[Agile development]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[effective meetings]]></category>
		<category><![CDATA[waste on IT projects]]></category>

		<guid isPermaLink="false">http://kingsinsight.com/?p=693</guid>
		<description><![CDATA[Every retrospective I do on every project seems to include the conclusion that &#8220;we need less meetings, less emails and more communication&#8221;. In fact SCRUM and agile approaches even try to define the bare minimum number of meetings that are needed and only have them (Actually one of my friends claims that they have removed all [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=693&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Every retrospective I do on every project seems to include the conclusion that &#8220;we need less meetings, less emails and more communication&#8221;.</p>
<p>In fact SCRUM and agile approaches even try to define the bare minimum number of meetings that are needed and only have them (Actually one of my friends claims that they have removed all the meetings &#8211; &#8220;In agile we don&#8217;t have meetings, we only have workshops.  Meetings are discussions and Workshops produce something tangible each time&#8221;).</p>
<p>Yet the reality seems to remain that meetings (or workshops, or gatherings, or war councils) often end up getting in the way of doing the real work:</p>
<p style="text-align:center;"><a href="http://kingsinsight.files.wordpress.com/2012/03/meetings.jpg"><img class=" wp-image-694 aligncenter" title="meetings as an alternative to work" src="http://kingsinsight.files.wordpress.com/2012/03/meetings.jpg?w=614&h=461" alt="" width="614" height="461" /></a></p>
<p>So what would you do if you had to look at the return on investment of each meeting?  Would they actually stack up from the point of view of making money for shareholders, making life easier for the crew or improving the experience for our customers?</p>
<p><span id="more-693"></span></p>
<p>I think it would be fairly easy to classify most of the meetings we have as:</p>
<ol>
<li>Adding value &#8211; this meeting makes life better;</li>
<li>Necessary waste &#8211; I wish we didn&#8217;t need it, but we need to do it because we don&#8217;t have a better alternative; and</li>
<li>Complete waste &#8211; I would rather take the free donoughts and eat them at my desk.</li>
</ol>
<p>I also think this is easy to do if you look at which meetings add value or create waste if we use the following structure that I often share with business analysts. Each meeting should have three things in it:</p>
<ol>
<li>The framing of the meeting
<ul>
<li>State the goal or purpose of the meeting</li>
<li>Clearly state what is expected at the close of the meeting (eg minutes, an agreement, an action list etc)</li>
</ul>
</li>
<li>The opening of discussion
<ul>
<li>Creating a list of things to be discussed, each of which is a mini-meeting. In other words we should not just wander randomly through topics as they come to mind (unless that really is the purpose of the meeting).</li>
<li>For each topic or agenda item, we can therefore create the following for it
<ul>
<li>Frame or introduce the goal of the topic and what we expect to get from the conversation</li>
<li>Discuss it</li>
<li>Close the topic by confirming what we found out, agreed or need to do next.</li>
</ul>
</li>
</ul>
</li>
<li>The closing of discussion
<ul>
<li>This could involve agreeing Who does What by When; or</li>
<li>This could include confirming what has been agreed and how it will be communicated (ie What will be communicated When by Who); or</li>
<li>This could include a summary of our analysis &#8211; eg documenting the requirements by Who and When.</li>
</ul>
</li>
</ol>
<p>We all have too many meetings, but if think of meetings as work then we should put them down gently or define how we will get value from them. I am sure your team is already super-double-extra agile, but with my team I sometimes think we need to go back to basics.</p>
<p>So we can&#8217;t do better then I am going to ask my crew from now on to at least agree to only turn up to review their meetings and either</p>
<ol>
<li>FOC them (define the Frame &#8211; Open &#8211; Close for them);</li>
<li>Define them as necessary waste and come up with a plan to either make them really add value or make them unnecessary; or</li>
<li>Define them as waste and eliminate them unless there is good catering (actually &#8211; eliminate them anyway and move the catering to a useful meeting).</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kingsinsight.wordpress.com/693/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kingsinsight.wordpress.com/693/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kingsinsight.wordpress.com/693/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kingsinsight.wordpress.com/693/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kingsinsight.wordpress.com/693/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kingsinsight.wordpress.com/693/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kingsinsight.wordpress.com/693/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kingsinsight.wordpress.com/693/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kingsinsight.wordpress.com/693/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kingsinsight.wordpress.com/693/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kingsinsight.wordpress.com/693/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kingsinsight.wordpress.com/693/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kingsinsight.wordpress.com/693/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kingsinsight.wordpress.com/693/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=693&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kingsinsight.com/2012/03/26/what-if-people-thought-meetings-were-actually-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a39c3c938b68cc0bd6b65ad98323b456?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamesking42</media:title>
		</media:content>

		<media:content url="http://kingsinsight.files.wordpress.com/2012/03/meetings.jpg" medium="image">
			<media:title type="html">meetings as an alternative to work</media:title>
		</media:content>
	</item>
		<item>
		<title>Regression testing days 3 to 7</title>
		<link>http://kingsinsight.com/2012/03/09/regression-testing-days-3-to-7/</link>
		<comments>http://kingsinsight.com/2012/03/09/regression-testing-days-3-to-7/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 23:58:30 +0000</pubDate>
		<dc:creator>James King</dc:creator>
				<category><![CDATA[Agile development]]></category>
		<category><![CDATA[Capability growth]]></category>
		<category><![CDATA[Idea management]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[agile testing]]></category>
		<category><![CDATA[OODA]]></category>
		<category><![CDATA[regression testing]]></category>
		<category><![CDATA[testing knowledge capture]]></category>

		<guid isPermaLink="false">http://kingsinsight.com/?p=678</guid>
		<description><![CDATA[This article is part of a series on making regression testing useful rather than painful. The most recent article was (as you would guess from the title to this one) about day 2 of our regression testing adventure. So far we have been looking at how to do some testing, and then do some basic [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=678&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This article is part of a series on <a title="Scenario testing the cycle of pain for regression testing" href="http://kingsinsight.com/2012/02/03/scenario-testing-the-cycle-of-pain-for-regression-testing/">making regression testing useful </a>rather than painful. The most recent article was (as you would guess from the title to this one) about <a title="Regression testing day 2" href="http://kingsinsight.com/2012/02/12/regression-testing-day-2/">day 2 of our regression testing adventure</a>.</p>
<p>So far we have been looking at how to do some testing, and then do some basic scripting and mapping as we do more testing. In doing so we have (hopefully) been learning more about the system we are building but our main focus is on making sure it is still performing the way we want to.</p>
<p>Now we are going to evolve our testing onto a proper OODA loop.  I have created another article to explain what an OODA loop is, but for our purposes it means this:</p>
<p>How fast and how well can the team move between the following 4 tasks?</p>
<ol>
<li><strong>Observe</strong> the world around them – the way users are operating, the way the system is performing and the way things are coming together.</li>
<li><strong>Orient</strong> themselves or make sense of all that data (interpreting, analysing, integrating and assessing).</li>
<li><strong>Decide</strong> what to do next with all that information.</li>
<li><strong>Act</strong> on their decisions as a cohesive group.</li>
</ol>
<p><a href="http://kingsinsight.files.wordpress.com/2012/03/ooda.jpg"><img class="alignnone size-medium wp-image-680" title="OODA" src="http://kingsinsight.files.wordpress.com/2012/03/ooda.jpg?w=300&h=254" alt="" width="300" height="254" /></a></p>
<p>To do this we need a little lesson in OODA regression testing theory</p>
<h2><span id="more-678"></span>Regression testing is a series of loops not one straight line of work</h2>
<p>With regression testing, most people think it is like a line rather than a loop:</p>
<ol>
<li>Understand the system</li>
<li>Create some scripts and then make a list of them (map them)</li>
<li>Run the tests to break the system</li>
<li>Fix the bugs</li>
</ol>
<p><a href="http://kingsinsight.files.wordpress.com/2012/03/wrong-cycle.jpg"><img class="alignnone size-medium wp-image-681" title="wrong cycle" src="http://kingsinsight.files.wordpress.com/2012/03/wrong-cycle-e1331250759829.jpg?w=300&h=50" alt="" width="300" height="50" /></a></p>
<p>But this misses two key ingredients in our OODA loop – both of which are related observing what happens when we act and then learning from it:</p>
<ul>
<li>By running one set of tests we should be able to learn more about the system so we can test it better next time; and</li>
<li>By running one set of tests we should be able to learn more about the system so we can use that knowledge to update our requirements, create training material and pass what we have learned on  to others.</li>
</ul>
<p>So the real process looks a little messier when you first look at it:</p>
<p><a href="http://kingsinsight.files.wordpress.com/2012/03/regression-testing-ooda1.jpg"><img class="alignnone size-full wp-image-688" title="regression testing ooda" src="http://kingsinsight.files.wordpress.com/2012/03/regression-testing-ooda1.jpg" alt="" width="864" height="540" /></a></p>
<h2>But that looks like a lot of work</h2>
<p>Fortunately it is really what we have been doing in<a title="Regression testing – day 1" href="http://kingsinsight.com/2012/02/08/regression-testing-day/"> day 1</a> and<a title="Regression testing day 2" href="http://kingsinsight.com/2012/02/12/regression-testing-day-2/"> day 2</a>. So for the next couple of days we will simply repeat what we did in <a title="Regression testing day 2" href="http://kingsinsight.com/2012/02/12/regression-testing-day-2/">day 2</a>, and add these questions:</p>
<ul>
<li>Should we improve the way we capture and track bugs?</li>
<li>How do we pass potential new requirements? Who should decide whether to act on these?</li>
<li>How can we improve our test scripts and maps?
<ul>
<li>Should they be more sophisticated?</li>
<li>Should we drop some in favour of more exploratory testing?</li>
</ul>
</li>
<li>How do we pass on what we are learning?</li>
</ul>
<p>Each of these questions relates to one of the Act boxes in my diagram and you will notice that each of them then becomes another OODA loop within the model.</p>
<h2>My suggestions for early improvement</h2>
<p>I think it is a good idea to start writing out the most common or critical test scenarios in <a title="Use cases make for better test scenarios" href="http://kingsinsight.com/2012/02/14/use-cases-make-for-better-testing-scenarios/">a “Use Case Like” format</a>.  This turns out to be a good way to pass on information for training, a good way to automate and a good way to show people what to do when they are testing the ssystem</p>
<p>I also think it is a good idea to at list start collecting a list of questions and known (or expected) answers.  This is often done in the format of an FAQ.</p>
<p>I think it is a good idea to write down the work arounds your are finding. If these never get fixed then you have some warnings to include in the release notes. Of course, they might be fixed later but even so it will be useful to remember them as you continue testing.</p>
<p>Finally, I think you will realise that  your are finding several “trivial bugs” that the team don’t want to fix. Rather than tracking these as defects or “unlikely to do requriements” you could also record them in an FAQ like format so that they become known errors or, in common IT terms “Unexpected features”.</p>
<p>So you can see that I don’t see regression testing as breaking the system. Instead it is the engine that is driving our continual learning (and hopefully improvement) of the system.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kingsinsight.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kingsinsight.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kingsinsight.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kingsinsight.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kingsinsight.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kingsinsight.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kingsinsight.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kingsinsight.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kingsinsight.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kingsinsight.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kingsinsight.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kingsinsight.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kingsinsight.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kingsinsight.wordpress.com/678/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=678&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kingsinsight.com/2012/03/09/regression-testing-days-3-to-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a39c3c938b68cc0bd6b65ad98323b456?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamesking42</media:title>
		</media:content>

		<media:content url="http://kingsinsight.files.wordpress.com/2012/03/ooda.jpg?w=300" medium="image">
			<media:title type="html">OODA</media:title>
		</media:content>

		<media:content url="http://kingsinsight.files.wordpress.com/2012/03/wrong-cycle-e1331250759829.jpg?w=300" medium="image">
			<media:title type="html">wrong cycle</media:title>
		</media:content>

		<media:content url="http://kingsinsight.files.wordpress.com/2012/03/regression-testing-ooda1.jpg" medium="image">
			<media:title type="html">regression testing ooda</media:title>
		</media:content>
	</item>
		<item>
		<title>Stories for production support teams part 3: stories involving vendors</title>
		<link>http://kingsinsight.com/2012/02/14/stories-for-production-support-teams-part-3-stories-involving-vendors/</link>
		<comments>http://kingsinsight.com/2012/02/14/stories-for-production-support-teams-part-3-stories-involving-vendors/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 03:16:09 +0000</pubDate>
		<dc:creator>James King</dc:creator>
				<category><![CDATA[Agile development]]></category>
		<category><![CDATA[Idea management]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[pieces of the puzzle]]></category>
		<category><![CDATA[system analyst]]></category>
		<category><![CDATA[work request]]></category>

		<guid isPermaLink="false">http://kingsinsight.com/?p=644</guid>
		<description><![CDATA[A long time ago I used to do production support as part of my role (I was a Unix administrator/DBA/system analyst). In those days requirements were really easy for me: people would come to my desk and ask for something, or they would email me or maybe even leave a scribbled note on my desk. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=644&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A long time ago I used to do production support as part of my role (I was a Unix administrator/DBA/system analyst).</p>
<p>In those days requirements were really easy for me: people would come to my desk and ask for something, or they would email me or maybe even leave a scribbled note on my desk. There were no standard formats, no formality and (usually) no problems.</p>
<p>But even back then I had to work with vendors and sometimes that was when the trouble started. Some were happy with my “give me a call” approach to requirements, while others required a ticket and some even required a complicated work request form.</p>
<p>Now days, some production support teams are more professional that I was and they actually have real requirements or (if they are agile) stories. And most of them seem to be flooded with vendors.</p>
<p>So, do stories work with vendors?  The obvious answer is YES. For example, if you receive a story in the following format then it should work for you and also for your vendor:</p>
<ul>
<li>As a coffee club member I want to be able to see a list of future coffee appreciation classes so that I can enrol in those that look interesting.</li>
</ul>
<p>But what about complaints and bugs?</p>
<ul>
<li>As a coffee club member I don’t want to have my name spelled incorrectly because it is really annoying me.</li>
</ul>
<p><span id="more-644"></span></p>
<p>I guess that works, but it is not how the user will raise the request.  They are more likely to say “you got my name wrong”.  We would then ask “what should it be” and then just capture the requirement to “for member 1234, please change the surname from Jonnes to Jones”.</p>
<p>That would work OK. But when there are multiple vendors all connecting different pieces of the puzzle then things can unravel surprisingly quickly.</p>
<p>For example, if you want a list of upcoming coffee appreciation classes, but you have outsourced the CMS to Kingcorp international (not a real company) and you have got need to link the classes to your existing database, built by the internal team, then you might end up with:</p>
<ul>
<li> As a coffee club member I want ….</li>
<li>As the CMS, I want the cafelate database to provide me with data in an xml feed so I can send the information needed to the screen so the coffee club member can ….</li>
<li>And so on.</li>
</ul>
<p>But rather than butchering your stories so that you can use them, why not only use them where they are useful.  Here is my starter kit for stories and other formats that work well with multiple vendors and teams.</p>
<p>Each tool is designed to either clarify the value you are trying to create for your customers, or remove the ambiguity involved in what you are asking for or both.</p>
<p><a href="http://kingsinsight.files.wordpress.com/2012/02/stories-with-vendors.jpg"><img class="alignnone size-medium wp-image-645" title="Stories with vendors" src="http://kingsinsight.files.wordpress.com/2012/02/stories-with-vendors.jpg?w=300&h=298" alt="" width="300" height="298" /></a></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="151"><strong>Purpose</strong></td>
<td valign="top" width="151"><strong>Tool</strong></td>
<td valign="top" width="151"><strong>Value to you and your vendor</strong></td>
<td valign="top" width="151"><strong>Not good for</strong></td>
</tr>
<tr>
<td valign="top" width="151">Define the problem you want to solve</td>
<td valign="top" width="151">Problem statement</td>
<td valign="top" width="151">Creates a context for the problem being solved</td>
<td valign="top" width="151">Detailed specs for the vendor to work with</td>
</tr>
<tr>
<td valign="top" width="151">Define how the user will use or benefit from the system</td>
<td valign="top" width="151">User story or use case</td>
<td valign="top" width="151">Let’s the vendor understand what the user really wants</td>
<td valign="top" width="151">Backend systems</td>
</tr>
<tr>
<td valign="top" width="151">Define what each system does</td>
<td valign="top" width="151">Old school functional requirement</td>
<td valign="top" width="151">Clarity about what a specific system should do</td>
<td valign="top" width="151">Sending to vendors without the context from other approaches</td>
</tr>
<tr>
<td valign="top" width="151">Define how you will test it</td>
<td valign="top" width="151">Scenario test (use case)Acceptance tests</td>
<td valign="top" width="151">Tells the vendor what you will test</td>
<td valign="top" width="151">Working with evil vendors who insist that anything you don’t specify   is out of scope. For these vendors I recommend a termination letter.</td>
</tr>
<tr>
<td valign="top" width="151">Getting what you actually want</td>
<td valign="top" width="151">Talking</td>
<td valign="top" width="151">Coming to a common understanding of all the above</td>
<td valign="top" width="151">Vendors and clients with inconsistent tact filters</td>
</tr>
</tbody>
</table>
<h2>For reference, this is how you use each tool:</h2>
<p>Problem statements and focussing questions are contained in this article. They are essentially an overall statement of what you are trying to achieve.</p>
<h3>Use cases and stories</h3>
<p>Use cases are roughly described in <a title="Use cases make for better test scenarios" href="http://kingsinsight.com/2012/02/14/use-cases-make-for-better-testing-scenarios/">this article </a>and you can also google the term to find a lot of information on them.</p>
<p>User stories are all the rage in agile circles. They are essentially a summary what you want, who actually wants it and why. So the standard wording is this</p>
<ul>
<li>As (a type of user) I want (something) So that (the reason or benefit I get).</li>
</ul>
<h3>Functional requirements</h3>
<p>These are statements of what you want a particular system to do. They are described in <a title="A simple product summary to help requirements" href="http://kingsinsight.com/2012/02/06/a-simple-product-summary-to-help-requirements/">this article </a>and might follow this format</p>
<ul>
<li>(when something happens) (the system )shall (do something) (if this condition is true)</li>
</ul>
<p>They work best when complimented by non-functional requirements (the qualities you want like user friendly or reliable). So you might use the FAB format I described in a previous article.</p>
<h3>Acceptance tests</h3>
<p>Acceptance tests actually list the conditions you will test for.  The most common format at the moment seems to be “given- when-then”.</p>
<ul>
<li>Given (an existing thing is true);</li>
<li>When (something happens);</li>
<li>Then (this is what should happen).</li>
</ul>
<h3>Talking</h3>
<p>There are several international standards for talking.  I usually use English with Good Manners, but there are many other standards available.</p>
<p>Talking to your vendor still seems to be the best approach to me, even if complimented and clarified by the other tools above.</p>
<p>The only short-coming that talking has is that it does not work well when “nerds” and “business people” have different tact filters (see here <a href="http://www.mit.edu/~jcb/tact.html">http://www.mit.edu/~jcb/tact.html</a>). This occurs when you are talking to your account manager but you are not letting your techo&#8217;s talk to their techos directly. Problems get solved and solutions get improved whenever you let the people in each team talk directly.</p>
<h3>An example:</h3>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="111">Problem statement</td>
<td valign="top" width="505">How can we provide members of the coffee club with the ability to   book coffee appreciation classes so that they can learn more about fine   coffees (and pay us lots of cash).</td>
</tr>
<tr>
<td valign="top" width="111">Stories</td>
<td valign="top" width="505">As a coffee club member I want to view upcoming classes so I can   choose classes that would interest meAs a coffee club member I want to be able to book for an upcoming class   so I can attend classes in my area</p>
<p>As a barista I want to be able to publish and edit upcoming classes   so that they can be seen by members</td>
</tr>
<tr>
<td valign="top" width="111">Requirement</td>
<td valign="top" width="505">The coffee club database shall store data on upcoming classesThe coffee club database shall store booking details for members who   have booked a class</p>
<p>When the barista creates a course the outsourced CMS will publish the   course on the café’s website for members to view</p>
<p>When a class is full the outsourced CMS will post a label on the class   to identify it as sold out</td>
</tr>
<tr>
<td valign="top" width="111">Acceptance</td>
<td valign="top" width="505">Given a class is full when the member tries to book then the member   will be given an error message saying the class is fullGiven a member is viewing a class on the website, when the members   clicks on the class headline then the member will be taken to the booking   form</p>
<p>Given the member has been flagged as arrogant and annoying when the   member clicks on the class headline then the member will be told “no class   for you “ and will be provided with a link to an anger management class</td>
</tr>
</tbody>
</table>
<h2>So what?</h2>
<p>So that brings me to three quesitons:</p>
<p>Is there a best way to communicate your requirements with vendors on agile projects? Yes &#8211; stories and lots of conversations. Unless you are in different timezones then more elaboration around the testing will help &#8211; detailed use cases, acceptance tests or even old school requirements might help but rely mostly on the story and  conversation.  Unless you know more about your own team than I do, in which case common sense trumps advice from blogs.</p>
<p>So the same answer applies as per projects? Er &#8211; no.  I actually think Prod support teams have a lot more one line requests to fix certain things out of t he blue. This would be fine if people asked for what they needed and production support teams understood what people asked for. But they don&#8217;t, so they should talk to their customers.</p>
<p>But when you deal with a vendor and requests come out of the blue it is worth reminding them of why you want something AND removing ambiguity.  Conversations still win over anything else, but it is often worth using a more structured approach using tools like the ones I explained above in addition to the stories and conversations you are using.</p>
<p>&nbsp;</p>
<p>I hope that is useful. Let me know if it works for your team.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kingsinsight.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kingsinsight.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kingsinsight.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kingsinsight.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kingsinsight.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kingsinsight.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kingsinsight.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kingsinsight.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kingsinsight.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kingsinsight.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kingsinsight.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kingsinsight.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kingsinsight.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kingsinsight.wordpress.com/644/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=644&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kingsinsight.com/2012/02/14/stories-for-production-support-teams-part-3-stories-involving-vendors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a39c3c938b68cc0bd6b65ad98323b456?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamesking42</media:title>
		</media:content>

		<media:content url="http://kingsinsight.files.wordpress.com/2012/02/stories-with-vendors.jpg?w=300" medium="image">
			<media:title type="html">Stories with vendors</media:title>
		</media:content>
	</item>
		<item>
		<title>Use cases make for better test scenarios</title>
		<link>http://kingsinsight.com/2012/02/14/use-cases-make-for-better-testing-scenarios/</link>
		<comments>http://kingsinsight.com/2012/02/14/use-cases-make-for-better-testing-scenarios/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 16:29:51 +0000</pubDate>
		<dc:creator>James King</dc:creator>
				<category><![CDATA[Agile development]]></category>
		<category><![CDATA[Idea management]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[regression test]]></category>
		<category><![CDATA[scenario test]]></category>
		<category><![CDATA[use case]]></category>

		<guid isPermaLink="false">https://kingsinsight.wordpress.com/?p=638</guid>
		<description><![CDATA[I have encountered Use Cases on several occasions, sometimes they seem like a simple tool that can be used to better understand how a system behaves from a users perspective, while at other times people describe them as terrifying monsters that have murdered people and led to the destruction of entire projects. So I am [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=638&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have encountered Use Cases on several occasions, sometimes they seem like a simple tool that can be used to better understand how a system behaves from a users perspective, while at other times people describe them as terrifying monsters that have murdered people and led to the destruction of entire projects. So I am going to recommend only using the good kind.</p>
<p>But what is a use case? It is simply an example of how a system (or business service) could be used by someone.</p>
<p><span id="more-638"></span></p>
<h2>Where do Use Cases come from?</h2>
<p>Use cases were invented by a Swedish guy named Ivar Jacobson, who is really famous in geek circles. I imagine he has his own groupies and he certainly has a big fan base, because he apparently invented sequence diagrams, he was one of the founding creators of UML and, if people had listened to him, he would have made the whole IT industry pretty simple and straightforward. If you google him you will find out that he is still trying to get the IT industry to admit how simple things could be, while the rest of us are still trying make it all sound complicated so we can continue getting lots of cash for doing obvious things.</p>
<p>According to James King history (I haven’t checked my facts too carefully) people were building systems by asking the users what the system should do. But when they built the systems they didn’t work too well because nobody had thought about how a user would actually use them.</p>
<p>So Ivar said to his friends “why don’t we actually ask users how they would use a system”.</p>
<p>But his friends were confused, “how would we do that?”, they asked.</p>
<p>“Let’s just ask them for some examples of how they would use it and then we can get the IT geeks to work out how to build something that does that for them”, explained Ivar, “We will call it ‘Using Examples to Build Stuff’”&#8217;.</p>
<p>Unfortunately for people not living in Sweden, Ivar speaks Swedish and apparently they have a word that means “a case (example) of how something would be applied or used”.  The unfortunate bit is that when Ivar’s simple idea was translated into English, the translator decided that Use Case was the closest thing we have in our language to “a case of how something would be applied or used”. So instead of having “examples” or “ways you could use this” we have are stuck with the slightly less obvious “use case”.</p>
<p>Of course if you just ask for a couple of examples of how people might use stuff, then you will have a lot of holes in your requirements. But Ivar had thought of this.</p>
<h2>Use cases for really simple systems</h2>
<p>For simple things, he suggested listing the users (who he called actors) and listing the examples of stuff they might use the system for (the use cases). He then invented two ways of communicating this.</p>
<p>An obvious approach (called an Actor-goal list) is to simply create a table listing the actors and what they want to achieve:</p>
<table width="400" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="200">Actor</td>
<td valign="top" width="200">Goal</td>
</tr>
<tr>
<td valign="top" width="200">Jenny</td>
<td valign="top" width="200">Add members to the coffee club system</td>
</tr>
<tr>
<td valign="top" width="200">Barista</td>
<td valign="top" width="200">Add members</td>
</tr>
<tr>
<td valign="top" width="200">Member</td>
<td valign="top" width="200">Look up coffee details</td>
</tr>
</tbody>
</table>
<p>For a simple system, this might be all the documentation you do to create a list of test scenarios. But Ivar and his groupies also came up with a diagram to show the same thing. They drew a box representing the system they were building or testing put all the use cases inside the box. Then they drew some stick figures to show the users (actors) and then drew lines to connect the actors to the use cases they might use.</p>
<p>This provides a map of the use cases, or more technically a “Use Case Diagram”:</p>
<p><a href="http://kingsinsight.files.wordpress.com/2012/02/image3.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;margin:5px;" title="image" src="http://kingsinsight.files.wordpress.com/2012/02/image_thumb3.png?w=244&h=224" alt="image" width="244" height="224" border="0" /></a></p>
<h2>Use cases for more complicated things</h2>
<p>Ivar and his groupies, together with other gurus came up with some advice for how to better describe use cases when you want to know more about them. Unfortunately there are now several different international “standard approaches” for doing this, but fortunately they are all pretty similar.</p>
<p>So here is the internationally agreed James King version of a use case when you are using them for scenario testing.</p>
<p>Firstly, we will break the use case into four components</p>
<ol>
<li>The metadata (information we want to know about the use case)</li>
<li>Sample data to use (this is not generally done for use cases, but it might be useful to us)</li>
<li>Instructions &#8211; The happy days scenario (a series of steps to follow when things go well)</li>
<li>More instructions &#8211; Other scenarios (examples of where things go wrong or where people use them differently)</li>
</ol>
<h4><strong>The metadata</strong></h4>
<p>You can add whatever you want here, but these are my suggestions:</p>
<table width="536" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="74">Data</td>
<td valign="top" width="197">Description</td>
<td valign="top" width="263">Sample</td>
</tr>
<tr>
<td valign="top" width="74">Title</td>
<td valign="top" width="197">The name of the use case and possibly a reference number</td>
<td valign="top" width="263">
<p style="text-align:left;">Add new member</p>
</td>
</tr>
<tr>
<td valign="top" width="74">Preconditions</td>
<td valign="top" width="197">What should happen before you start</td>
<td valign="top" width="263">The actor has logged into the system and is on the “membership” page<br />
The actor has a completed form or the potential member is standing there</td>
</tr>
<tr>
<td valign="top" width="74">Trigger</td>
<td valign="top" width="197">What causes the use case to happen</td>
<td valign="top" width="263">The actor decides to enter a new member in the system</td>
</tr>
<tr>
<td valign="top" width="74">Success</td>
<td valign="top" width="197">What should happen if all goes well</td>
<td valign="top" width="263">The member will be active in the system<br />
The system will send the member an email</td>
</tr>
<tr>
<td valign="top" width="74">Minimum guarantee</td>
<td valign="top" width="197">What should happen if the use case fails</td>
<td valign="top" width="263">No data will be stored unless the use case completes<br />
No membership fee will be charged unless the use case completes</td>
</tr>
</tbody>
</table>
<p>You could also add things like &#8220;expected time for the scenario to complete&#8221;, a picture of the screen the user should see or reference documents that the tester can read for more information. It is really up to you.</p>
<h4><strong>Sample data</strong></h4>
<p>If you run the same tests a lot then you might want to record the information you will frequently enter. For example you might record:</p>
<table width="400" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="200">Login</td>
<td valign="top" width="200">Jenny02</td>
</tr>
<tr>
<td valign="top" width="200">Passwd1</td>
<td valign="top" width="200">anything</td>
</tr>
<tr>
<td valign="top" width="200">passwd2</td>
<td valign="top" width="200">Excel3nt</td>
</tr>
<tr>
<td valign="top" width="200">Member name</td>
<td valign="top" width="200">John Smith</td>
</tr>
<tr>
<td valign="top" width="200">Member card</td>
<td valign="top" width="200">Amex card 2233 444 expires 12.12.14</td>
</tr>
</tbody>
</table>
<p>Of course if you are really sophisticated you will have a lot of personas (sample users and members). In that case you would simply list the personas to use,</p>
<h4>Instructions</h4>
<p>This is where you actually write down the steps to follow when running the use case. You could go into a lot of detail if you want others to be able to use the instructions, or you could keep it really simple if you were the only one using the scenarios for testing.</p>
<p>When talking to use case groupies you would say that a use case consists of several scenarios. Each scenario is a different possible outcome for the use case. For example the “happy days” scenario is the one where everything works properly and the actor makes the simplest possible choices.</p>
<p>So if you only document one scenario in the use case (ie one example of how the use case might go) then it should be the happy days scenario:</p>
<table width="524" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="39">Step</td>
<td valign="top" width="227">Instruction</td>
<td valign="top" width="256">Expected result</td>
</tr>
<tr>
<td valign="top" width="39">1</td>
<td valign="top" width="227">Press the “add new guy” button</td>
<td valign="top" width="256">You should see the member creation form</td>
</tr>
<tr>
<td valign="top" width="39">2</td>
<td valign="top" width="227">Enter the name and press tab</td>
<td valign="top" width="256">The name should populate and you go to the address field</td>
</tr>
<tr>
<td valign="top" width="39">3</td>
<td valign="top" width="227">Enter the email address</td>
<td valign="top" width="256">The email address should populate and you go to the notes field</td>
</tr>
<tr>
<td valign="top" width="39">4</td>
<td valign="top" width="227">Press the confirm button</td>
<td valign="top" width="256">The member flag on the top changes to active<br />
An email is sent to the member</td>
</tr>
</tbody>
</table>
<p>The step number allows you to record where things went wrong. The instructions let the tester know what to do and the expected result allows the tester to see if the right thing happened.</p>
<p>In a formal use case you would actually add a step for what the actor does and then a separate step for when the system responds. This makes it easier to identify specific errors or different outcomes. I don’t care about this for my test scenario but if I were working on a system that could kill people (say an autopilot for a plane) then I would definitely use a format more like the following one:</p>
<ol>
<li>The user presses the “add new guy” button</li>
<li>The system displays the member creation form</li>
<li>The user enters the name and presses tab</li>
<li>The system validates that the member does not already exist and takes the user to the email field</li>
<li>Etc</li>
</ol>
<p>Again, I should point out that the amount of detail you add will depend on who will be running the scenario. You might just say “add the member” or you might do really detailed instructions so anyone on the team can follow them.</p>
<p>Of course when I run this scenario I won’t always follow the instructions correctly. In fact I might turn off my machine at step 3 (or at least close the browser). Then I will log in again and try to enter the member again to see what happens.  This is where the tester can use the international standards for <a title="An international standard for being scared?" href="http://kingsinsight.com/2011/11/04/an-international-standard-for-being-scared/">being scared </a>and <a title="An international standard for being stupid? The mistakes users always make" href="http://kingsinsight.com/2012/02/08/an-international-standard-for-being-stupid-the-mistakes-users-always-make/">being stupid</a>.</p>
<p>But the first time I run the scenario I will probably try to follow the instructions and make it work.</p>
<h4>Other instructions</h4>
<p>In addition to the happy days scenario, you might enter some alternative flows or other outcomes.</p>
<p>For example, I might create an alternative to test what happens if Mr Smith already exists in the system. In this case I might start deviate at step 2:</p>
<table width="524" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="39"></td>
<td valign="top" width="227">Existing member outcome</td>
<td valign="top" width="256"></td>
</tr>
<tr>
<td valign="top" width="39">2a</td>
<td valign="top" width="227">The system displays a warning that the member may be a duplicate</td>
<td valign="top" width="256">The display should pop up before you can enter more data</td>
</tr>
<tr>
<td valign="top" width="39">2b</td>
<td valign="top" width="227">Press the “so what – I want to enter this new member anyway” button</td>
<td valign="top" width="256">return to step 3</td>
</tr>
</tbody>
</table>
<p>The number 2a tells me where I came from so I don’t need to write the whole thing out and then the final line should either tell me the use case is ended or that I return to step x and continue.</p>
<h2>Complex scenarios</h2>
<p>Use cases were designed to help build a system and not just to test it. But for regression testing you might decide to create a scenario (or test case) that includes bits from several use cases.  For example, I might create a scenario that allows me to</p>
<ol>
<li>Attempt to login but get the password wrong</li>
<li>Try again and get in</li>
<li>Add two new members</li>
<li>Run the daily membership report</li>
<li>Book one member into our special coffee connoisseur course</li>
<li>Change the booking for the course</li>
<li>Confirm the member got an email on joining the club, one one joining the class and one on the class change.  Confirm the other member only got an email on joining</li>
</ol>
<p>So that’s about it – the idea of use cases is that you create some examples of how a user might use the system.  The use case diagram could be a good map to help you understand which users are involved in which use cases and by documenting the use cases in more detail you are creating a set of instructions for other testers to use.</p>
<p>You might also use this approach to build automated testing or to pass information onto trainers and technical writers.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kingsinsight.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kingsinsight.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kingsinsight.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kingsinsight.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kingsinsight.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kingsinsight.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kingsinsight.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kingsinsight.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kingsinsight.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kingsinsight.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kingsinsight.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kingsinsight.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kingsinsight.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kingsinsight.wordpress.com/638/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=638&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kingsinsight.com/2012/02/14/use-cases-make-for-better-testing-scenarios/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a39c3c938b68cc0bd6b65ad98323b456?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamesking42</media:title>
		</media:content>

		<media:content url="http://kingsinsight.files.wordpress.com/2012/02/image_thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Regression testing day 2</title>
		<link>http://kingsinsight.com/2012/02/12/regression-testing-day-2/</link>
		<comments>http://kingsinsight.com/2012/02/12/regression-testing-day-2/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 11:21:41 +0000</pubDate>
		<dc:creator>James King</dc:creator>
				<category><![CDATA[Agile development]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[manual testing]]></category>
		<category><![CDATA[Regression testing. agile]]></category>

		<guid isPermaLink="false">https://kingsinsight.wordpress.com/?p=632</guid>
		<description><![CDATA[This article probably makes more sense if you have read regression testing day 1. The aim is to give you a possible way of building good regression testing on a project one day at a time, while testing as you go. First thing in the morning – Refresh the context for 20 minutes You probably [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=632&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This article probably makes more sense if you have read <a title="Regression testing – day 1" href="http://kingsinsight.com/2012/02/08/regression-testing-day/">regression testing day 1</a>. The aim is to give you a possible way of building good regression testing on a project one day at a time, while testing as you go.</p>
<p><span id="more-632"></span></p>
<h2>First thing in the morning – Refresh the context for 20 minutes</h2>
<p>You probably finished yesterday with a review of what you learned on day 1. If you didn’t, then do that review now.</p>
<p>Now, before you start, you want to come up with a brief plan for the day:</p>
<ul>
<li>Discuss which scenarios you want to run.
<ul>
<li>Are there some scenarios waiting for bugs to be fixed?</li>
<li>Are there some scenarios that you can rerun with different data?</li>
<li>Are there some that you didn’t get to yesterday?</li>
<li>What new scenarios could you add today?</li>
</ul>
</li>
<li>Discuss and questions you have unanswered from yesterday.</li>
<li>Decide on a mix of exploratory and scenario testing for today. For example you might choose to spend 40% of the time you have available on exploratory testing and 60% on scenario testing.</li>
</ul>
<p>Write the scenarios and questions out on post-it notes or index cards.</p>
<h2>Step two – do some scripting</h2>
<p>Consolidate the scripts you have already done. You might find that you can combine two or more together to make a single scenario. Similarly, you might find that several of the scripts are re-testing the same things.  They might all involve logging in for example, or several of them might involve accessing the same customer details.</p>
<p>See if you can remove 25% of your scripts through consolidating them.</p>
<p>Now, come up with a couple of additional scripts that</p>
<p>Next, think about whether you would like to come up with some standard data to reuse. You might create some of that data now, but you can also create it as you run some of the scenarios.</p>
<p>For example:</p>
<ul>
<li>If one of the scenarios involves creating a customer, then you might record the data as you go and use the same customer when you run other scenarios; or</li>
<li>If you are going to be running the same scenario a number of times, then you might run some reports (or customer statements) when you run it the first time so you don;t have to recreate the data next time.</li>
</ul>
<h2>Step 3 &#8211; improve your “maps”</h2>
<p>Yesterday you created some rough scenarios and used them to do some testing. Hopefully you also set up the basic management report which showed the scenarios you have run and whether they passed or failed.</p>
<p>So the first thing to do is to reset the management report to show that no scenarios have yet been run today. But the table I showed only shows if something has been run, not how often it has been run or how long it has been since we last ran it. So it might be good to split out table in two.</p>
<ul>
<li>Our scenario map from yesterday will evolve into a reference tool containing scenarios, data and things to test.</li>
<li>The daily map will show what is going on today.</li>
</ul>
<h3><strong>New scenario map</strong></h3>
<p>From now on the scenario map will be a list of scenarios, along with the information you want to track to have access to in order to make your testing easier.</p>
<p><a href="http://kingsinsight.files.wordpress.com/2012/02/image2.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;margin:5px;" title="image" src="http://kingsinsight.files.wordpress.com/2012/02/image_thumb2.png?w=244&h=145" alt="image" width="244" height="145" border="0" /></a></p>
<p>This will evolve over time, but for now we can make do with a modified table:</p>
<table width="400" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="80">Scenario</td>
<td valign="top" width="80">Last run</td>
<td valign="top" width="80">Test user</td>
<td valign="top" width="80">Other data</td>
<td valign="top" width="80">Failed</td>
</tr>
<tr>
<td valign="top" width="80">1</td>
<td valign="top" width="80">1 March</td>
<td valign="top" width="80"> Bill</td>
<td valign="top" width="80"></td>
<td valign="top" width="80"></td>
</tr>
<tr>
<td valign="top" width="80">2</td>
<td valign="top" width="80">1 March</td>
<td valign="top" width="80"> Mary</td>
<td valign="top" width="80"></td>
<td valign="top" width="80"></td>
</tr>
<tr>
<td valign="top" width="80">3</td>
<td valign="top" width="80">2 March</td>
<td valign="top" width="80"> Mary</td>
<td valign="top" width="80"></td>
<td valign="top" width="80"></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>From now on, you might not run each scenario each day. So it might be worth recording the date you last ran the scenario.</p>
<p>You might also find it worthwhile listing the user name for each scenario to keep track of the different users that you log in as each time you run a scenario.</p>
<p align="justify">You can retain the passed and failed columns or you might record them on the “test story wall” described below.</p>
<p align="justify">Assuming you list the test users then you might also create a card (or record) for each one, including:</p>
<ol>
<li>
<div align="justify">Test user name</div>
</li>
<li>
<div align="justify">Role type and (if applicable) persona</div>
</li>
<li>
<div align="justify">Login details – name, password</div>
</li>
<li>
<div align="justify">Browser type</div>
</li>
<li>
<div align="justify">Software version</div>
</li>
</ol>
<p align="justify">Other data might include customer details or other information you will enter often enough to make it worth recording.</p>
<h3>New daily map</h3>
<p>The daily map is really just a story wall for tracking the tests you are running and the questions you want answered. It is useful if you are testing on your own, but it really comes into its own if you are testing with a group.</p>
<p>Create the following story wall to track the tests as you run them:</p>
<table width="400" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="80">Coming soon</td>
<td valign="top" width="80">In progress</td>
<td valign="top" width="80">Failed</td>
<td valign="top" width="80">Waiting for retest</td>
<td valign="top" width="80">Passed</td>
</tr>
<tr>
<td valign="top" width="80"></td>
<td valign="top" width="80"></td>
<td valign="top" width="80"></td>
<td valign="top" width="80"></td>
<td valign="top" width="80"></td>
</tr>
</tbody>
</table>
<p>Write each scenario you plan to run on a separate index card and place them in the coming soon column.</p>
<p>When you start on a scenario, place it in the “in progress” column. Or if you want to cut corners, take the card with you while you test.</p>
<ul>
<li>If the scenario passes first time then place the card in the “”passed” column.</li>
<li>If the scenario fails, place a 1 on it and put it in the failed column.  Now record the bugs you found so they can be fixed.</li>
<li>Once the bugs you found in a scenario test have been fixed, move the card to the “waiting for retest” column.
<ul>
<li>If it fails again, put a second 1 on it (to show it failed more than once) and place it back in the failed column.</li>
<li>If it passes then move it to done.</li>
</ul>
</li>
<li>At the end of the day, record the total number of “fails” and the total number of passes and write the totals next to the board,</li>
</ul>
<p>But in regression testing, you will come up with questions as often as you find bugs. So I think it is worth also having a register of questions and decisions. To do this, read the article on “<a title="A risk register for lazy project teams" href="http://kingsinsight.com/2011/06/27/a-risk-register-for-lazy-project-teams/">a risk register for lazy project teams</a>” and use the same format to create a register of questions and decisions.</p>
<p>The format will look like this:</p>
<table width="548" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="546"><strong>Open questions</strong>:: (place index cards here with questions or issues)</td>
</tr>
<tr>
<td valign="top" width="546"><strong>Closed questions</strong>: (Place index cards here when they are resolved)</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table width="550" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="439"><strong>Assumption/decision</strong></td>
<td valign="top" width="109"><strong>Validated</strong></td>
</tr>
<tr>
<td valign="top" width="439">Assumption one</td>
<td valign="top" width="109"></td>
</tr>
<tr>
<td valign="top" width="439">Assumption two</td>
<td valign="top" width="109"></td>
</tr>
<tr>
<td valign="top" width="439">Assumption three</td>
<td valign="top" width="109"></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h2>Go and do some testing</h2>
<p>Finally, of course, you should probably do some testing.</p>
<p>So go and run the scenarios you are planning to run, just like yesterday. And just like yesterday, finish the day with another debrief.</p>
<p>The only differences should be that you have slightly better scenarios and slightly better tracking.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kingsinsight.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kingsinsight.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kingsinsight.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kingsinsight.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kingsinsight.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kingsinsight.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kingsinsight.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kingsinsight.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kingsinsight.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kingsinsight.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kingsinsight.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kingsinsight.wordpress.com/632/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kingsinsight.wordpress.com/632/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kingsinsight.wordpress.com/632/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=632&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kingsinsight.com/2012/02/12/regression-testing-day-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a39c3c938b68cc0bd6b65ad98323b456?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamesking42</media:title>
		</media:content>

		<media:content url="http://kingsinsight.files.wordpress.com/2012/02/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Regression testing &#8211; day 1</title>
		<link>http://kingsinsight.com/2012/02/08/regression-testing-day/</link>
		<comments>http://kingsinsight.com/2012/02/08/regression-testing-day/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 22:55:22 +0000</pubDate>
		<dc:creator>James King</dc:creator>
				<category><![CDATA[Implementation]]></category>
		<category><![CDATA[Agile development]]></category>
		<category><![CDATA[agile testing]]></category>
		<category><![CDATA[regression testing]]></category>
		<category><![CDATA[UAT]]></category>

		<guid isPermaLink="false">https://kingsinsight.wordpress.com/?p=611</guid>
		<description><![CDATA[Regression testing is the easy part of IT development, not the horrible monster  some people think it has to be. But where do you start if you want to do effective regression testing, but you are already busy and don&#8217;t want it to be huge burden? I hope this article and a couple that follow [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=611&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Regression testing is the easy part of IT development, not <a title="Scenario testing the cycle of pain for regression testing" href="http://kingsinsight.com/2012/02/03/scenario-testing-the-cycle-of-pain-for-regression-testing/">the horrible monster  some people think it has to be</a>.</p>
<p>But where do you start if you want to do effective regression testing, but you are already busy and don&#8217;t want it to be huge burden?</p>
<p>I hope this article and a couple that follow will turn out to be a guide to one painless way to get regression testing up and running. Let me know if it helps.</p>
<p><span id="more-611"></span></p>
<h2>Day one &#8211; first thing in the morning</h2>
<p>Start by getting some context before you expend a lot of energy testing what you don’t understand. I have put some tips in this article, but you can also just do the obvious things:</p>
<ul>
<li>Read the <a title="A project charter for lazy teams" href="http://kingsinsight.com/2012/02/06/a-project-charter-for-lazy-teams/">project charter </a>if there is one, otherwise sit down and create one</li>
<li>Sit down and <a title="User stories for production support part 2: PAC" href="http://kingsinsight.com/2012/01/30/user-stories-for-production-support-part-2-pac/">discuss the users </a>of the<a title="A simple product summary to help requirements" href="http://kingsinsight.com/2012/02/06/a-simple-product-summary-to-help-requirements/"> system you are building </a>and the product you are building</li>
<li>Document what you found, even if it is just on the whiteboard or on napkins</li>
</ul>
<p>This can all be done in under one hour and it is worth getting the regression testing team to sit down together to do it. Of course you can feel free to take 2 hours if you want to fully understand what you are testing</p>
<h2>Day one – 20 minutes of scripting</h2>
<p>Create some scenarios that you will use for testing.  This does not mean that you have to fully document well written test scenarios, since that comes later.</p>
<p>The easiest way is to simple use the <a title="User stories for production support part 2: PAC" href="http://kingsinsight.com/2012/01/30/user-stories-for-production-support-part-2-pac/">PAC table </a>you created and come up with some examples of what some users might do.</p>
<p>I am using the example project from <a title="A simple product summary to help requirements" href="http://kingsinsight.com/2012/02/06/a-simple-product-summary-to-help-requirements/">a previous blog </a>where a cafe owner wants to :</p>
<table width="536" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="67">Scenario</td>
<td valign="top" width="71">User</td>
<td valign="top" width="396">Activity and context</td>
</tr>
<tr>
<td valign="top" width="67">1</td>
<td valign="top" width="71">barista</td>
<td valign="top" width="396">Enter new member while the customer is watching over their shoulder</td>
</tr>
<tr>
<td valign="top" width="67">2</td>
<td valign="top" width="71">Jenny</td>
<td valign="top" width="396">check activity from PC browser</td>
</tr>
<tr>
<td valign="top" width="67">3</td>
<td valign="top" width="71">barista</td>
<td valign="top" width="396">Look up a customer record while relaxing at lunch</td>
</tr>
<tr>
<td valign="top" width="67">4</td>
<td valign="top" width="71">barista</td>
<td valign="top" width="396">Check to see if a customer is already a member</td>
</tr>
<tr>
<td valign="top" width="67">5</td>
<td valign="top" width="71">barista</td>
<td valign="top" width="396">Blog about a new type of coffee</td>
</tr>
<tr>
<td valign="top" width="67">6</td>
<td valign="top" width="71">Jenny</td>
<td valign="top" width="396">Send an email to some customers to notify them of an event</td>
</tr>
<tr>
<td valign="top" width="67">7</td>
<td valign="top" width="71">Jenny</td>
<td valign="top" width="396">Correct the details for a member who complained that we had their information all wrong.</td>
</tr>
</tbody>
</table>
<p>This is our initial map for our regression testing. It won’t last long but it gives us a place to start.</p>
<h2>Spend an hour or two doing exploratory testing</h2>
<p>Now that you have some rough scenarios, log into a test version of the system and try to run some tests.</p>
<p>The tests you run will be “exploratory” because you have not created any instructions yet. But for each scenario, don’t just log in and make things work, instead try this:</p>
<ul>
<li>Try to run the scenario successfully from end to end and then record the outcome
<ul>
<li>Write any bugs or “strange things” on a piece of paper or whiteboard</li>
<li>Write down how long it took to run the scenario</li>
</ul>
</li>
<li>Stop and ponder for a moment, Use the international standard for being scared to come up with things that might go wrong. Then try to run the scenario again seeing if it will fail.</li>
<li>As you run the scenario a second or third time, try using the international standard for being stupid to come up with mistakes or “strange things” the users might do at each step during the scenario.</li>
<li>Document your findings again
<ul>
<li>Scenario number</li>
<li>Potential errors or questions I found</li>
<li>Rough steps I followed</li>
</ul>
</li>
</ul>
<p>Go and report the potential errors you found and if they turn out to be errors then record them in whatever bug tracking system the project uses.</p>
<h2>Discuss the context again for 20 minutes</h2>
<p>Sit down with the other people doing regression testing and discuss how things went</p>
<p>Provide the following “management report”:</p>
<table width="261" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="64">Scenario</td>
<td valign="top" width="88">Run today</td>
<td valign="top" width="63">Passed</td>
<td valign="top" width="44">Failed</td>
</tr>
<tr>
<td valign="top" width="64">1</td>
<td valign="top" width="88">Y</td>
<td valign="top" width="63">1</td>
<td valign="top" width="44"></td>
</tr>
<tr>
<td valign="top" width="64">2</td>
<td valign="top" width="88">Y</td>
<td valign="top" width="63"></td>
<td valign="top" width="44">1</td>
</tr>
<tr>
<td valign="top" width="64">3</td>
<td valign="top" width="88">N</td>
<td valign="top" width="63"></td>
<td valign="top" width="44"></td>
</tr>
<tr>
<td valign="top" width="64">4</td>
<td valign="top" width="88">N</td>
<td valign="top" width="63"></td>
<td valign="top" width="44"></td>
</tr>
<tr>
<td valign="top" width="64">5</td>
<td valign="top" width="88">N</td>
<td valign="top" width="63"></td>
<td valign="top" width="44"></td>
</tr>
<tr>
<td valign="top" width="64">6</td>
<td valign="top" width="88">Y</td>
<td valign="top" width="63"></td>
<td valign="top" width="44">1</td>
</tr>
<tr>
<td valign="top" width="64">7</td>
<td valign="top" width="88">N</td>
<td valign="top" width="66"></td>
<td valign="top" width="54"></td>
</tr>
</tbody>
</table>
<p>Tests pass if you found no errors that went into the bug tracking system. They fail if you did record errors. Passing or failing is not good or bad, it just shows which scenarios found something.</p>
<p>Now sit down with the group again and discuss the context your are testing in</p>
<ul>
<li>What led to errors?</li>
<li>What did you learn?</li>
<li>Should you change the PAC or Product statement? Should you change the scenarios you are running.</li>
</ul>
<p>There is more to do tomorrow, but you have already done more thorough regression testing than a lot of teams do. Well done.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kingsinsight.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kingsinsight.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kingsinsight.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kingsinsight.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kingsinsight.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kingsinsight.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kingsinsight.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kingsinsight.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kingsinsight.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kingsinsight.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kingsinsight.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kingsinsight.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kingsinsight.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kingsinsight.wordpress.com/611/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=611&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kingsinsight.com/2012/02/08/regression-testing-day/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a39c3c938b68cc0bd6b65ad98323b456?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamesking42</media:title>
		</media:content>
	</item>
		<item>
		<title>An international standard for being stupid? The mistakes users always make</title>
		<link>http://kingsinsight.com/2012/02/08/an-international-standard-for-being-stupid-the-mistakes-users-always-make/</link>
		<comments>http://kingsinsight.com/2012/02/08/an-international-standard-for-being-stupid-the-mistakes-users-always-make/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 21:41:29 +0000</pubDate>
		<dc:creator>James King</dc:creator>
				<category><![CDATA[Agile development]]></category>
		<category><![CDATA[Idea management]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[human factor analysis]]></category>
		<category><![CDATA[regression testing]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[UAT]]></category>

		<guid isPermaLink="false">https://kingsinsight.wordpress.com/?p=607</guid>
		<description><![CDATA[Before I worked in IT and even knew what testing was, I knew people made mistakes. But I didn’t know there was an international standard you should comply with when you want to make a mistake. Then I worked on a project with a mining company and one of the consultants explained human factor analysis [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=607&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Before I worked in IT and even knew what testing was, I knew people made mistakes. But I didn’t know there was an international standard you should comply with when you want to make a mistake.</p>
<p>Then I worked on a project with a mining company and one of the consultants explained human factor analysis to me in simple terms. He told me that mine sites can be dangerous and part of his job was to “stop people killing themselves when they are stupid”.</p>
<p>I suggested he stop hiring stupid people but he told me that they tried that and it didn’t work. Apparently you can be really intelligent on a mine site 800 days in a row but then be stupid for 10 minutes one day and be in an accident and then be killed.</p>
<blockquote><p>“Luckily we have a standard for being stupid though” he said</p>
<p><span id="more-607"></span></p></blockquote>
<p>I was surprised that he could get people to comply with a standard for making mistakes, but then he showed me “iso90210 (not a real standard) – the standard mistakes you can make when using a machine”.</p>
<ol>
<li>Action omitted</li>
<li>Action too early</li>
<li>Action too late</li>
<li>Action too much/too often</li>
<li>Action too little/not often enough</li>
<li>Action too long</li>
<li>Action too short</li>
<li>Action in wrong direction</li>
<li>Right action on wrong object</li>
<li>Wrong action on right object</li>
<li>Wrong action on wrong object</li>
<li>Information not obtained/transmitted</li>
<li>Wrong information obtained/transmitted</li>
</ol>
<p>It seemed like a long list of obvious things, which is what it turned out to be. I found when I was analysing processes (which I was doing at the time) that many errors could occur in the process when one of the things happened in the list. So I combined this with the “<a title="An international standard for being scared?" href="http://kingsinsight.com/2011/11/04/an-international-standard-for-being-scared/">international standard for being scared</a>” (FMEA) to find I could tear most processes apart and find errors really quickly.</p>
<p>Even if you can’t break the process instantly (which you usually can), you can almost always break it if you:</p>
<ul>
<li>Apply one standard mistake; and</li>
<li>See what happens and then apply a second one rather than simply moving on.</li>
</ul>
<p>This also applies to computer applications. For example</p>
<ul>
<li>The user gets to question 5 and realises they do not have the information they need to complete the form.</li>
<li>The system gives them a polite error message.
<ul>
<li>Rather than completing the form or hitting cancel (the right thing to do) they exit by hitting the “back button” or closing the browser (right action wrong object); or</li>
<li>They hit cancel and nothing happens so they hit it again 3 times (too often) and third time they hit the button the browser decides to reload and process the click on the wrong button (something from the next screen).</li>
</ul>
</li>
</ul>
<p>I find that even though I am not a tester, I can often break applications in <a title="Scenario testing the cycle of pain for regression testing" href="http://kingsinsight.com/2012/02/03/scenario-testing-the-cycle-of-pain-for-regression-testing/">regression testing </a>by assuming my users will comply with the standard for being stupid at least once or twice.</p>
<p>You can take things a lot further if you study &#8220;human factors&#8221; because it turns out that &#8220;human factor analysts&#8221; (I am not sure what they call themselves) have spent a lot of time trying to find common reasons for all kinds of things. For example:</p>
<ul>
<li>Common reasons why people do the wrong thing deliberately (peer pressure, not enough time in the day, rewarded for wrong behaviour etc),</li>
<li>Common reasons people make mistakes (information overload, falling back on how the old system worked, lack of knowledge, lack of caring etc).</li>
</ul>
<p>So there seems to be a whole field of study about how to make mistakes properly. I guess if you are going to do something you may as well do it properly &#8230; and since we make mistakes so often we may as well get really good a making them <img class="wlEmoticon wlEmoticon-smile" style="border-style:none;" src="http://kingsinsight.files.wordpress.com/2012/02/wlemoticon-smile.png" alt="Smile" /></p>
<p>But what is of more use to IT projects where people want to build good systems:</p>
<ul>
<li>If your system could kill people, probably get an expert in safety to test it.</li>
<li>Even if your system won&#8217;t kill people … surely you want to anticipate the most obvious mistakes that users will almost certainly make.  So it follows that you would also want to at least do some simple testing to find out what happens when they do.</li>
</ul>
<p>So I think it is fair to say that any team who want to produce good processes, good IT applications or good products will do some regular testing to see what happens when &#8220;the dumb users&#8221; make the same predictable mistakes we all tend to make.</p>
<p>So I would like assume every developer, BA and tester would do some simple <a title="Making regression testing suck less and yet be more effective – exploratory testing" href="http://kingsinsight.com/2012/01/30/making-regression-testing-suck-less-and-yet-be-more-effective-exploratory-testing/">exploratory testing </a> as they add features and I would assume that every team would do some regular<a title="Scenario testing the cycle of pain for regression testing" href="http://kingsinsight.com/2012/02/03/scenario-testing-the-cycle-of-pain-for-regression-testing/"> regression testing </a>as their system emerges.</p>
<p>But maybe that is the uncharted territory for human factor analysts &#8211; why do IT teams consistently make the same mistake of assuming the users will do exactly what they are meant to, when everybody knows they won&#8217;t?</p>
<p>Why would anyone spend$5m and 6 months of their life on a project and then only test how a user might actually use the system at the  very end of the project when there is no time left to modify the way the system behaves?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kingsinsight.wordpress.com/607/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kingsinsight.wordpress.com/607/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kingsinsight.wordpress.com/607/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kingsinsight.wordpress.com/607/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kingsinsight.wordpress.com/607/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kingsinsight.wordpress.com/607/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kingsinsight.wordpress.com/607/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kingsinsight.wordpress.com/607/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kingsinsight.wordpress.com/607/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kingsinsight.wordpress.com/607/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kingsinsight.wordpress.com/607/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kingsinsight.wordpress.com/607/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kingsinsight.wordpress.com/607/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kingsinsight.wordpress.com/607/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=607&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kingsinsight.com/2012/02/08/an-international-standard-for-being-stupid-the-mistakes-users-always-make/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a39c3c938b68cc0bd6b65ad98323b456?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamesking42</media:title>
		</media:content>

		<media:content url="http://kingsinsight.files.wordpress.com/2012/02/wlemoticon-smile.png" medium="image">
			<media:title type="html">Smile</media:title>
		</media:content>
	</item>
		<item>
		<title>A project charter for lazy teams</title>
		<link>http://kingsinsight.com/2012/02/06/a-project-charter-for-lazy-teams/</link>
		<comments>http://kingsinsight.com/2012/02/06/a-project-charter-for-lazy-teams/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 13:22:38 +0000</pubDate>
		<dc:creator>James King</dc:creator>
				<category><![CDATA[Agile development]]></category>
		<category><![CDATA[Idea management]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[Leading change]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[managing ideas]]></category>
		<category><![CDATA[project charter]]></category>
		<category><![CDATA[project launch]]></category>

		<guid isPermaLink="false">https://kingsinsight.wordpress.com/?p=601</guid>
		<description><![CDATA[I have been creating a couple of blogs on context recently. The idea is that if you know a bit about your users and the product that you are building. Both can take months or years, but I like to think we can even spend an hour or less to understand our project. When you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=601&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have been creating a couple of blogs on context recently. The idea is that if you know a bit about your users and the product that you are building. Both can take months or years, but I like to think we can even spend an hour or less to understand our project.</p>
<p><span id="more-601"></span></p>
<p>When you think about it though, shouldn’t we do a similar thing to define our project purpose when we start the project. I guess the answer is yes, but it could turn into a lot of work. So what we need is an easy, lazy approach.</p>
<p>This is what I think you can do on just about any project.</p>
<ol>
<li>Define the problem you are meant to solve.</li>
<li>Define your scope.</li>
<li>Flavour to taste:
<ol>
<li>Consider <a title="User stories for production support part 2: PAC" href="http://kingsinsight.com/2012/01/30/user-stories-for-production-support-part-2-pac/">PAC</a> to define the users</li>
<li>Consider<a title="A simple product summary to help requirements" href="http://kingsinsight.com/2012/02/06/a-simple-product-summary-to-help-requirements/"> defining your product</a></li>
<li>Consider adding an estimate</li>
<li>Consider listing <a title="An international standard for being scared?" href="http://kingsinsight.com/2011/11/04/an-international-standard-for-being-scared/">risks</a> and other bad stuff</li>
</ol>
</li>
</ol>
<h2>Paragraph one – choose one of these problem statements</h2>
<ul>
<li>Problem statement from the book <a title="Fierce conversations" href="http://www.fierceinc.com/leadership-books">Fierce Conversations by Susan Scott </a>(you should really read this book if you want to be both lazy and successful at the same time):
<ul>
<li>The problem we have is ….</li>
<li>It matters because ….</li>
<li>Ideally what we would like is …</li>
<li>So far we have done …..</li>
<li>Therefore, what we want to achieve next is ……</li>
</ul>
</li>
<li>Focussing question
<ul>
<li>How can [We] provide [Something] to [someone] so they can [do something or get some benefit or deal with some issue]</li>
<li>Eg – how can the IT team provide a database to Jenny so she can run her coffee club. OR how can Jenny provide a coffee club to her customers so they can buy coffee to take home</li>
</ul>
</li>
<li>The old fashioned story/legend format, which is the simplest you can use.
<ul>
<li>Currently [things are like this] but it sucks because [some annoyance] so we will [resolve the issue]</li>
<li>For example Jenny runs a coffee shop and she would like to sell take home coffee to customers so we want to create a coffee club to do this. Or Jenny has set up a coffee club for her customers but she is losing track of all the information she needs to track so we are gong to build her a database.</li>
</ul>
</li>
</ul>
<p>You can find a couple of other problem statements in a previous article.</p>
<h2>Paragraph two – say what is in scope and what is not</h2>
<p>No project ever fully solves a problem from every possible angle. If you build software, maybe you should train people and maintain the software. But even if you maintain the software for 5 years, at some point someone should replace the software with a better solution. But even if your project team agree to come back and replace the software, will they be the ones who pay for the carbon offset to make up for the extra greenhouse gases produced during the project lifecycle.</p>
<p>People generally understand that some things will be in scope and that others will be out of scope. Yet we often make wildly different assumptions about what actually goes into the scope.</p>
<p>So I think it is useful to define the following in at least some detail:</p>
<ul>
<li>This is in scope – deploying a database, maintaining it in production; and</li>
<li>This is out of scope – ongoing training, maintaining the customer data.</li>
</ul>
<p>This is often put into a table with the in-scope stuff on the left and the out-of-scope on the right.</p>
<p>But if you are a vendor or you are delivering to a demanding internal client you might choose to go one step further:</p>
<ul>
<li>The project team will deliver (in scope) – deploying a database</li>
<li>The customer will – provide the team with access to users, supply coffee, provide testing</li>
<li>The following is out of the scope of this project – ongoing training</li>
</ul>
<h2>Paragraph three onwards.</h2>
<ul>
<li>Add constraints or priorities if you want to.  For example it needs to be in production before Friday next week (eek)</li>
<li>Add <a title="User stories for production support part 2: PAC" href="http://kingsinsight.com/2012/01/30/user-stories-for-production-support-part-2-pac/">PAC</a>, <a title="A simple product summary to help requirements" href="http://kingsinsight.com/2012/02/06/a-simple-product-summary-to-help-requirements/">Product statement </a>or <a title="An international standard for being scared?" href="http://kingsinsight.com/2011/11/04/an-international-standard-for-being-scared/">risks</a> if you like</li>
<li>Add an estimate of the effort involved if you want to</li>
<li>Add the name of the sponsor, the provider and others if you really want to push the content.</li>
</ul>
<p>If you want to you can even add<a title="Creating a basic communication plan" href="http://kingsinsight.com/2011/04/22/creating-a-basic-communication-plan/"> a communication plan</a>, a view of wether <a title="Assessing a team’s readiness to adopt agile practices over coffee" href="http://kingsinsight.com/2011/01/31/assessing-a-teams-readiness-to-adopt-agile-practices-over-coffee/">users will actually adopt the change </a>we are implementing or <a title="A test strategy for lazy project teams" href="http://kingsinsight.com/2011/07/18/a-test-strategy-for-lazy-project-teams/">a test strategy</a>, but not all projects will need this much detail at the beginning.</p>
<h2>A simple estimate</h2>
<p>People often hesitate to provide estimates. But you can provide something as simple as this</p>
<p>We are 90% confident that the project will take between X and Y.  We could be more confident if [something]. For example:</p>
<ul>
<li>We are 90% confident the project will take between 50 and 150 years (let’s kill it now);</li>
<li>We are 90% confident the project will take 3 developers between 3 and 5 days (let’s do it)&#8217;; or</li>
<li>We are 90% confident the project will take between 3 weeks and 4 months. Hmm -
<ul>
<li>We can kill it if 3 weeks is too long;</li>
<li>We can get started if 4 months is tolerable and report back as we go. We will be more confident once we install the invergolator and get it running on windows 7; or</li>
<li>We could do more analysis.  This would add one week to the project but when we understand your needs better and review the deployment options for invergolators then we can provide a better estimate.  Let me know what you want us to do.</li>
</ul>
</li>
</ul>
<p>I have often found these estimates are enough to make informed decisions. But if you want to get far better at estimating then you should probably read “How to measure anything”.  That book even teaches you to estimate and understand the value of doing more estimates.  But the lazy approach is just to do what I did above.</p>
<h2>What do you think?</h2>
<p>It seems pretty basic doesn’t it.  So your project should probably have a more detailed description that everyone understands (the stakeholders and the team working on the project). But in practice I have often found a simple summary of the project is enough to make do.</p>
<p>In fact my quote for the day is :</p>
<blockquote><p>Projects where everyone has the same simple understanding of the problem do better than those where some of the team have a really detailed understanding that is different to what the rest of the team understand.</p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kingsinsight.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kingsinsight.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kingsinsight.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kingsinsight.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kingsinsight.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kingsinsight.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kingsinsight.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kingsinsight.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kingsinsight.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kingsinsight.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kingsinsight.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kingsinsight.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kingsinsight.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kingsinsight.wordpress.com/601/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=601&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kingsinsight.com/2012/02/06/a-project-charter-for-lazy-teams/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a39c3c938b68cc0bd6b65ad98323b456?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamesking42</media:title>
		</media:content>
	</item>
		<item>
		<title>A simple product summary to help requirements</title>
		<link>http://kingsinsight.com/2012/02/06/a-simple-product-summary-to-help-requirements/</link>
		<comments>http://kingsinsight.com/2012/02/06/a-simple-product-summary-to-help-requirements/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 13:06:51 +0000</pubDate>
		<dc:creator>James King</dc:creator>
				<category><![CDATA[Agile development]]></category>
		<category><![CDATA[Idea management]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[agile stories]]></category>
		<category><![CDATA[regression testing]]></category>
		<category><![CDATA[requirements]]></category>

		<guid isPermaLink="false">https://kingsinsight.wordpress.com/?p=597</guid>
		<description><![CDATA[I was speaking to a crew who were struggling with regression testing and after interrogating them they finally admitted that a large part of the reason they were struggling was that they did not really understand what they were testing. I was shocked and horrified so I wandered off. Soon after I spoke to some [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=597&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was speaking to a crew who were struggling with regression testing and after interrogating them they finally admitted that a large part of the reason they were struggling was that they did not really understand what they were testing.</p>
<p>I was shocked and horrified so I wandered off.</p>
<p>Soon after I spoke to some business analysts who were struggling with an agile project. They alleged that the agile approach they were using did not allow enough time to capture the requirements properly. But guess what, they broke down under interrogation and admitted that a large part of the problem they were having was that they did not really understand the product they were building.  Apparently the evil agile people had forced them to write stories about the system before they had time to understand it.</p>
<p><span id="more-597"></span></p>
<p>So I started wondering – is their any way you could actually understand a system or product before you built and tested it. This sounds like something you would want to do even if evil agile people want you to go really fast. In fact the faster you need to go in building something the less time you probably have to spend on wasted effort that is not related to what you are building.</p>
<p>I have already described <a title="User stories for production support part 2: PAC" href="http://kingsinsight.com/2012/01/30/user-stories-for-production-support-part-2-pac/">PAC</a> as a simple approach to user analysis but that describes what the users do and not what the system does for them.</p>
<p>So here is an old school approach that won’t take long.</p>
<p>Start by looking at the project charter/mandate and then ask people what the system does. Then do a little exploratory testing if the system already exists.</p>
<p>Now you are ready for a quick one hour workshop (or one hour of sitting in a cafe if you are on your own).</p>
<h2>Step 1 – book a room for an hour or go to a cafe and order a skim milk cappuccino</h2>
<p>If you have some friends who also want to understand the product then bring them along. Otherwise sneak off to a cafe on your own.  You will need a pen and paper and probably enough spare change to pay for you coffee.</p>
<h2>Step 2 – create a one paragraph summary of what you think the product does</h2>
<p>You can write you summary in any format you like, but I like the following approach which is loosely stolen from a book called “<a title="stand back and deliver" href="http://www.accelinnova.com/booklogin.php">Stand back and deliver</a>”. They use a similar approach to describe a team, but I find it works well enough for a product. It is also similar to the cereal box approach described in &#8220;<a title="Amazon link to jim highsmith book" href="http://www.amazon.com/Agile-Project-Management-Creating-Innovative/dp/0321219775">Agile Project Management</a>&#8220;.</p>
<blockquote><p><em><strong>The product provides [something] to [someone] so that they can [do something better]. Without it [someone] would have to [fall back]</strong></em></p></blockquote>
<p>If you are in a workshop setting, have each participant write this without speaking to the others. If you are on your own then I guess you should just write it out. But only allow 15 minutes for this exercise (plus 10 minutes to share and argue about the answers if in a workshop). You have a lot to do and you want to have time to drink our cappuccino.</p>
<p><strong>Example</strong></p>
<p>For example, lets say that Jenny owns the coffee shop you are sitting in. She wants to set up a new “wine and coffee” club so that people can learn more about their favourite beverages, order premium beverages to consume on site and even order bulk purchases for home.</p>
<p>Jenny decides that she wants to set up a new database system to keep track of the members of the club and if she can get the budget she will also add a web page with a blog and a social community for club members.</p>
<p>What does Jenny’s new database do and who is it for?  She could build it for the members or for herself … does it matter?</p>
<p>Jenny comes up with the following summary:</p>
<blockquote><p>The coffee club database keeps track of coffee club membership information so that we can manage the coffee club. Without it we would need to have a manual system in place or forget the whole coffee club idea.</p></blockquote>
<h2>Optional step 2a – add some old school requirements (3-5)</h2>
<p>With stories being all the rage these days, people sometimes often talk about the dark ages when we relied on requirements documents. But hidden in all those documents we could sometimes find some really clear and concise requirements that really did help us to build what people wanted.</p>
<p>First we used to list some functional requirements (what the system is meant to do) and then if you want to make good products you add some quality statements or “non-functional” requirements to clarify the style, performance and behaviour you want the system to have.</p>
<p>Here is my favourite format for functional requirements:</p>
<blockquote><p><strong><em>The [system or module] will [do something]; </em></strong></p></blockquote>
<p>Or you can go all out and add two more two optional sections:</p>
<blockquote><p><strong><em>When [something] [the module] will [do something] if [some condition]</em></strong></p></blockquote>
<p>You can write millions of these one line requirements, but for the sake of understanding what the new product does you only really need about 3 – 5 lines. More than this will often cause people to start simply agreeing with them. Only listing the top 3 requirements will often cause people to have to think about what they mean.</p>
<p>Similarly, you can spend all day on this, but I would only allow 15 minutes, plus 10 minutes to share if you are in a workshop. Even 5 minutes might be enough.</p>
<p>So let’s see what Jenny came up with.</p>
<blockquote><p>The coffee tracking system will store data on members of the coffee club</p>
<p>The coffee tracking system will store data on the coffees we have available and the promotions we are running at the moment with respect to those coffees</p>
<p>The coffee tracking database will store a history of promotions we have run and purchases users have made where privacy legislation and PCI compliance allow us to do so</p>
<p>The web page will provide static data on premium coffee and wine varieties and a blog for publishing regular coffee related news</p>
<p>When members join the online club the web page will provide access to a chat room where they can share coffee related views if the member has a valid login</p></blockquote>
<p>Jenny has more work to do in order to fully scope and build the system.  But she now has a one page description that she can use to check whether she and her IT vendor (Charles who works for free coffees) understand the system.</p>
<h2>Optional step 2b – add a quality statement or measure</h2>
<p>Even if a system does what we want, it might not do it the way we want it.  For example</p>
<blockquote><p>When we get home, my flatmate will cook dinner if I do the dishes after dinner</p></blockquote>
<p>This sounds good – but I have had some flatmates who are great cooks and some who can make toast and coffee taste terrible.</p>
<p>So it is a good idea to define how you will know if the new system is good or not. Here is one (not too complicated approach):</p>
<blockquote><p><strong><em>The stakeholders will think [system or module] is great if [something)</em></strong></p>
<p><strong><em>The stakeholders will be really upset if [system or module does/does not … ] or [something happens]</em></strong></p></blockquote>
<p>Jenny might come up with:</p>
<blockquote><p>I will be really annoyed if the system is hard for me and the barista to use</p>
<p>Customers will be upset if we leak their personal data or use it to spam them</p>
<p>I will be really happy if the system can run on my new galaxy tab as well as my netbook</p></blockquote>
<p>Of course you are allowed to do better. A lot of people use iso9126 (a standard for software quality) to list the non-functional things the system should do (be reliable, be easy to learn etc). I often use FMEA (a standard way to be scared) or FAB (a sales technique I use for non-functional stuff).</p>
<h2>Step 4 – Go and find out that you are wrong</h2>
<p>You would think that it would be hard to get a one paragraph description of a system wrong.  But on almost every project I have tried this on I have found that people disagree on it.</p>
<p>So the final step is to share this paragraph with the project sponsor, the product owner or the project owner. They will correct your understanding and often surprise you.</p>
<p>If you have this simple summary, I can almost guarantee you will be able to do a lot of things much more easily – requirements are easier and so too is regression testing for example.</p>
<p>The only downside is that it can make it harder for developers and product owners who want to build without having to think about what they are doing. And of course you might need to spend up to an hour in a coffee shop to do the hard part of the work.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kingsinsight.wordpress.com/597/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kingsinsight.wordpress.com/597/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kingsinsight.wordpress.com/597/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kingsinsight.wordpress.com/597/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kingsinsight.wordpress.com/597/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kingsinsight.wordpress.com/597/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kingsinsight.wordpress.com/597/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kingsinsight.wordpress.com/597/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kingsinsight.wordpress.com/597/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kingsinsight.wordpress.com/597/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kingsinsight.wordpress.com/597/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kingsinsight.wordpress.com/597/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kingsinsight.wordpress.com/597/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kingsinsight.wordpress.com/597/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kingsinsight.com&#038;blog=9272381&#038;post=597&#038;subd=kingsinsight&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kingsinsight.com/2012/02/06/a-simple-product-summary-to-help-requirements/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a39c3c938b68cc0bd6b65ad98323b456?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jamesking42</media:title>
		</media:content>
	</item>
	</channel>
</rss>
