InfoQ

News

Mind Maps Foster Thorough Test Design

Posted by Deborah Hartmann on Nov 09, 2006 06:30 AM

Community
Agile
Topics
Artifacts & Tools
Tags
Testing,
TDD,
Complementary Practices
November's featured article In Better Software magazine is on use of Mind Mapping: X Marks the Test Case: Using Mind Maps for Software Design.  In it, author Robert Sabourin says:  "If you’ve run through the standard design approaches and still need that killer test case, try mind maps."

Sabourin first learned about mind maps from his young son, who was taught in grade school how to use mind maps to describe the plot, characters, theme, and events of stories read in class.  Mind Maps are a way to explore and document ideas and their relationships in a simple diagram. Important concepts are recorded as words or pictures and connected with lines indicating their relationships. Invented by a college student for his own use, to save time in creating and reviewing notes, they've become quite popular and today mind maps are used to improve memory, reading skills, note taking, creativity, performance, and brainstorming.  

Sabourin started to dabble with mind maps to solve some of the software engineering projects he worked on.  Following is an outline of some ways suggested by Sabourin to use use Mind Maps. These are just the high points - visit the site to view the full article.

Mind Maps to Help Define Equivalence Classes.  Today this is widely taught as a key element of domain testing (see the StickyNotes in the article for additional resources on the subject).

Identify the Variables.  I create a mind map for each variable under test. The variable is the center of the mind map.

Identify Classes Based on AIM.  
The AIM model in Figure 1 is the basic template the author used to begin defining an equivalence class mind map for a variable. It consists of an Application Logic or "A" node, an Input or "I" node, and a Memory or "M" node. These are explained in the article. Note that he considers explicit (documented) and implicit requirements when identifying classes based on the application logic. Following are a couple of example mind maps, but the article contains more detailed examples, too.



Identify Invalid Classes.  For each node of the mind map two two branches are often created, one for valid classes and the other for invalid classes.

Mind Maps to Identify Usage Scenarios.
 To parody a familiar quote: "Test not only what your application can do for your user but also what your user can do with your application."

Mind Maps to Identify Quality Factors.  A quality factor is a characteristic of the software project which, if missing, will lead to failure or negative consequences.

The author wraps up with an example of how to get started with mind mapping for your own tests.

Related Sponsor

VersionOne is recognized by Agile practitioners as the leader in Agile project management tools. Companies such as Adobe, BBC, CNN, Dow, HP, IBM, Sony and 3M have turned to VersionOne to help deliver greater value to their customers.

1 comment

Reply

Shame about the BMPS by David Skelly Posted Nov 10, 2006 3:10 AM
  1. Back to top

    Shame about the BMPS

    Nov 10, 2006 3:10 AM by David Skelly

    Somebody ought to teach this guy how to use images in web pages properly. Those BMPs are not only huge, they're butt-ugly and some of them are completely unreadable.

Exclusive Content

Using Ruby Fibers for Async I/O: NeverBlock and Revactor

Ruby 1.9's Fibers and non-blocking I/O are getting more attention - we talked to Mohammad A. Ali of the NeverBlock project and Tony Arcieri of the Revactor project.

Agile and Beyond - The Power of Aspirational Teams

Tim Mackinnon talks about the aspirations behind the Agile principles and practices, the desire to become efficient, to write quality code which does not end up being thrown away.

Concurrency: Past and Present

Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.

ActionScript 3 for Java Programmers

Often the hardest part of changing technologies is language syntax differences. This new article provides Java developers with a transition guide to Actionscript which forms the foundation of Flex.

Neal Ford On Programming Languages and Platforms

Neal Ford talks about having multiple languages running on one of the two major platforms: Java and .NET. He also presents the advantages offered by Ruby compared to static languages like Java or C#.

Future Directions for Agile

David Anderson talks about the history of Agile, the current status of it and his vision for the future. The role of Agile consists in finding ways to implement its principles.

Nick Sieger on JRuby

Nick Sieger talks about the future of JRuby, Java Integration, and his work on JEE deployment tools for Ruby on Rails like Warbler.

Rustan Leino and Mike Barnett on Spec#

Rustan Leino and Mike Barnett of Microsoft Research discuss the technology in Spec# and its futures.