Creativity in Software Testing
Creativity in Software Testing
Creativity in Software Testing
of ideas
By Anand Ramdeo on May 5, 2011 1 Comment
Recently I finished a book on creativity called - Sticky Wisdom. It's a nice book and gives
practical advices on how creativity can be fostered in our day to day life and especially at work. I
found it very relevant to software testing field for many reasons. I have seen many people
complaining about or questioning how creative software testing as a field is? There is a notion
that software testing is mundane and repetitive activity with same problems and similar
solutions (call it best practice) - even on different projects, teams or products.
This is the first in the series of articles in which I will discuss techniques suggested in this book
and explore how they are relevant to software testing field. In the first article of this series - I
will discuss freshness of ideas and how fresh ideas and different perspectives can be generated
and are relevant to software testing. So how do we get fresh ideas in software testing? In this
book, author suggests the rule of 4Rs to force our mind to think.
These 4Rs are - Re-expression, Related worlds, Revolution and Related links. Let’s look at these
in detail and see their relevance in our field.
Re-expression - Is there any alternate way of describing this issue?
Let's think about the problems we normally raise in almost every project - Not enough time for
testing, application is not testable, defects are not being fixed, and devs are not writing unit
tests are probably repeated every-time. Let’s pick one of these issues (Not enough time for
testing) and force ourselves to think of alternative ways of expressing this.
We do not have sufficient time to gather information related to key features of our
system.
We spend lot of time in maintaining / creating test data / environment and that leaves
us very little time to test.
Its a complex project and test automation for it is becoming very challenging and needs
more time
There is a huge regression pack that we need to execute every time and that does not
leave us time
There is very little help from build masters, devs or DBAs
There are far more developers than testers in the team
Testing column looks like a bottle neck on the agile story-board.
Confusion is the prevailing state of mind and it’s difficult to decide whether to focus on
testing stories, closing defects or work on automation.
There are only 24 hours and I spend 4 hours in train every day.
And may be few more...
If we push ourselves, may be its possible to come up with such a long list for any issue we are
facing – in project or life. Sometime this might lead us to the a-ha moments, because they lead
us to the exact reason for the problems and those reasons can be eliminated easily. It’s quite
possible that those reasons have nothing to do with product or schedule. It could be all down to
project management, environment management or even your test strategy.
So remember - if there is any issue giving you hard time – practice, brainstorm with team
members and try to express it in as many possible ways as you can. Let’s try to re-express -
Dynamic elements and data on the page is making automation problematic and see if you can
express it in different ways.
Related worlds - Was there any similar issue addressed in different world (or field)?
In this technique, we force our mind to find a similar or related problem in a different field and
see how they are solving (trying to solve) it. We might (will) not be able to use the solution
people in other fields are applying, but it might give us a spark which may lead us in the right
direction. Remember, with these exercises, we are exercising our mind and training it to think
differently. Sometime it might work and lead us to a solution and sometime it might not.
Whether we get solution with these exercise or not is not important – our mind is exercised and
thinks differently for a while is important. Let’s take an example - time we spend on maintaining
our automation suite is becoming an issue and we need to address that. So where can we find
similar problems (Where people need to maintain on a regular basis in order to be successful) in
other related worlds -
Random Links - Choose a random item and deliberately link it to the problem
This last 'R' is very interesting but very difficult to implement and put in practice. In this
technique, we randomly select any object, concept and try to relate it to the problem we are
solving. It’s like saying mars-rover is the solution for our unstable environment or oil leak in Gulf
of Mexico might give us clue to the memory leak in our application and see if it leads us
somewhere. It’s difficult to see the link and that's the whole point. Idea is to exercise and force
our mind to think and get that link - even if it is absurd. For Gulf of Mexico, we know their failure
mechanism failed, BP underestimated it initially, they tried one solution at a time and external
issues (Political pressure, pressure from environment, animal protection groups, Bad weather
etc) affected the whole recovery process. Now in the context of application - should there be any
notification for memory leak, should we just abort application, is there any possibility of this
application affecting other applications or being affected by other applications, what's the worst
which could happen and so on.
So to summarize, re-express the issue, find connections in related worlds, oppose all
assumptions and try to find connections with random stuff to exercise mind and generate fresh
ideas. Let’s be a bit more creative in our work and challenge (or educate) folks who says
software testing is not a creative field.
By the way - we have recently launched iCheckWebsite to look at how websites are checked and
monitored - in a different way. Do look at our short demo to see how it works.