InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Mind Maps Foster Thorough Test Design

Posted by Deborah Hartmann Preuss on Nov 09, 2006

Sections
Process & Practices,
Development
Topics
Artifacts & Tools ,
Agile
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.
  • This article is part of a featured topic series on Agile

Related Sponsor

In today’s hyper-competitive world, later may be too late to adopt Agile development and this Roadmap for Success will help you get started. Download "Agile Development: A Manager's Roadmap for Success" now!

Shame about the BMPS by David Skelly Posted
  1. Back to top

    Shame about the BMPS

    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.

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.