I remember hearing from a friend one day that they just ran a marathon. A monumental achievement for them considering that only a tiny fraction of people will ever run that distance in their lifetime.
But running a marathon isn’t just a quick decision that you can make on a whim one day, put on a pair of running shoes the next and then run the 26.2 miles.
I mean, I guess you could, but it probably won’t end well.
Having run two marathons myself. I know the months of preparation required to withstand the punishment that not only your body will go through but also the mindset required to not give up when everything hurts.
Not to mention thinking about all the potential variables that may go wrong in a race,
- What if suffer from crump?
- Can I get water on the course when I need it?
- What if I lose a shoe?
Ok, the last one is unlikely, but I always have the fear that my shoe will come off during a race.
Running is more than the primitive act that we may associate with.
It is a skill that is built up and strengthen over time with a dedication to improvement and while anyone can run. Not everyone can, or is interested in putting the effort in to be a marathon runner.
But what does this have to do with testing?
If I ask you to think about testing and explain what you think the activity involves. It’s likely that you will respond with ‘Making sure the software works’.
I don’t think that can be disagreed with. As software testers, that is broadly what we spend our time doing.
But if I asked you to think about that response and name an activity that best represents it. I am almost sure that you will respond with something like ‘Doing checks’.
That is not testing… although it is a part of it.
Testing v checking
When I say things like ‘checking is not testing’, I mean that checking on its own is not representative of testing.
I’m sure that if you gave someone on a software development project (other than the developer), a check-list of things they need to ensure are working prior to release. They will breeze through it in no time.
But if you asked that same person to test the system. To explore it, uncover as many bugs as possible, design and execute test cases and test it in different scenarios.
Knowing nothing about testing. It’s likely they wouldn’t be able to do it. Or do it in a way that would leave bugs which aren’t easily discoverable in the system for the end-users to encounter.
So what is testing?
From a very high-level, software testing is many things, but if I had to choose one activity that would best describe it, I would say that software testing a learning activity.
- Learning how the system works the more you use it.
- Finding its flaws.
- Exploring its potential.
These are just a few of the activities that are carried out when you test a system. These take time and effort to complete.
But none of the answers related to the quality of a piece of software can be answered by checking alone.
Who can learn to test?
So if not everyone can test, who can learn?
Well, anyone can! But the important thing is that the person has to be interested and willing to learn.