Friday, December 10, 2010

So what is software testing?

Many years ago I had to sit a formal exam board course and examination for Foundation Level testing.  By that point I'd already been working in testing for a few years. It was a chance to “formalise” my knowledge, examine the theory, and get a shiny certification out of it.

Pretty much on the first day we were asked as an open question “what is the purpose of testing?”.  It's a good question to keep asking yourself.  Of course this means in my first two posts I've tackled "who am I" and "why are we here"

But what is the purpose of testing?  There were lots of good answers that came from around the room to this question. However it was a leading question – to get the marks from the exam board you had to answer this as “to find defects”.

I had issues with this, in fact I still do have issues with this. Partly as this adds to the idea that a software tester isn't working unless (s)he's breaking something. Not true.

My answer to this question, which I stand by today is “the purpose of software testing is to prove that the product is fit for purpose”. Of course along the way to achieving this, you're going to find errors, defects, deviations – call them what you will.

If we say our Prime Directive is to find bugs it kind of makes us out to be Captain Ahabs all going out looking to hunt down the biggest defect. It also adds to the stereotype that testers are just trying to make developers and business analysts (BA) – the people who build and design the system – look bad.

Not so. As a tester we're part of a team – it's our job to make developers and BA's look good. By showing they've delivered a product that meets it's design, is robust and usable.

When software goes live, no-one really cares that if had defects, they care that those defects are fixed and the customer won't see them, and nothing is outstanding for the customer to discover. 

Testing is there so that the customer doesn't lose faith in the software they purchased and in those that made it. It helps to ensure that the customer will want to do business again with us.

This is what testing ensures in any piece of software ...  This is "why we are here".

At least from a software engineering point of view.


  1. "the purpose of software testing is to prove that the product is fit for purpose"

    You still stand by this definition?
    Ajay Balamurugadas

  2. Yeah - I do think it covers what testing is there for.

    The role of testing is to prove that the product is ready for it's customers, and meets what it was intended to do.

    Along the way you *are* going to find defects. But at the end of the day, testing is not a negative activity. It's about improving the quality of what you give your customers.

    As I used to tell one of my developers, "It's my job to make sure that when this ships, you look good".

  3. "It's my job to make sure that when this ships, you look good".

    I really like that... I'm gonna steal the line if ya dont mind. I really appreciate the mindset it puts not only developers but members of the entire project team.

    From my prerogative, the tester is the only true advocate of the developed system. The tester is the system/software's voice to the outside world. Testers announce where the "boo boo" is so the developers can either apply a band-aid or perform surgery. Looking at things from this perspective makes me feel important, that I have a great responsibility. Its like the animal doctor trying to figure what is wrong with the animal. Animals cannot speak, similar to software - but you can (sometimes) see or identify the symptoms if a problem and attempt to identify the root cause.