I’ve been studying recently for a Chartered Management Institute Level 5 qualification. As my time in my current role comes to an end then it’s important to make sure that the management activities and experience that I have built up in my 9 years at Nokia is accurately reflected on my C.V. in a way that future recruiters will recognise. But the good thing is that through the course I have also been introduced to some techniques which are new to me, are useful for the future and can be applied to the software testing field as much as anywhere else.
Recently I learnt about a problem solving technique called reversal. It’s nothing new I know, but it appealed to my testers mind. It appealed to the part of me who wants to see how things could be made worse, how faults could be found, and how increased risk could be identified. The sort of mind-set that can equally be applied to software testing situations.
The reversals technique is a basic information based decision making technique. It breaks problem solving down into the following activities:
Identify the situation under study.
- Consider how the situation could be made worse.
- Create as many options as possible which will make the situation worse.
- Reverse the options to identify ways of improving the situation.
As an example, consider a situation where a lack of road capacity has been identified. Using the technique, one could come up with options such as:
- Close all the motorways.
- Discourage homeworking.
- Close alternative transport mechanisms.
Then by reversing these, one could come up with solutions which could improve the situation:
- Build more motorways.
- Encourage homeworking.
- Build more alternative transport mechanisms.
A simple example I know, but you get the picture.
I think we can apply this to software testing as well. I recently read the blog post by Ilari Henrik Aegerter about What you Can Do if your Brain just Refuses to Understand and one addition I’d make to his list would be to consider some problem solving techniques. I find they help me unlock the locked parts of my brain. Reversal is one such technique.
Consider the situation where you know a bug exists but you just cannot reach the root cause. If you’ve run out of options when it comes to reproducing a bug, consider reversal. Think about what really will not cause the bug to happen, what combination of key presses or code paths that won’t help. Then reverse them. Consider a situation where you need to load test a system. What could you do that would actually make it faster? Then reverse them.
Hopefully it gives you a new perspective and another tool in the belt.