Friday, 11 May 2012

The Importance of Worth

I am going to start this article with a reflection of when we were children.

I want you to imagine that day in school when you was a very young child and you produced your first ever painting.  You took all day to produce it, making careful use of colour and getting exactly how you wanted it to look.  At the end of the day you took your painting home to show your parents.  You were so excited and full of joy and expectations of what your parents would say about all the hard work you had done.  You ran into the living room with your painting in your hand and shouted out “Look Look, what I have done today”.  Your parents come over and take great interest in what you have produced, commenting about how clever you are and how wonderful you are.  They say how proud they are of you and they place your artwork on the fridge in the kitchen where everyone can see it.

Now if you have recalled this scene in your mind and many of you will do so.  How are you feeling?  Did the thought make you happy?  Did you feel pride in what you did?  Are you smiling at this thought?

So now let us zoom toward to present date…

You spend days/weeks/months (Cross out which is applicable) creating test scripts based upon assumptions, writing them up in whatever test case management system you have been told to use.  You put all your effort and thinking into being creative creating these step by step instructions for ‘testing’ the system.

After you have done this you then get ready to start testing using the work you have spent so long creating.  Once you start testing you realise that most of what you have already done upfront, all that effort is not going to be used.   So all these test scripts which you sweated over creating and completing in step by step precise detail, get ignored, never see the light of day, the labour of your work, forgotten and not commented on.

How often when we are told we must follow a scripted testing approach does this happen?  If we are honest it does happen a lot, I know to me in the past over half the scripts I created never got reviewed or used.  Half of the work I did was just forgotten about and left to gather dust in the test case repository.  I should make it clear that I am not against test scripting and that with the correct context they have value but indiscriminatingly forcing people to do something without experiencing it is in my opinion is such a stupid and pointless exercise.

Let us step back to our story from earlier.

Now imagine as a child you rush home to your parents with your painting in hand and once at home your parents take your painting and without saying a word lock it in a drawer and carry on with what they were doing.  How would you feel now?  Place yourself into the mind of your child self and imagine how would you feel?  Upset?  Sad?  Hurt?  Worthless?

So why when we do something as creative as testing do we do this?  We create so much in the way of test scripts but never get the chance to be proud of what we have done, what we have achieved.  We lock it away never to be used again, never to be talked about.  Is it any wonder that so many testers feel sad, unhappy and worthless in what we are being asked to do.  It is a key aspect of human nature that we want to show people what we have done, what we feel proud about, we need feedback to know that the tasks we are performing are worthwhile.  We need confirmation that we are valuable, needed and wanted.  If we continue to carry on with this path of insisting on doing pointless and useless tasks in which we then ignore or and just throw it away then we deserve to feel the way we do.

There are alternatives, using the exploratory testing approach can help prevent this waste; based upon only doing what is necessary at that time, using context.  Session based testing can make sure feedback on what you are doing becomes a key element of the testing approach.

Let us start to feel that we are important to software development and that testers are a worthy addition to this.

Some useful reading:

Session Based Test Management

What is Exploratory Testing 

Exploratory Testing Resources

Principles of Context Driven

Friday, 4 May 2012

Great Expectations

I recently spent some time running exploratory testing workshops in India and found I had some free time to start to reduce the mountain of books I have on my Kindle. I managed to read two books by Dan Ariely

Predictably Irrational, Revised andExpanded Edition: The Hidden Forces That Shape Our Decisions

The Upside of Irrationality: The Unexpected Benefits of Defying Logic at Work and at Home

Within these books there are some great insights into how we think we behave and how we actually behave, Dan calls the work he does behavioural economics.  There are many interesting article he talks about in his books and most of them I can relate to software testing.  The one I want to pick up on for this blog article is how we can be easily influenced into following a certain path and making us act in a predictably way by manipulating our expectations.

The worlds of advertising and marketing have very clever ways in manipulating us into buying their products.  One of the ways they can do this is to ‘Prime’ us, by doing this they make us think of a subject or a product so that we unconsciously act in a way that makes us want that product and only that product.

For example if right now I asked you to come with words that are associated with being elderly, what words would you come up with?  If for the next 10 minutes I said think about this and you came up with a list of positive and negative words for elderly.  After you have done this I then ask you to perform some tasks.  When you perform this tasks you will be slower, take more time and notice little aches and pains you have.  All this is from just thinking about the term elderly.   The use of association has a very powerful effect on our unconsciousness.  Taking this a stage further if you have been primed your expectations have been manipulated so that you tend to have a bias towards the initial priming.  For example if you are told beforehand that a certain type of coffee is unique, expensive, has a secret ingredient and tastes wonderful.  You will at some point have to try it and once you do because of all the priming you have to like it (If you like coffee that is – replace coffee with chocolate, beer or whatever your favourite thing is) your expectations have forced you to enjoy it.  Even if your taste buds are saying it tastes vile, if you have paid a lot of money for it and have been told many times how wonderful it is it.  You will tell yourself it is wonderful and amazing.  Priming your conscious is a powerful bias that can override many other indicators.

Now what if I tell you that the secret ingredient is elephant dung now you have this knowledge your mind will be changed, what if I told you this before you decided to buy the product, would you still buy the product?

So how does all of this relate to testing?

Imagine if all you are doing when ‘testing’ is validating the requirements, your expectations have been primed and managed.  If you keep hearing that the software is bad by the development teams, that the model being used is poor. Then these all force you to be primed and you automatically assume the product is poor and that the requirements are what we should expect the product to match.  Can you see how dangerous this would be?  You are priming yourself to only confirm what the requirements are or what people are saying. 

One of the ways to help resolve this is by using an exploratory testing approach, which can help to reduce your expectations and assumptions of the product under test.  It tries to achieve this by the use of models, oracles, and heuristics to ensure that your beliefs, biases and expectations are constantly being challenged as you are testing. 

Michael Bolton at Developsense has recently wrote some articles on oracles and heuristics on his blog page.