How would you define software testing?

In short, software testing is the art of torturing programs until they reveal their defects.


In my opinion, software testing has many MANY different definitions depending on who you speak to and the level of software testing you are trying to encapsulate in your response.

In the first of a series of blog posts on this topic. I want to break down the various areas of software testing for you so that can impress your friends at the next pub quiz when you inevitably get asked.

I had no clue in the begining

My introduction to the software testing came through the process of completing a series of user scenarios on mobile phones with a paired Bluetooth device. Checking whether or not I could complete task X, or maybe task Y would work instead?

If the answer was a confirmatory yes to any of these questions then the test matrix was updated with a big green tick. But if it was a no, then it was the recipient of a red cross.

Was that software testing?

If we take a look at software testing definition provided by Wikipedia, it states:

Software testing is an investigation conducted to provide stakeholders with information about the quality of the software product or service under test.

So as my goal in that first introduction was to gather information about how something performed under various conditions. I can say that by the Wikipedia definition, what I was doing was software testing

Just not the kind of software testing that has formed my overall definition.

Software testing is not just one thing

When most people think of software testing the answer that they form is normally an activity associated with checking for defects or making sure the features of your software are functioning. While partially true, there is much more to it.

As my career progress and I received more exposure to the elements that fed into software testing. I learnt that the activities for a tester usually include:

  • Reviewing requirement/specification documents.
  • Designing test cases based on software requirements.
  • Test setup and execution.
  • Reviewing the results of your tests.
  • Raising bug reports.
  • Reporting your test findings.

Also, depending on the type of software testing completed (functional, non-functional, unit testing, stress testing, security testing to name a few), there is likely to be additional tasks as well.

This is not, by all means, an exhaustive list of the software testing activities. But you get the idea.

So to say software testing can be summed up simply by the act of making sure that a piece of software works is like saying the activity of walking down the road can be summed up by trying to not fall over.

It is only a snippet of the overall process.

So if it’s not that, what is it?

The question about software testings definition was recently put to Micheal Bolton on Quora. Mr Bolton is a Consultant and Co-Author of Rapid Software Testing.

His reply was:

Software testing is the process of learning about a software product through exploration and experimentation, which includes to some degree questioning, studying, modeling, observation, inference, etc. A primary motivator and a key focus for testing is discovering problems that threaten the value of the product, or the on-time, successful completion of development work.

I find that definition impossible to argue with.

It is a process of learning about how the software works, uncovering defects in the system and providing stakeholders with the required information so that a decision of whether to release can be made or not.

And part of that process is to execute tests to uncover defects, but as we have seen, it includes many other tasks that feed into this objective.

So to sum up. If I was to define software testing in one sectence, it would be something like:

The activity of investigating a piece of software in such a way that defects are exposed through the process of executing tests and information is fed back to the key stakeholders in a way that a judgment can be made about the softwares overall quality.

Do you agree with this definition? Let me know.

Posted by Kevin Tuck

Kevin Tuck is an ISTQB qualified software tester with nearly a decade of professional experience. Well versed in creating versatile and effective testing strategies. He offers a variety of collaborative software testing services. From managing your testing strategy, creating valuable automation assets, or serving as an additional resource.

Leave a Reply