September 19, 2010

How to create new test ideas quickly?

Test design is an important task for software testers. However, even "solid" requirements do not cover all aspects of a software product or application. As testers, we should be creative in designing tests that cover each and every system characteristic that is of importance to our clients.

In order to learn more about test design, I decided to run an experiment last month. I wanted to see the test cases that could be designed for testing a common object of everyday use, a tea cup. I posted a discussion on this topic in the Software Testing Space group. See my short video, How to Design Test Scenarios or read on...

The experiment was a success. The group members came up with more than 75 test ideas. I too participated actively in the discussion and came up with more than 75 other test ideas on my own. I learnt a lot from this experiment. In this post, I will share one learning with you.

To begin with, I just had some basic test ideas. Ideas like does the tea cup hold an acceptable quantity of the beverage, does it prevent the loss of heat while the tea is being consumed, is it possible to operate the tea cup without burning one's digits or mouth and whether is it possible to prepare (i.e. wash and wipe) the tea cup for the next use.

Other STS group members added more test ideas related to the physical characteristics of the tea cup (e.g. its weight, leaklessness, its looks, the properties of the material used in its construction and its inter-operability with other objects such as its plate). Now, the physical characteristics category is a gold mine of test ideas. I came up with more test ideas now on
Operation
  • Does not get caught with other objects e.g. other utensils or garments while handling
  • Does not lose material, shape or any other physical characteristic when washed
  • Does not have any hard to reach areas (difficult to wash zones)
Inter-operability
  • With a kettle or tea vending machine
Safety
  • Stability (with respect to its height, weight and center of gravity) while lifting a filled tea cup and placing it down
  • "Unbreakability" during use e.g. when dropped on the floor or when squeezed by hand
  • Size and shape of pieces (e.g. small and pointed versus large and smooth) that it breaks into
Looks
  • Has a good shape design, symmetrical or otherwise
  • Has visible logo
  • Handles extreme temperatures without physical distortion

At this stage in the discussion, I found myself thinking hard to get fresh ideas. Sure, I would come up with a few fresh test ideas. But I also found myself coming up with several test ideas same as or similar to the ones already on the table. I felt that there were a lot more tests that I had not considered yet. But how to get at them quickly?

It was at this stage that my fellow STS group member, Freddy Gustavsson added to the discussion. Freddy suggested more test ideas but the thing that struck me about his response were the categories he listed. Things like Changeability (modify the tea cup) and Replaceabiltiy (repair a broken tea cup).

I found a sizable list of system quality attributes on Wikipedia. After looking at these attributes, I could then think up with a number of fresh tests including, for instance,
  • Material free from harmful (reactive or radioactive) chemicals
  • Material does not conduct electricity
  • Tea cup operates well with accompanying items like cup cover and coaster
What is even more important is that you may use the list of system quality attributes to quickly design tests for any system, including a software product or application. Like I did, you could select the quality attributes applicable to your system. Add sub-attributes as desired by you. Create a hierarchy of attributes if you want. Thinking about test ideas for your system one attribute at a time gives you focus. This could enable you to come up with a number of test ideas more quickly.
A final note: Out of all the test ideas that you collect, remember to select and prioritize your tests based on the objectives and needs of your clients. The importance of a test depends on its alignment to the objectives and needs of your clients.