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 as jack of all trades, master of none 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.
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.
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.
Test Conditions Vs Test Ideas
We will start off simple and look at the idea of test conditions Vs test ideas. Let’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:
“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.”
Now if we were to take such an extensive approach for everything we thought of, the process of designing tests would become very long.
Test ideas on the other hand essentially allow you to note your thoughts down in a rapid but less extensive format. Let’s look at the previous example for a test condition and switch it to a test idea:
“Extensibility > Login > Additional fields > e.g. user pin”
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.
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’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.
- Security
- Encryption
- Type
- Strong
- Implemented correctly
- Implemented incorrectly
- Becomes weak
- Weak
- Improve encryption method
- Strong
- Type
- Key distribution
- Others?
- Encryption
Or better still in a mind map format:
An example mind map created using XMind, showing how the encryption test ideas could be formatted, if presented in a mind map.
So when should we use one or the other?
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.
Proactive use of conditions
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 lean test case design. 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.
An example mind map, showing how test conditions can be designed while maintaining a holistic view of the system under test..
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 at least the low hanging fruit testers would often find.
Test ideas
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 should test and get feedback from others quickly, which would help pinpoint any gaps.
The example below was for the Pro version of our sister company Sigmoid’s product. You’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.
Test ideas generated to determine the extent of acceptance tests to be executed for Sigmoid Pro’s product.
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.
Techniques to improve your mapping experience
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.
Let’s look at some of these techniques in a little more detail:
Technique 1: The mental model.
If you are unfamiliar with the concept of testing models then check out Michael Bolton’s excellent Elemental Models. 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.
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.
An example of my high level mental model might be as follows:
A mind map example of my high level mental model, which helps me rapidly generate ideas.
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.
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!
Technique 2: Add a splash of colour
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.
Obviously with hand written mind maps this is easy, we simply choose a different colour of pen. For tools, applications like FreeMind do it automatically. Xmind, my tool of choice, for some reason has this option switched off by default. On the image below I demonstrate how to enable this:
An example image, of how to enable branch colouring on Xmind.
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.
Technique 3: Brainstorming.
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.
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’ve already begun to slip into a linear thinking mind set.
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’ve already lost your lateral thinking mindset, and now you are much more focused on linking thoughts together and filling in gaps.
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’ll benefit greatly.
Technique 4: External resources.
When you’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.
The guys over at The Test Eye came up with an excellent resource to use, to promote additional ideas in your mind maps called the Software Quality Characteristics v1.0. This truly is an incredible resource to make use of, which will help you pin point gaps and areas of concern that you hadn’t even considered.
Michael Bolton also came up with a series of useful context free questions which I find very useful for considering other aspects I might have been biased towards while developing my ideas.
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.
Also highly worth considering, is to develop your own list of lightweight personas for reference to while developing your map. These can be very useful prompts to defocus your thoughts and remove invalid assumptions you had created.
Wrapup
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.
Thanks for reading.
Related posts:
Nice work Darren!
Thanks David, glad you enjoyed it and thanks for taking the time out to comment.
Fantastic survey, Darren. I’ll be referring to it, to be sure.
A couple of suggestions that you might find helpful.
I’ve found that when brainstorming, it can be useful to add floating nodes, rather than attaching them to a root node. That keeps the flow coming, because I know I’ll be sorting them out later. When I’m done the brainstorm, I can move those nodes around and see what groupings begin to form. Alteratively, I can pick them up (via copy/paste) and copy them to a map that has a predefined structure to it (e.g. the Product Elements section of the Heuristic Test Strategy Model).
With MindManger (and probably with XMind, but I’m not sure) when a given node gets unwieldy, I find that it’s sometimes helpful to collapse it and/or link to another map.
I don’t know how or why you’re making a distinction between test conditions and what I would call implicit requirements. Is there a difference?
Cheers,
—Michael B.
Hi Michael,
Thanks for the nice words.
In terms of floating nodes, I’ve never tried using them in a brainstorming fashion, I’ll have to experiment with that one to see if it’ll be beneficial for me, thanks.
Collapsing unwieldy nodes is a useful trick. I often do this when talking over a map with others, starting with all but the top level nodes collapsed, then expanding a node at a time while discussing the map contents. I find it helps focus discussions, and prevents people trying to skip ahead.
I have a follow up post which will expand on the linking aspect. It’s pretty interesting, hopefully I can get it written soon.
As for the distinction between conditions and implicit requirements, I didn’t realise I had, or intended to. In general I see conditions covering both and more, just like test ideas would. It’s just that conditions generally delve much further into specifics. Perhaps just a poor choice of examples?
Thanks again,
Darren.
Very good article, and a useful set of external resources,
While I’m still not sure that Mind-Maps are better than a Tree, I think your guidelines (which are useful for both) are very clear and correct.
You referred to Brain-Storming mainly as an internal activity, while I think the main advantage of Mind-Maps is in brainstorming with colleagues, as a further step to improve the breakdown.
I do wonder, how to make best use of Quality Characteristics (linked in external resources) and Test Design Techniques lists, while planning this breakdown of issues to test, the lists are quite long (probably too long to be useful as a Mind-Map)
We could use some of these, as a generic template per product/feature, to remind us which areas to tackle.
So these could be just copied and pasted from one project to another.
Or, we could place these in a sort of “Press Next to get a writing idea Tip” sort of application, to assist when the Muse stops.
Hi Kobi,
Thanks for the kind words.
I delve into group mind mapping techniques in the following post: http://www.bettertesting.co.uk/content/?p=1192
The principles behind my lean requirement gathering article (http://www.bettertesting.co.uk/content/?p=1260) are also very relevant to test design.
Both discuss mind mapping in groups in a lot more detail; I’ve only briefly touched on it in this post, as it was intended as a quick overview. I agree though, group brainstorming sessions if facilitated correctly, can be extremely powerful, but they also run the risk of introducing a high level of bias, so it is often worthwhile brainstorming yourself prior to going into these meetings, to get the best of both worlds.
On the Software Quality Characteristics, I agree they are probably more than anyone would ever need. That is their purpose though, an excellent resource for reference material. When you have exhausted ideas, they can be an excellent prompt to fill in gaps, or unconsidered aspects.
James Bach’s Heuristic Test Strategy Model (http://www.satisfice.com/tools/satisfice-tsm-4p.pdf), from which the Software Quality Characteristics is an extension is also a valuable resource for reference material. More so for the understanding behind it, as I believe from a reference point of view Test Test Eye’s work is an improvement upon this.
Delving deeper and helping trigger idea generation from memory, Lynn Mkee’s excellent mnemonic list (http://www.qualityperspectives.ca/blog/2608) can provide great benefits. Though I strongly believe as Bach and Bolton teach in their Rapid Software Testing class, that the real benefits come from developing and understanding your own.
Thanks again for taking the time out to comment.
Darren.
What a fantastic article! Bookmarked, broadcasted to fellow testers and colleagues too!
Hi Ranjit,
Thank you kindly! Your encouragement makes it more worthwhile to write these articles.
Darren.
Great post, looking forward to post 2 in this series. Already apply some of this in my work, but reading this encourages me to do more with it. Thanks.
Hi David,
Thanks for taking the time out to comment. Hopefully the next two posts can help visualise the true power of mind mapping. I hope you enjoy them too.
Thanks,
Darren.
Love your blog Darren – great resource of informative ideas for me to try out.
I really appreciate the tips for mindmapping – its still baby steps for me, so i’m loving the ideas & resources to help me learn how to map efficiently.
Thanks for taking the time to post!
Hi Duncan,
It takes a lot of time to master. I still have a lot to learn myself and improve upon. That will only come with time though.
I hope you’ll blog about your experiences with them in the future.
Thanks,
Darren.
Excellent article Darren!
I’ve been thinking of some of these things recently and trying to form them into a cohesive idea in my head. You’ve done much of that work for me. Some great links to go and explore too.
Fantastic read.
Hi Chris,
Thanks for the kind words.
For anyone reading this comment, be sure to check out Chris’s blog as well (http://www.chrischartier.info), as he has some excellent articles on mind mapping.
Darren.
Hi Darren, glad to finally read your mind maps’ post. I use mind maps a lot, but it’s very interesting see the power of this tool. Thanks to you, now I see a new horizon.
Hi David,
Very kind. I hope you’ll blog about your use of mapping in an exploratory fashion in the future.
Thanks for taking the time out to comment.
Darren.
Hi Darren,
Once again, a very very good article, very inspiring. A reference on how to use mind mapping in test design.
Just the same remark on your very first example of a test condition: this is actually more a requirement and your test ideas are, from my own perspective, the test conditions. Test ideas are then cases or checks covering these conditions. Is this correct ?
Anyway, the test conditions must be put down on the map to help tester be focused on them.
This post confirms the need for me to enhance the conversion capabilities of Mind2Tests (the converter of maps to importable xml files). Actually, the test case format I propose is still too rigid/formal even if the required node organising rework is supposed to be done after a brainstorming session, not during the session (to keep the mind flow free).
For a new version of my application, I have created another test campaign map (http://www.mind2tests.com/app/screenshots/Tests.png) ().
It has been produced within about half an hour just dropping ideas and reformating them. And I used it directly as a support for test execution.
This is something that I would like to handle directly in Mind2Tests but it is difficult to handle a formal test node structure and a totally free definition in the same map. Would you have any advice on this ? I think that the way a map is built should be consistent within the map but 2 persons will probably have different ways of defining things, won’t they ?
Another point, I feel that the use of a tables in XMind can help to present some cases (I used it for combinations)
Thank you again for this post and the time you spend sharing your experience and knowledge.
Hi Arnaud,
Very kind, thank you.
I would say it is probably a bad example to use for a condition, but it is still a condition in my eyes. Although like Michael states an implicit requirement, conditions should cover those and more; after all most conditions are checks, very few are actually tests, and that is what we are doing here in this case, checking.
That is why test ideas tend to blend well to exploratory testing. Conditions dictate, ideas don’t. So conditions introduce a specificity problem for sure, whilst ideas do so at a much lesser extent. If communicated in the form of a mind map, I would argue they almost remove it completely and promote better feedback.
The specific example I had used of a test condition sprang to mind from when I worked at Sword Ciboodle. We had a real problem with extensibility in code. Features were being designed without extensibility in mind, which later caused us great problems,
I used to write test conditions covering all aspects of the feature under development, then pass them over to the developers, to check off before handing it to me to do more rigorous testing. Extensibility scenarios although never included in the products requirements, I would always make sure I wrote conditions like the example I’d provided in this post.
If you can give justification to your conditions they carry a much higher level of respect. I could have simply said, make sure extensibility is looked at. From giving scenarios throughout the developed features for extensibility concerns, I not only promote awareness, but also gain credibility with developers.
For Mind2Tests, there is many difficult scenarios I can think of using XMind which might prove difficult to process. I’m not sure though from the example you provided as to what you are asking. What would you consider a formal structure and a free definition? Hopefully I can be more help once I understand that.
Like you say no two people will ever do things exactly the same and you can only cater for so much configurability beyond the norm with limited resources. I think though if clearly stated, the mind map structure Mind2Tests supports, people will be more than happy to adjust their maps if it solves a time consuming problem for them, which conversion into test management systems tends to be.
Tables are very good, I’ve experimented a lot with them in XMind for presentation polish of a map I would communicate to others. I think they are very useful for completed maps, but for the effort required I would avoid using them while trying to generate ideas, as you would easily lose your lateral mindset.
Thanks Arnaud for taking the time out to comment. Keep up the good work with Mind2Tests (http://afoucal.free.fr/index.php/applications/mind2tests-convert-your-mind-to-tests/), it’s a very commendable thing you’re doing there to help others.
Darren.
You’re actually right about test conditions and requirements (implicit and explicit too) as test conditions have a broad definition.
For me, the “formal” structure is what Mind2Tests tends to dictate: have a test node, then the 1st sub node is considered as the test description, the 2nd sub-node will group the steps and their expected results must be defined as sub-nodes of step nodes… The nodes are then organised in a manner that will help the process of conversion, knowing the target structure (the testing tool).
The free definition would be more something like the raw output of a brainstorming session with a hierarchy of test suites, test cases, composed of step nodes and checks nodes at the same level in the node hierarchy (step1,step2, check1, check2, check3). So, something more representating the free way of test idea generation.
But this is more a problematic of how to organise the content of the map (once collected and defined) to import it in a test management tool and not the test design process and effectiveness that is so well supported by the mind mapping as you illustrate.
Thanks again !!
Hi Arnaud,
When I used Test Link in the past, I found that the structure was very restrictive to expression. This found our team mostly using only the expected results section for test cases in it, and in this we only listed test conditions.
I could visualise for Mind2Test the same approach being very useful for free form mind mapping. You could have this as an output option for converted maps.
So you would only populate the expected results section, and this would have all the contents of the map in the test case.
1st sub node could be clearly sectioned by underlining them. 2nd sub nodes would be a top level bullet condition. 3rd sub node an indented bullet under that and so on.
So if your map had for example on it two branches which containted something like this:
Extensibility > Login > Additional fields > e.g. user pin
Security > Encryption > Type> Weak > Improve
Strong > Implemented correctly?
The converted output from Mind2Test it could be formatted something like this:
Extensibility
—————-
Security
—————-
This would help you cover both scenarios. You would have to clearly communicate the differences in the UI though, in the simplest, least confusing way.
Thanks,
Darren.
Hi,
This is Saravanan from Bangalore.
Your articles about mind mapping are very much useful.
I have started using mind mapping for testing. It gives more visibility and coverage than the testcase writing.
Thanks for the articles!.
Hi Saravanan,
Thanks for taking the time out to comment. I’m glad you found them useful.
Visibility is one very important by-product of mind mapping. It makes communicating them to others much easier than a document would.
Thanks,
Darren.
Thanks for this (and all the other Mind Map) blogs you’ve posted. They seem to be a good solution to alot of documentation and planning problems I’ve been having lately – Cheers!
Hi Vernon,
You are very welcome! It’s good to see you’re making good use of them.
Thanks for taking the time out to comment and if you ever write about the planning/documentation mind mapping you’ve been doing, be sure to let me know about it, as I would love to read it!
Thanks,
Darren.
Very interesting and a lot of work and reading.
As a tester you tend to immediately start to pick holes (well I do!).
The Sigmoid Pro – Acceptance – I am interested in why the OS versions for Windows and Mac rate listed as ‘latest’, I would have thought that there would need be support for previous versions?
In the same map in the Virtual File System – Files – I notice that the differences in Mac files is not indicated especially with regard to Applications and Mac Files from iWork which pose particular problems since they are actually directories of resources.
From a Mind Map viewpoint would it also not be useful to either colour or annotate with the risk and/or priority of the testing on the basis that you cannot ever cover everything (at least in a first pass if it is post development).
It may also be useful to add in information on timescales to test (in Man Hours) since I find that this is often overlooked in the early planning but affects the release window dramatically.
With both Risk and Timescale known you can then target the testing, identifying the minimum time required for testing all high risk areas. With that in mind you can then take the ‘wanted’ release date and work backward.
Hi David,
Thanks for the reply and you’re very welcome to pick holes in it. After all, that’s how the community learns from one another.
For the pro mind map, the decision to test and support only the latest versions of certain operating systems, was a stakeholder decision. This was due to cost of developing, testing and supporting multiple versions of specific OS’s.
In regards to the differences in Mac files, for this and all other versions of the product, unless the data was written to disk in a format which we hadn’t already covered, it wouldn’t have been a problem. As Mac FUSE would have handled the IO operation of normal disk writes to the Virtual File System. It’s the write / read process that is important for this product. Hence why specifics weren’t mentioned. I could have went into a lot more detail such as the API calls available and the variables to take into consideration when testing these for each VFS/FS handler. That defeats the purpose of rapid test idea generation though. Test conditions would be more suitable for this format where you mind is in a linear gap filling process. Technically, for almost all items on that example map, you are still required to think about what you need to test; it’s test ideas after all.
I will be covering other considerations for mind maps in the next two articles of this series, so stay tuned for those.
It’s good to see that you worked for Dolphin, we should have a chat some time. I’m sure we could exchange many accessibility horror stories!
Thanks,
Darren.