<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Better Testing &#187; teamwork</title>
	<atom:link href="http://www.bettertesting.co.uk/content/?feed=rss2&#038;tag=teamwork" rel="self" type="application/rss+xml" />
	<link>https://www.bettertesting.co.uk/content</link>
	<description>Insights, thoughts &#38; ideas</description>
	<lastBuildDate>Tue, 20 Oct 2020 10:30:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Essential mind mapping: Rapid test design.</title>
		<link>https://www.bettertesting.co.uk/content/?p=1438</link>
		<comments>https://www.bettertesting.co.uk/content/?p=1438#comments</comments>
		<pubDate>Mon, 07 Nov 2011 23:50:57 +0000</pubDate>
		<dc:creator>Darren McMillan</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Mind Mapping]]></category>
		<category><![CDATA[Pro Active Testing]]></category>
		<category><![CDATA[Techniques]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[proactive testing]]></category>
		<category><![CDATA[teamwork]]></category>
		<category><![CDATA[techniques]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.bettertesting.co.uk/content/?p=1438</guid>
		<description><![CDATA[Overcoming the limitations of traditional test design Test design is often a very time consuming process when it need not be.  People are often weighed further down by tools such...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h3>Overcoming the limitations of traditional test design</h3>
<p>Test design is often a very time consuming process when it need not be.  People are often weighed further down by tools such as <em>jack of all trades</em>, <em>master of none</em> test management systems which dictate that tests are written in a less than optimal format, or introduce additional frustrations to those that try to use them.   External pressures outwith the team may see them required to produce sufficient quantities of tests in relation to features or requirements being developed.  Problematic, this certainly is.   When it seems everything is conspiring to make what should be a very creative experience, regimented and structured, then it is time to step back and think of alternative options.</p>
<p>Mind mapping helps reduce the cost of test design significantly by visualizing the item being designed and providing a holistic view point to develop ideas rapidly.   Essentially what this really means is that the creative side of our brains is much more engaged whilst developing ideas in a visual format.   Additionally by providing a birds eye view of the elements under test, ideas will spring to mind which may have not been consider in a linear thought process associated with writing tests in a document, or test management system.</p>
<p>Obviously this is not a straight forward technique that will work for everyone, so in the following series of posts I would like to introduce approaches to test case design using mind maps, and introduce considerations to make your experience with the concept more beneficial and powerful.</p>
<h3>Test Conditions Vs Test Ideas</h3>
<p>We will start off simple and look at the idea of test conditions Vs test ideas.  Let&#8217;s explain each briefly to remove any uncertainty behind them.   A test condition is a check that states based upon our knowledge of the item under test, we expect something to occur.  An example of a test condition might be:</p>
<p style="padding-left: 30px;"><em>“The login functionality should be easily extensible, so that in the future, should we want to add in an additional field such as a user pin, we could do this easily by extending the capabilities of the login API.”</em></p>
<p>Now if we were to take such an extensive approach for everything we thought of, the process of designing tests would become very long.</p>
<p>Test ideas on the other hand essentially allow you to note your thoughts down in a rapid but less extensive format.  Let&#8217;s look at the previous example for a test condition and switch it to a test idea:</p>
<p style="padding-left: 30px;"><em>“Extensibility &gt; Login &gt; Additional fields &gt; e.g. user pin”</em></p>
<p>Now this is certainly less readable, and may prove more problematic for others to understand than a test condition, but it can greatly reduce the time it takes to design your initial tests.   You can also see how the format of test ideas blend well to mind mapping, which benefits from quick sharp notes, as opposed to longer sentences.</p>
<p>Additionally, consider a persons level of understanding of a type of testing.   It is much more difficult to write test conditions for something which we don&#8217;t have a full understanding of yet, but in a test idea format, we could cover this more quickly without going into too much detail.  Take for example, encryption used to secure credentials for a login process.   There are many elements to consider here, such as the type and strength of encryption used.  Has it been implemented correctly?  The distribution of keys and countless others concerns which go beyond my experience.</p>
<div class="cvauto">
In a test idea format, we could simply list our knowledge in a short, quick format:</p>
<ul>
<li>Security
<ul>
<li>Encryption
<ul>
<li>Type
<ul>
<li>Strong
<ul>
<li>Implemented correctly</li>
<li>Implemented incorrectly
<ul>
<li>Becomes weak</li>
</ul>
</li>
</ul>
</li>
<li>Weak
<ul>
<li>Improve encryption method</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Key distribution</li>
<li>Others?</li>
</ul>
</li>
</ul>
<p>Or better still in a mind map format:</p>
<p style="text-align: center;"><a href="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/11/login-encryption.png"><img style="margin-bottom: 4px;" src="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/11/login-encryption.png" alt="An example mind map, showing how the encryption test ideas could be formatted." width="620" height="220" /><br />
</a><span style="font-size: x-small;">An example mind map created using XMind, showing how the encryption test ideas could be formatted, if presented in a mind map.</span></p>
<h4>So when should we use one or the other?</h4>
<p>I tend to base my decision upon the cost developing the tests Vs who will be executing them.   When you consider the person executing the tests, a developer would benefit a lot more from a test condition, than would another tester who already has a trained exploratory mind set; or at least we would hope so.</p>
<p><strong>Proactive use of conditions</strong></p>
<p>From a proactive viewpoint, one of the techniques I had used in the past was to introduce mind maps to take a holistic approach to test design.  You can read more about that in my post on <a href="http://www.bettertesting.co.uk/content/?p=253" target="_blank">lean test case design</a>.   If you look at the example picture below taken from that approach, you can see that if we are mapping out a holistic view of the system under test, then test conditions become very useful.  Indeed, if the intent is to pass these on to developers as acceptance checks for their work, prior to handing it over to be properly tested, then the time taken to develop these becomes much more meaningful.   If we simply wish to hand them over to another tester, then this extensive conditional approach may limit that testers potential at uncovering new areas of interest, or additional concerns that test ideas would help promote.</p>
<p style="text-align: center;"><a href="http://bettertesting.co.uk/content/uploads/leantc/mindmapconditions.png"><img style="margin-bottom: 4px;" src="http://bettertesting.co.uk/content/uploads/leantc/mindmapconditions.png" alt="An example mind map, showing how test conditions can be designed while maintaining a holistic view of the system under test." width="620" height="500" /><br />
</a><span style="font-size: x-small;">An example mind map, showing how test conditions can be designed while maintaining a holistic view of the system under test..</span></p>
<p>My personal view on this, is that we should only ever go to the extent of writing extensive conditions if we plan on taking a proactive approach to testing, one that sees developers tasked with the execution of these test conditions in the form of acceptance checks against a piece of work they have completed, which they then plan to handover to be tested.   This raises developers awareness of areas of concern, and the thought process of how a tester would think, which over time will see them become more familiar with a testers mindset, and prevent in future<em> at least</em> the low hanging fruit testers would often find.</p>
<div>
<p class="main-caption" title="reference">If you would like more information on Proactive Testing and how it can help your team raise awareness, then feel free to <a href="http://www.bettertesting.co.uk/content/?p=123" target="_blank">read my post</a> on the subject.  I have planned a 101 style article on the subject in the future which should help introduce several fresh ideas on the topic.</p>
</div>
<p><strong>Test ideas</strong></p>
<p>Test ideas on the other hand, allow rapid development when designing what to test.   At Maidsafe, I used test ideas as opposed to test conditions for all test design, as this allowed me to work out what I <em>should test</em> and get feedback from others <em>quickly</em>, which would help pinpoint any gaps.</p>
<p>The example below was for the Pro version of our sister company Sigmoid&#8217;s product.  You&#8217;ll need to click on the image and zoom in to see it in more detail.  Essential this product created a virtual drive, much like Dropbox, only on top of a distributed peer to peer network (no servers).  It was also unbelievably secure.</p>
<p style="text-align: center;"><a href="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/11/SigPro-Acceptance-Tests1.png"><img style="margin-bottom: 4px;" src="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/11/SigPro-Acceptance-Tests1.png" alt="An image, displaying several test ideas generated to determine the extent of acceptance tests to be executed of Sigmoid Pro's product." width="620" height="600" /><br />
</a><span style="font-size: x-small;">Test ideas generated to determine the extent of acceptance tests to be executed for Sigmoid Pro&#8217;s product.</span></p>
<p>You can see that for such a complex product you can still rapidly generate test ideas with varying levels of detail.  In my example, the things I have more knowledge in, have ideas broken down further.   While an idea such as  “Distributed denial of service attack” on the products peer to peer network, comes with some knowledge in my head about how I would have planned to execute the attack, but no clear steps or details.  Yet this is fine, because anyone working on the product that reads this item, will know exactly what I mean.   Better still, they might have their own ideas on how to approach this test idea, and upon discussing them, we may form a much better approach to execute it.  If I had simply listed all my thoughts on this in a conditional format, then the intended audience may not have digested the information fully, or worse still become biased towards it and not provide their own thoughts.</p>
<h3>Techniques to improve your mapping experience</h3>
<p>Not everyone has the ability to sit down with a mind map and rattle off countless ideas, one after the other.  Luckily this is not a unique ability, and is one that can be easily learned, or improved upon using simple techniques.</p>
<p>Let&#8217;s look at some of these techniques in a little more detail:</p>
<h4><strong>Technique 1:  The mental model.</strong></h4>
<p>If you are unfamiliar with the concept of testing models then check out Michael Bolton&#8217;s excellent <a href="http://www.developsense.com/articles/2005-10-ElementalModels.pdf" target="_blank">Elemental Models</a>.   Essentially a mental model, is a model of considerations that you would apply when testing a system, product, or feature.  These considerations might simply be types of testing, key risk areas, hardware or staff resource concerns.</p>
<p>Everyone over time builds up their own mental models when testing systems.  Mine often consists of a series of testing types that I would consider for all applications, depending upon the context.   Over the years from continually using it, and mind mapping ideas it has increased in size and as a result become more useful to me.</p>
<p>An example of my high level mental model might be as follows:</p>
<p style="text-align: center;"><a href="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/11/MentalModel.png"><img style="margin-bottom: 4px;" src="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/11/MentalModel.png" alt="An image, displaying a mind map example of my mental model." width="620" height="450" /><br />
</a><span style="font-size: x-small;">A mind map example of my high level mental model, which helps me rapidly generate ideas.</span></p>
<p>Again this is highly dependent on the context and may see items drop, or new ones be included.  The most important benefit to be gained from developing your own mental model, is the ability it provides in rapidly generating ideas based upon it.</p>
<p>The more you practice mind mapping using models, the more extensive your maps and ideas will become.  This is because the brains ability to processes and recall visuals is far greater than that of a written document.  This combined with the fact that our thoughts (although in the visual format of a map) are being constantly interacted with, developed, and extended, therefore further improving our ability to generate ideas, and lots of them!</p>
<h4>Technique 2: Add a splash of colour</h4>
<p>Probably more of a tip than a technique, but a very important one.  When I first started mind mapping, I was hooked with the way it freed up my mind to do the important work, instead of being hindered by my brains ability to link things together and make sense of it all.  I am always keen to understand fully why things work well, and additional steps I can take to improve my experience.  For mind mapping, adding colour to your maps is one very important aspect which will mentally allow your brain to group, focus and defocus on specific aspects of your maps.</p>
<p>Obviously with hand written mind maps this is easy, we simply choose a different colour of pen.  For tools, applications like <a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page" target="_blank">FreeMind</a> do it automatically.  <a href="http://www.xmind.net/" target="_blank">Xmind</a>, my tool of choice, for some reason has this option switched off by default.  On the image below I demonstrate how to enable this:</p>
<p style="text-align: center;"><a href="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/11/xmind-colour.png"><img style="margin-bottom: 4px;" src="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/11/xmind-colour.png" alt="An image, showing how to add branch colouring on XMind." width="620" height="370" /><br />
</a><span style="font-size: x-small;">An example image, of how to enable branch colouring on Xmind.</span></p>
<p>One issue with using a tool for this, is that you have to be very careful about your top level map nodes, as everything under that node (branch) will now become the same colour.  Visually this might not matter, but mentally your mind will group this as a distinct association.  So holistic idea generation might suffer if you do not give some careful consideration to your top level nodes.  I guess this makes the use of colour just as detrimental to idea generation as it is beneficial, if used incorrectly.</p>
<h4>Technique 3: Brainstorming.</h4>
<p>Mind mapping is a highly cognitive activity, which engages all areas of memory rapidly by linking distinct aspects together.  Maps help organize knowledge and structure it in a meaningful format, which benefits learning.  As such the more we practice it the better we become, and the more useful output we produce.  This is true of anything which is practiced, but the key difference here is the visual organisation and structure, which promotes our memories ability to recall key events, in turn allowing us to brainstorm more rapidly.</p>
<p>In order to get the full benefit from a brainstorming session, you should make sure that before you begin mind mapping, you have at least a full 15-20 minutes uninterrupted.  This is because initial ideas will come rapidly.  Distractions will pull you away from a lateral thinking flow of ideas, back into a linear thinking (trying to make sense of it all) mindset.  This is highly detrimental to producing good ideas whilst mind mapping.  In fact, the minute you begin to slow pace, and ideas begin to be noted down less regularly, you&#8217;ve already begun to slip into a linear thinking mind set.</p>
<p>Brainstorm rapidly.  When the ideas stop flowing, take a break.  Return and recall what you have done so far, and more ideas will follow, although at a much slower pace, as you&#8217;ve already lost your lateral thinking mindset, and now you are much more focused on linking thoughts together and filling in gaps.</p>
<p>An excellent tip to improve your brainstorming abilities, and to prevent you slipping into a linear mindset, is to practice noting ideas down as one or two words maximum.  The more you write on a node, the harder it is to process when recalling it, and the more inclined you are to think too much over it.  Both obviously have a negative impact on lateral thinking, so practice hard at keeping mapped thoughts to one or two words.  It really is tough at first, but once you master it, you&#8217;ll benefit greatly.</p>
<h4>Technique 4: External resources.</h4>
<p>When you&#8217;ve exhausted all your ideas, stop and consider how you could improve it further.  Feedback from others is obviously a good starting point, but before you do this there has been some excellent work already done by others that you can make use of.</p>
<p>The guys over at <a href="http://thetesteye.com/blog/" target="_blank">The Test Eye</a> came up with an excellent resource to use, to promote additional ideas in your mind maps called the <a href="http://thetesteye.com/blog/2010/11/software-quality-characteristics-1-0/" target="_blank">Software Quality Characteristics v1.0</a>.  This truly is an incredible resource to make use of, which will help you pin point gaps and areas of concern that you hadn&#8217;t even considered.</p>
<p>Michael Bolton also came up with a series of useful <a href="http://www.developsense.com/blog/2010/11/context-free-questions-for-testing/" target="_blank">context free questions</a> which I find very useful for considering other aspects I might have been biased towards while developing my ideas.</p>
<p>Taking tools away altogether and mind mapping with a group of people over a whiteboard can be highly beneficial as well.  This of course needs a very good facilitator who can focus the group and prevent the conversation straying too much from the task at hand.</p>
<p>Also highly worth considering, is to develop your own list of <a href="http://www.bettertesting.co.uk/content/?p=1204" target="_blank">lightweight personas</a> for reference to while developing your map.  These can be very useful prompts to defocus your thoughts and remove invalid assumptions you had created.</p>
<h3>Wrapup</h3>
<p>In this post we looked at the limitations of traditional test design and how mind mapping can help overcome these.  We went over using mind maps for generating test conditions and test ideas, and when one or the other should be used.  We discussed several techniques and tips which will help improve you mind mapping experience and skills.  There is still lots more to cover, which I hope to address over the next two posts in this series.</p>
<p>Thanks for reading.</p></div>
<div class="shr-publisher-1438"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>https://www.bettertesting.co.uk/content/?feed=rss2&amp;p=1438</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Tales from the trenches: Lean requirements gathering.</title>
		<link>https://www.bettertesting.co.uk/content/?p=1260</link>
		<comments>https://www.bettertesting.co.uk/content/?p=1260#comments</comments>
		<pubDate>Mon, 25 Jul 2011 06:18:31 +0000</pubDate>
		<dc:creator>Darren McMillan</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Mind Mapping]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Techniques]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[mnemonic]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[teamwork]]></category>
		<category><![CDATA[techniques]]></category>

		<guid isPermaLink="false">http://www.bettertesting.co.uk/content/?p=1260</guid>
		<description><![CDATA[Summary In the following post I go over a lean form of requirements gathering and planning that I did with my new team at Maidsafe.  I provide examples, and tips...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h3>Summary</h3>
<p>In the following post I go over a lean form of requirements gathering and planning that I did with my new team at <a href="http://www.maidsafe.net/" target="_blank">Maidsafe</a>.  I provide examples, and tips for those who might find themselves in similar situations.  I finish up by identifying the key lessons we can learn from this as testers.</p>
<h3><strong>The problem with visions</strong></h3>
<p>As most readers know I recently switched jobs to go work for some crazy  company on the west coast of Scotland, who’d planned to change the world  by bringing back a little thing called freedom, or at least in its  online sense.  Most  of my time during the first couple of months at MaidSafe had been  consumed with other things.  The biggest other thing I got the pleasure  of doing was a scoping exercise, for two of our new products being  developed for our sister company <a href="http://www.sigmoidsolutions.com/" target="_blank">Sigmoid Solutions</a>.   Now having spent so many years at the other end of scoping  exercises looking for gaps, flaws, risks, and even identifying new  requirements, this for me was a very fun experience, and it gave me a  real chance to make use of the testing skills I’d developed over the  years.</p>
<p>I  guess it was my own fault that I got side tracked from testing to write  up requirements for two of our current projects.  You see, I came in  with a fresh pair of eyes and realised that the team had been developing  from a vision; a great one at that, but still a vision.  For me a  vision is essentially someones dream, or an idea which they know roughly  how it should end up, but not the exact steps to get there.  As work  begins on a vision, the steps become more apparent, and evolve over  time.</p>
<p>The  problem for me when working with visions is that they&#8217;re large fuzzy  targets somewhere far in the distance that people are aiming for.  The  process of actually reaching that target can be pro-longed by not having  clearly scoped out what is required to achieve these goals.  More often  than not, teams will seek perfection whilst trying to meet these  them, adding in nice to haves that aren’t really essential for the  business, or at least for the current context.  Feedback  loops suffer, and god forbid anyone asks how much longer it’ll be  before something is in a releasable state!  After all we’ll only be  learning what’s required as we go, right?</p>
<p>Well  that’s my problem with visions, and don’t get me wrong, they actually  can work initially for small close knit teams, who can easily  communicate and develop initial visions rapidly.  That’s how MaidSafe  begun, a team of three people developing a radical idea for the  first couple of years, and it worked!  They got their initial concepts coded,  and certainly for them in the first couple of years, working from a vision in such a small team had paid off.</p>
<p>Teams  grow, and as more people become involved things inevitable change.  That small sharp communication ring between three people suddenly becomes unmanageable.  Pockets of unique knowledge begin to form in lots of small clusters throughout the team.  The business side begins  to ask difficult questions on current progress, pilot dates, and how much more needs done.  No one person can tell the whole story anymore.  Teams grow, and processes need to adapt to manage that growth.</p>
<h3>Creating a manageable process</h3>
<p>So  I highlighted the issue of working from a vision to the team and drew  up on a whiteboard a three tier hierarchy of what I thought we should  be doing.</p>
<ol>
<li>Vision &#8211; (Customer and stakeholders needs)</li>
<li>High level requirements &#8211; (Business requirements document / scope mind map)</li>
<li>Technical breakdown &#8211; (User stories)</li>
</ol>
<p>A simple model that gets the objective across, but still allows room for stakeholders to have their visions.   We simply break these visions down now, into something which is much more manageable.</p>
<p>Now  the problem a lot of companies have with documenting requirements and  any form of planning, is that it takes time.  Those that would rather just jump  right in and develop features, realise that after time it pays off to  do some form of requirements scoping exercise, prior to writing any code.</p>
<p>I’m  not convinced that a team has to spend weeks, or even months planning  and writing up requirements before they start development.  With this in  mind I proposed a rapid scoping exercise that would break down the  existing visions for each product into high level requirements.  I would  then be able to write up these requirements into a Business Requirements Document  (BRD), and then have the key stakeholders decide from this document, what was  required for each of our products upcoming Alpha releases.</p>
<p>The  requirements we agreed to do from the BRD would then be  taken to each team and broken down during technical requirements  meetings.   This would result in a bunch of user stories, which could  then go through a form of <a href="http://en.wikipedia.org/wiki/Planning_poker" target="_blank">planning poker</a>,  giving us an estimation of workload and confidence against each  broken down user story.  Lastly, lead developers and stakeholders would agree on a  monthly allocation of work to meet a key deliverable.</p>
<p>So  let’s quickly look over what we essentially did.  I find this to be a  much more lean form of requirements gathering, which with the methods  used gives a good middle ground for teams not wanting to spend too much  time on requirements gathering and planning, but still want a decent  level of task breakdown.</p>
<h4>Step 1: Breaking down visions</h4>
<p>We  had two products Alpha releases to break down.  We knew what we had  done so far, but weren’t sure about what we still had to do.  Being a mind map  fanatic, I thought a session of collaborative mind mapping would work  well here.  We also used a series of <a href="../?p=1204">Lightweight Personas</a> to help expand out scope and generate fresh ideas.</p>
<p>To  allow us to map out what was required for the first product (which had  much more development work required than the other) we drew up a  checklist on a white board of the key product areas to be worked on.   From each we then mind mapped out what was required in terms of  business requirements.  We’d also drew up on another white board a list  of lightweight personas that might interact with the product in some way  or another:</p>
<ul>
<li><span style="color: #3366ff;"><strong>User</strong></span></li>
<li><span style="color: #ff6600;"><strong>Administrator</strong></span></li>
<li><span style="color: #99cc00;"><strong>Seller</strong></span></li>
<li><span style="color: #ff0000;"><strong>Buyer</strong></span></li>
<li><span style="color: #cc99ff;"><strong>Hacker</strong></span></li>
<li><span style="color: #ff00ff;"><strong>External Developer</strong></span></li>
<li><span style="color: #00ccff;"><strong>Tester</strong></span></li>
</ul>
<p>I  used a different colour pen for each persona.  Strange?  Not really, the colour separation engages the right side  of your brain, which deals with your creative side, as a result inspiring fresh ideas.</p>
<p>The collaborative mind mapping went well, and within the space of a few hours, we’d scoped out our Pro products requirements.</p>
<p style="text-align: center;"><a href="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/IMG109.resized.jpg"><img style="margin-bottom: 4px;" src="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/IMG109.resized.jpg" alt="A scope mind map for our Pro products management interface." width="620" height="600" /><br />
</a><span style="font-size: x-small;">A collaborative scoping mind map for our Pro products management interface.  We clearly separate dependencies from the other version of the product, which will feed into the scoping exercise for that product if needed.</span></p>
<p style="text-align: center;"><a href="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/IMG117.resized.jpg"><img style="margin-bottom: 4px;" src="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/IMG117.resized.jpg" alt="A scope mind map for our Pro products application and vault installers." width="620" height="600" /><br />
</a><span style="font-size: x-small;">Another collaborative scoping mind map, this time for our vault and product installers.</span></p>
<p style="text-align: center;"><a href="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/IMG118.resized.jpg"><img style="margin-bottom: 4px;" src="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/IMG118.resized.jpg" alt="A scope mind map for our Pro products distributed vaults." width="620" height="600" /><br />
</a><span style="font-size: x-small;">This map was done on a day I was on holiday.  A collaborative brainstorm between two of our lead developers, to work out what was required for out distributed vault network.</span></p>
<p>The other product Core, only took a couple of hours as well in a later brainstorming session.  We opted to map the entire scope onto a single brainstorming map, thinking there wasn&#8217;t as much to it.   We used dashed lines to highlight dependencies between elements on the map .</p>
<p style="text-align: center;"><a href="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/IMG132.resized.jpg"><img style="margin-bottom: 4px;" src="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/IMG132.resized.jpg" alt="A scope mind map for our Pro products distributed vaults." width="620" height="600" /><br />
</a><span style="font-size: x-small;">This is our Core Beta scope mind map. Its broken down tasks later went on to be collectively know as Alpha scope since we&#8217;d realised that we had more to do than we&#8217;d originally thought.  Notice the use of an actor on this map, in this case customers that we&#8217;d like certain tasks to occur within their environment.</span></p>
<p>So  you can easily see that the task of getting the initial business  requirement scoped out, can be done very quickly.  That’s the real power of  mind mapping, and using additional tools in conjunction such as  lightweight personas and checklists of product feature areas.</p>
<p>If  you plan on facilitating a collaborative mind mapping session yourself, keep it simple, only have the  people necessary in the room.  Keep people on track, and try to steer  the mind mapping exercise yourself, using peoples input to develop the  map.  Prompt often upon lightweight persona’s to inspire ideas.   Probably the most important point if you’re a facilitator, is to make  sure that you&#8217;re comfortable with mind mapping, since you’ll be doing most  of the drawing.  The facilitation, drawing, and thinking of ideas can be quite a handful for some, so having experience mind mapping certainly helps.</p>
<h4>Step 2: Deciding what’s important</h4>
<p>Now  with the business requirements mind mapped, I had to take these and  present them in a format suitable for our key stakeholders to decide upon  what was important or not.  I decided to write a Business Requirements  Document (BRD) for this, similar in style to the <a href="http://www.bettertesting.co.uk/content/?page_id=839" target="_blank">spoof requirements document</a> I wrote for a Week Night Testing challenge a while back.</p>
<p>I had decided upon this because by its nature, it allows for further expansion  of requirements and identification of new ones (gaps).  In hindsight  though, I’d probably not go to this amount of effort again and simply  create a mind map of all the scope combined instead.</p>
<p>So  the idea here is that I got the key stakeholders into a room with the  lead developer for the project and discussed each requirement with  them.  The stakeholders, upon hearing the details about each requirement,  would then assign a <a href="http://en.wikipedia.org/wiki/MoSCoW_Method" target="_blank">MoSCoW priority</a> to it (with the woulds being out of scope for this release).  The whole  process took about two hours, and at the end we’d clearly identified  what was important for the business, for this months release, and what  wasn’t.  Some of the what wasn’t and lesser important tasks, would  easily have been done previously if we’d been working from visions.</p>
<p>The  stakeholders loved the BRD document.  I honestly think though, that  they’d have been just as comfortable looking at a digital mind map.  It  would have saved time, as it took me a couple of days to write up the  document, which would likely have been a couple of hours had it been a  mind map.</p>
<p>On  the plus side the document helped identify additional gaps, whilst I  was writing it.  I’d also used a who, what, why format for writing  business requirements.  This resulted in me struggling on a why for  some, therefore making me directly question the purpose of such  requirements.  After all, if you can’t justify why your doing something, then why  do it at all?  I found that to be really useful, and got discussions  going upon the purpose of some requirements, sometimes leading to new scope, or the removal of items.  I doubt though that I’d go to the effort of creating a BRD  document again, as I think a mind map would have caught as many gaps  potentially.</p>
<div>
<p class="main-caption" title="reference">Who, what, why (Business requirements creation mnemonic): Who is the person this requirement is intended for, e.g. as an administrator of the system. What is the element of the feature that this requirement asks for e.g. I would like a reporting option. Why explains the reason for having this requirement e.g. that allows me to see the current available storage space of the network. When combined, would form a business requirement which could bring value to some person, at some time.</p>
</div>
<h4>Step 3: Breaking down the business requirements</h4>
<p>Now  I knew what was important in terms of business requirements, I could  arrange a meeting with the team who&#8217;d be working on each project, to  break these requirements down further.</p>
<p>I  decided to buy a stack of index cards, and began to write out a  business requirement from the BRD on each card.  After I’d finished I  got the feature team into a room and explained my plans for the meeting.   The plan was simple, a two stage meeting.   The first part would  involve me discussing each requirement from the story cards, then us all  discussing what was involved technically, and as a result giving us  broken down stories to work from for each requirement.  This is the technical breakdown from the three tier plan that I&#8217;d originally proposed to the team.   The second part  involved the team putting an estimate against each story, along with a  level of confidence (high, medium low) on getting that work done in the  estimated points.</p>
<p>I  used a form of planning poker for the estimating, with a slight twist.   Since the team worked in points, we didn’t care about time, we only had  to estimate in points (1-3) and let our velocity determine how many  points we could complete in the month.  I’d also added an additional  card into the deck (a split card).  Essentially if the task was too large  to possibly estimate, and if the majority had voted to split it, we’d  attempt to break it down further, and then estimate the broken down  cards.</p>
<p>For both teams this probably took the best part of a day to complete.</p>
<h4>Step 4: Agreeing tasks for the next sprint.</h4>
<p>I’ve  talked in the past about how mind maps can be useful for visual  feedback of information.  To help me present the scope of work to be  done for each products Alpha releases, I gathered it all in the form of a  large scope proposal mind map, developed using my favourite mind mapping tool Xmind.</p>
<p style="text-align: center;"><a href="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/IMG212.resized.jpg"><img style="margin-bottom: 4px;" src="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/IMG212.resized.jpg" alt="Me standing beside a scope mind map for our Pro product that we'd printed using an industrial sized spool printer.  An equally large sized map later join this on the wall for our Core product." width="620" height="500" /><br />
</a><span style="font-size: x-small;">Me standing beside a scope mind map for our Pro product that we&#8217;d printed using an industrial sized spool printer.  An equally large sized map later joined this on the wall for our Core product.</span></p>
<p>This  might look a bit crazy, but in reality it actually  worked out quite well and allowed us to easily pick off what was important for  that sprint.  As work progressed we marked out areas on the map which  had been completed, and had the other tasks for the month circled out  too, allowing us to clearly see our progress.</p>
<p>I&#8217;ll provide hard links to these massive mind maps as you really need to zoom into them to see them.  You can view the Core one <a href="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/Tech-Scope-core.png" target="_blank">here</a>, and the Pro one <a href="http://www.bettertesting.co.uk/content/wp-content/uploads/2011/07/Tech-Scope1.png" target="_blank">here</a>.</p>
<p>We  took a rough <a href="http://en.wikipedia.org/wiki/Guesstimate" target="_blank">guesstimate</a> of how many points we’d get through in the  month and decided on a different main sprint objective for each  product.  Our guesstimate on how much work we could get through turned  out to be way off, but we knew that would be the case at the start.  We&#8217;ll learn over time and get better at this.</p>
<h4>Step 5: Staying focused.</h4>
<p>With  everything planned, and the scope agreed and signed off, we had a clear  target for the month.  To stop us going off track I’d previously  introduced two things, with the later not solely being for this purpose.</p>
<p>Change  requests, change control, or whatever you want to call them often gets lots of bad press.  People generally don’t like being told they can’t  just do innovative things, or code those little nice to have improvements here and there,  that generally are never critical to shipping the product.   When I first heard of this I hated it too!  I quickly saw why it was  necessary though.  After all, scope creep, and the pursuit of perfection  can potentially cripple teams, and in the long run demoralise people.   So you need to get the balance right somewhere in between.  That’s why  if your change request / control policy is implemented well, and  continually monitored, it can work wonders.</p>
<p>The  other was just a basic daily standup, which remember in the past for a  small team wouldn’t have been necessary.  All I’ve did here is come into  a growing team with a fresh pair of eyes and said “Hey, this could work  well for us, let’s try it!”  Daily standups are good for watching if people are  going off track as you can listen out for telling signs such as:</p>
<ul>
<li>It would be good if we had …</li>
<li>At some point we should …</li>
<li>There is a few good ideas for …</li>
<li>I rejected this because there is a better way to …</li>
<li>There’s some more to be done in blah blah blah, will I add a story in for that?</li>
</ul>
<p>You  get the idea.  Divert these to your change request process, and if you  manage it well people will begin to appreciate it in the long run.   If  it becomes that place people know as the graveyard for ideas, then  you’re clearly doing it wrong, and need to work at improving this process, or find something better that fits your context.</p>
<div>
<p class="main-caption" title="reference">To  keep track of tasks we use pivotal tracker, which for the most part is  pretty decent.  The one thing I miss though is the sense of achievement you get  with a manual white board.  When the team pushes something over to be  tested, and even if at the first attempt it doesn’t make it past me or  whoever had been testing the card.  When it does actually get there, you  get a real sense of achievement in what you’re doing, and feel like  you’ve actually progressed something.  I just don’t get that with  software planning and task management tools.  I feel like we’re missing  something here.</p>
</div>
<p>From  our end of sprint retrospective, we got a lot of good feedback on the  new approach to planning.  People generally enjoyed the greater  visibility from being involved in scoping, and technical breakdown /  estimation meetings.  They also enjoyed having a clear achievable target  for that month, as opposed to a long distant goal.  There is lots we  can improve on, and no doubt this entire process will change significantly over time.</p>
<p>Having  short snappy sprints, with retrospectives at the end certainly keeps a  real sense of momentum going, and creates an aura of excitement at times  (or perhaps that&#8217;s just me?)  As long as we continue to self improve  ourselves and learn from our mistakes, we can do wonderful things.</p>
<h3>Lessons learnt</h3>
<p>Personally  I’ve enjoyed the whole experience of sitting on the other side of the fence, scoping out and planning releases, and even getting down to the  nitty gritty of writing up requirements.  Although it wasn’t the  experience I’d have expected to gain when I took the job, it has  certainly proved very worthwhile and gives me skills which I can apply  directly to my job as a tester.</p>
<p>It  certainly proves to me how invaluable collaborative mind mapping can  be.  I’ll continue to use this as a means of generating and expanding  test ideas with others, and to help solve difficult testing problems we encounter, such as tackling scalability, or proving difficult product  claims.</p>
<p>Lightweight  personas helped spark fresh ideas when mapping out requirements scope.   As a tester these will always prove essential for me in test case  design, and big picture ideas.  They’ll help me think more in terms of  problems being solved by the product, that in turn identifying key issues,  such as extensibility problems with design which could affect third  party developers at a later date.  Perhaps even, accessibility concerns  for a persona we’d not considered before.</p>
<p>Mnemonics,  continue to prove useful as long as you can directly apply your own,  when needed.  The who, what, why mnemonic I’d used to develop user  stories around the business requirements, came into my head from me  trying to solve a problem.  That problem being, the presentation of  requirements in a readable, and justifiable format that could be read,  and understood by key stakeholders.  While other peoples mnemonics may prove  useful in the short term, being able to build your own set will make  them much more beneficial for you to use, in your context, in the long term.</p>
<p>There  is a lot more I’ve learnt from this experience, but hopefully you’ll  have picked this up yourself from what you’ve read already.  Rather than  turn this already long post into what would feel like a small e-book,  I&#8217;ll finish up here, and extend a warm thank you for taking the time out to read my thoughts.</p>
<div class="shr-publisher-1260"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>https://www.bettertesting.co.uk/content/?feed=rss2&amp;p=1260</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tales from the trenches: Essential test case design</title>
		<link>https://www.bettertesting.co.uk/content/?p=1192</link>
		<comments>https://www.bettertesting.co.uk/content/?p=1192#comments</comments>
		<pubDate>Wed, 25 May 2011 17:16:06 +0000</pubDate>
		<dc:creator>Darren McMillan</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Mind Mapping]]></category>
		<category><![CDATA[Pro Active Testing]]></category>
		<category><![CDATA[Techniques]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[proactive testing]]></category>
		<category><![CDATA[teamwork]]></category>
		<category><![CDATA[techniques]]></category>

		<guid isPermaLink="false">http://www.bettertesting.co.uk/content/?p=1192</guid>
		<description><![CDATA[Summary Test Case Design is a rather large topic isn&#8217;t it?  Well I&#8217;ve no intentions of covering what others have already discussed in great detail in articles, courses and entire...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><div>
<h2 id="internal-source-marker_0.26150630810298026">Summary</h2>
<p>Test Case Design is a rather large topic isn&#8217;t it?  Well I&#8217;ve no intentions of covering what others have already discussed in great detail in articles, courses and entire books on the subject.  Instead I&#8217;d like to talk about some cheap, effective techniques and approaches that you can use today, in your workplace, to improve your testing.</p>
<h2>An often confused practice</h2>
<p>Everyone has been singing the praises of exploratory testing for some time now.  I often read about people arguing over scripted vs exploratory testing, as if they are to distinct approaches that could never overlap.  Sometimes I see educated people on Twitter and various testing discussion forums having the same debate, scoffing at the thought of ever writing a scripted test case, as if it was some monkey job that was below them.</p>
<p>Now, for those informed, or perhaps, those who have put some thought into it, might actually realise that when they&#8217;re in the process of writing heavily detailed, scripted test cases, they are in-fact doing a form of exploratory testing.  Some time back I wrote about my method for <a href="http://www.bettertesting.co.uk/content/?p=253" target="_blank">writing lean test cases</a>, and talked about how I’d used a model of testing types, combined with the power of mind mapping to write heavily detailed, conditional, scripted test conditions.  As I was using my brain and thinking of conditions in which I could find flaws with the system under test, I was in fact doing a form of exploratory testing.</p>
<p>Now test case design, if done in the correct way, can be a very powerful technique for deciding upon the, what, where, when, how and who of testing.  You might not think that you&#8217;d get all of this from a traditional scripted test case, but you can, and should.  Over the next few post&#8217;s I&#8217;ll delve into techniques with mind mapping, and indeed entire project planning with mind maps which will further explore this concept.  For now though I&#8217;ll jump onto the cheap techniques and approaches that I&#8217;d promised.</p>
<h2>When to write test cases</h2>
<p>Most often than not, I&#8217;ve found test case design to be most useful when I don&#8217;t actually have a system to test.  Why?  Well if you think about it, when we do have a system to test we are often far to busy testing it to stop and consider writing test cases around it.  It&#8217;s often easier to jump right in and get your hands dirty testing the application; after all it will provide you with invaluable quick feedback.  That being said, sometimes you can reap huge rewards to stop, and think about the types of testing and conditions to apply.</p>
<p>So when does it make sense to write test cases, as opposed to testing?  Well, sometimes you think you know all the aspects to test, and quickly jump in and begin testing.  Sometimes you are so time constrained that you really have no other option.  However it does pay to think over what you actually want to test, and how.</p>
<p>Most often people write a test plan document which, amongst other things, would allow them to consider aspects of testing that they might not have previously thought about.  The problem I see with such documents is that, whilst some of them provide some visibility to other interested parties such as project managers, and perhaps customers, most often than not they become quite lengthy, and once written never, or very seldomly get refereed to again by the author.  Often plans change and documents remain as-is, quickly becoming outdated and set aside on the document scrap heap that no one wants to acknowledge.</p>
<p>Taking that information out of a document and into an environment where people will take notice of it is one possible solution; where is such a place though?  Well, lets look at some possible high visibility, high impacts test techniques that might solve this problem.</p>
<h2>Story bound acceptance tests</h2>
<p>Acceptance tests are an easy candidates for such a move, and can exist in many meaningful places.  If you work in an agile environment you&#8217;ll likely use story cards; these are placed upon your story board or task management application such as Jira.  A really cheap technique that will allow you to place tests into the field of view of developers and those that matter, is to write acceptance tests for each story, either on the back of the story card if you are using a whiteboard, or along with the content of the story on your task management application.  If you want to improve the process further, have the customer write these acceptance tests in conjunction with you, the tester.  It seems so obvious, but this little gem is often forgotten about, or simply ignored.  This can be so beneficial to team, and often uncovers key gaps, and risks in deliverables.</p>
<p>Now you have a pros and cons with this technique.  The benefits being obviously the direct involvement with the customer, and placing test directly into the acceptance criteria for delivery of a story.  The downside to this, is that you have this linear view of the world.  Often you never see the big picture, or if you like, the holistic view of the feature when combined with the product.  As such your tests often reflect this, and are constrained to that story, or sometimes with some minor interactions with different stories, within the same feature.  As long as you are aware of the limitations of this technique and counter for it, this can work wonders.</p>
<p>So obviously writing, or linking acceptance cards to user stories provides benefits, but we know it has its limitations; specifically in terms of providing a holistic view of the system.  We know however that it does make sense to use this technique, and you could argue that if the tester, in conjunction with the customer can&#8217;t write these acceptance tests, then the customer really doesn&#8217;t know what they&#8217;re asking for.  Therefore it&#8217;s probably a good thing that we had got that initial communication going.   This technique is also very much so, a form of <a href="http://www.bettertesting.co.uk/content/?p=123" target="_blank">proactive testing</a>, which not only reduces potential defects; it also promotes higher quality software throughout the team.  So certainly in this case it makes perfect sense to write test cases, as opposed to testing the system.</p>
<h2>Mind mapping acceptance tests</h2>
<p>Getting back to the the subject of writing test plans to provide you with that early big picture overview, writing acceptance tests in the form of a mind map can certainly replace most aspects of this traditional, write once, never read again document.  “How so?”  I hear you ask.  Well, if done correctly, mind maps of proposed features, or indeed entire products can provide you with a holistic view of the system.  With that big picture overview, you can more easily see the what, where, when, how and who of testing.  I’ll provide some real life examples in later post’s of using mind maps like this.</p>
<p>I normally begin by building my map up with an overview of the proposed feature.  If the feature has not been implemented yet, then I&#8217;ll use existing documentation such as requirements, specifications and designs to help me determine what it consists of.  I&#8217;ll also lean heavily on customers, and key stakeholders to make sure expectations are aligned, taking notes of any initial risks, and highlighting gaps in the proposed feature.  Since I already have a feature overview created, or in development in the form of a mind map, it makes the process of identifying gaps when communicating with stakeholders, that much easier.</p>
<p>If the feature has already been developed, I can use the previously discussed documentation to work out if what has been delivered met initial expectations, and if not I can begin looking into the why.  Either way, at the end I&#8217;ll have mapped out what this proposed feature consists of, and preferably how the components interact with each other and the system as a whole.  I can then use this as a means of developing acceptance tests, since now I have that big picture overview of the scope, interaction points, and external dependencies of that feature.</p>
<p>If you read my post on <a href="http://www.bettertesting.co.uk/content/?p=253" target="_blank">lean test case design</a>, you&#8217;ll see in much more detail how powerful this technique can be.  An important aspect to take away from this is the use of a testing model to use as a reference for developing test cases against.  Your model will obviously be built to fit your products needs, but obvious candidates for inclusion would be types of testing you might carry out, such as performance, extensibility, usability and so on.  Likewise, lightweight persona&#8217;s can expose aspects of testing you might not have previously considered.  For example, where in your system would a hacker likely target?  How would an programmer external to your company use your public API&#8217;s?  Do they fulfill his needs?  How would a user interact with this feature?  Are they jumping through hoops trying to use your system?  Another useful element to include in your model is rules.  Rules simply being, expectations of the system.  These a direct expectations from the stakeholder, and sometimes can be lifted directly from requirements documentation.</p>
<p>Now I&#8217;ve obviously not went into much detail here on how to build your map, but you can find more about that in my <a href="http://www.bettertesting.co.uk/content/?p=253" target="_blank">lean test case design</a> article.  I will however, at some point in the near future expand upon on mind map design techniques in much more detail.</p>
<p>So we now have two cheap, effective techniques to produce acceptance tests.  Both hopefully could be used in a proactive sense, to further improve their benefits.</p>
<h2>Pair test case design</h2>
<p>Now I&#8217;m a big fan of collaboration when it comes to test case design.  One obvious candidate which would blend well to pairing with another, or indeed a group, is mind mapping.  I&#8217;ve talked in the past about the benefits mind maps provide for test case design; what I haven’t touched on much is pair mind mapping.  It sounds very simple, but there are techniques that can make this experience much more powerful.</p>
<p>In my experience pair mind mapping can provide fantastic results for test case design.  If you do intend to pair I&#8217;d recommend using a tool such as <a href="http://www.mindmeister.com/" target="_blank">Mindmeister</a> for this, as opposed to paper and pens, or a whiteboard.  The reason I suggest using a tool as opposed to directly pairing, is that most often than not someone takes charge, and begins to dictate the mapping experience.  It is then often difficult for the other pair to slip out of a linear thinking mindset, to provide worthwhile contributions.  Separating the pairs, and forcing them to use a tool as a means of communication results in both participants opening up their creative side, and as a side effect providing much better results.</p>
<p>Both testers could let themselves loose and begin mapping test ideas onto the map, however what I&#8217;ve found works well is to assign the tester with the most experience in mind mapping a lead role.  The lead works his way around the map, jotting down initial test ideas, while the other tester shadows his movements filling in gaps and contributing new ideas to the mapped areas.  The lead tester should frequently revisit previous nodes, taking note of changes added by the other tester, and by doing so this will spark new fresh ideas, producing much better results.  Mindmeister is fantastic for this approach, as it&#8217;s very evident when changes are made by another party on the map, in real time.</p>
<h2>Group test case design</h2>
<p>A tool like Mindmeister also works well for group contributions.  For example, you may design tests for a new feature, and then share it with other members of your team to review and expand upon.  Each member can then review and expand your test ideas at their own leisure.  When changes are made to the original map you are notified by email, and can then log in and review, step by step, all changes made.</p>
<p>Now obviously if you have a group to work with, using a tool to design test cases isn&#8217;t going to work if you’re all trying to interact with the map at the same time.  Re-locating the group to a quite room, with a whiteboard and some pens gives you all a much better chance of producing good results.</p>
<p>Much like a pair mind mapping session, it works well to assign someone with good experience in mind mapping a lead role.  Rather though than them mapping out nodes themselves initially on the whiteboard, you would have them steer discussions and encourage participation from other people in the group.  They will also be responsible for mapping out discussions on the whiteboard, but other participants should also be encouraged to contribute to the map when they feel their ideas are not expressed well verbally.</p>
<p>Lean heavily upon lightweight persona’s.  If you have a second whiteboard available, or some paper which can be shared with others, start the exercise by asking the group to think about which type of people would interact with the feature in some form, at some point.  Take note of these users and have the group refer to them throughout the mapping exercise to generate new ideas.  Question, how would this persona interact with this feature area, often.</p>
<p>If possible, get key stakeholders involved.  Customer and stakeholder input can be invaluable, and often exposes gaps, or risks with design.</p>
<p>Group test case design with mind maps can provide really detailed test cases, more so, they often expose much larger tasks which will require adjustment to initial plans.  Often you&#8217;ll come away with a long list of follow up items which need clarification, that’s why having customers and key stakeholders involved in these activities to clarify issues is worthwhile.</p>
<h2>Input / Output mapping</h2>
<p>A golden gem, which I&#8217;ve used to unearth many a major defect, and countless lower severity issues, is the mapping of inputs and outputs.</p>
<p>So what is it?  Well it is exactly as it sounds.  For every input, more often than not we&#8217;d expect and output.  Likewise, for every output we&#8217;d expect there to be an input in most cases.  Developers often see just that, an input for an output.  Their tests often reflect this, and error handling code, likewise is the same.  An input for an output, and an output for an input.</p>
<p>Of course we can fully expect that all inputs or outputs can have one or many of the opposite which directly affect them.  As a developer when working on a block of code for a specific area, the holistic view of the product, or indeed the feature is often lost.  It&#8217;s hard to see the whole picture when you are so focused on a single task at hand.  Therefore their code and tests often miss out other possible areas, which might affect that piece of code they&#8217;ve just written.</p>
<p>Previously when I discussed mind mapping acceptance tests, I talked about how this could provide you with a holistic view of the system and feature under test.   We can use this big picture overview to our advantage, to begin listing possible inputs into the system.  We can then make a second list of possible outputs from the system.  If we then have time, we can begin linking multiple inputs to our outputs and vice-versa.  If we don&#8217;t have the time, we can simply pick out what we feel are they key high risk area&#8217;s and work on those.</p>
<p>By noting multiple alternative inputs or outputs for a feature area, we can identify areas which most certainly would have low or non existent test coverage by the developer.</p>
<p>Don&#8217;t consider only what you can see; configuration files, administrative settings, database configuration tables, operating systems, browsers and so on can all provide a means of affecting possible outputs.  Some of these such as that hidden away configuration file, or administrative screen to adjust settings can all be a rich source of potential issues.</p>
<p>More often than not, consistency can be an issue with outputs.  The same information presented in several area&#8217;s when modified, can often result in inconsistent, or non updated outputs.</p>
<p>I&#8217;d highly recommend trying this out.  Sure, we all do it to some extent when testing, but set aside some time to sit down and map these test conditions out.  You&#8217;ll be surprised with the results.</p>
<h2>API Test Cases</h2>
<p>I&#8217;ll finish off this rather long post by talking about API test case design.  Rather than jumping in and coding API tests, I&#8217;ll suggest an alternative approach that can be done either by yourself, or in a pairing task with a developer.</p>
<p>API tests blend very well to discussions on test case design, or indeed a thought process to design test conditions.  Indeed, we have many automated documentation tools which can generate documentation directly from the source code.  <a href="http://www.doxygen.org/" target="_blank">Doxygen</a> is an example of one such tool used in my work place, which with a little effort from the developer can produce pretty decent documentation of code.  Even without an automated documentation tool, the explanation of an API is a rather simple task, and one that can be done quickly.  Drafting up some quick documentation does not take much time either.   Likewise if you’d like to explain tests around code, commenting around them in Doxygen format, or a similar documentation tool would result in a list of tests that provide code coverage, which make sense, to almost anyone.</p>
<p>Sometimes if you&#8217;re lucky a team may attempt to define API&#8217;s up front as part of a technical requirements scoping exercise.  In such cases it would be foolish to not assist with test case design upon the API.  You have a real chance here to ensure that good tests are being written.  In the past I’ve reviewed API’s and suggested test cases to improve coverage, only to find that whilst they would be beneficial, the resources to do the task simply didn’t exist at that point in time</p>
<p>What I find works best is to produce a series of one line descriptive tests.  For example, if I provide a get function a specific parameter, I can expect a specific return type.  If you run over the API initially and map out basic acceptance tests, covering all parameters and returns types we can assume that we have decent coverage of that API.  However, there may be dependencies, or specific functions which need initialised first.  Obviously we can come up with lots of useful scenarios to test here, and negative tests to give improved coverage, and hopefully expose some issues.</p>
<p>If you&#8217;re pairing with a developer to do these test conditions, great!  If not, hopefully you&#8217;ll have a nice list of one liner tests to provide them with to ensure decent coverage.  This is particularly important I feel with public facing API&#8217;s, which might be exposed to other applications or 3rd party developers.  Indeed in such a case, such API’s not only need to be robust, they also need to be usable and fit for purpose.  In such a case strong readable documentation is essential, along with validation that these public facing API’s fulfil users needs.  One method to ensure the later works, is to think of application scenarios that might make use of these API’s, and quickly mock up these applications to expose limitations and fundamental issues.</p>
<p>Sometimes it&#8217;s also worthwhile writing a test harness against the API, which can then be used by anyone with little, or no training.  These can often be written very quickly, to allow quick testing.  Often, resulting in scenarios executed by the tester that you might not have considered yourself.</p>
<h2>Conclusions</h2>
</div>
<p>So test case design can be a very powerful technique if used correctly.  It can play part in all aspects and stages of the software development process.  Often it is misunderstood, and false beliefs are imposed upon its limitations.  We can see easily that such beliefs are unfounded, and the benefits are there to be taken, and harnessed by your teams.</p>
<p>I hope that from sharing my thoughts, others will in turn share techniques that they have found useful for test case design.  Thanks for reading.</p>
<div class="shr-publisher-1192"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>https://www.bettertesting.co.uk/content/?feed=rss2&amp;p=1192</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
