Every now and then in my daily work I recall wrong definitions of software testing and it’s purpose which Glenford J. Myers used to prologue the chapter “The Psychology of Testing” test purposein his great book The Art Of Software testing . Here are those bad definitions:

“Testing is the process of demonstrating that errors are not present.”

“The purpose of testing is to show that a program performs its intended functions correctly.”

“Testing is the process of establishing confidence that a program does what it is supposed to do.”

I met lot of software testers, not to mention software developers or project leaders and product managers which would say the similar definition if someone ask them to define software testing. When young and inexperienced tester step into a project to do the testing it is very likely she would get an impression that this would be her job – to prove that software under test has no flaws and to confirm that it works correctly and as expected.

There is at least one wrong thing in that assumption. The wrong thing with this assumption is that it considers software testing to be a burden not a value to the project. Instead of trying to prove the program works perfectly, testers should focus on finding defects in the program in order to improve it. They should work on finding as many defect as they can by presuming there are lot of defects which ought to be discovered.

What software testing is?

So, what is the good definition of software testing? We can start with this one, borrowed from the same book we quoted already, “Testing is the process of executing a program with the intent of finding errors.” The subtle difference in approach leaves us so much more space in our field of operation as software testers. But, if we step even more further and, with another great author – Cem Kaner, define software testing “as process of finding and exposing quality related information to clients”, software testing becomes an activity which brings value to the product as a whole.

If we want software testers to do that – expose quality information – then we want those guys to do much harder work than pure bug hunting is. They are key people on the project for finding problems which can strike the business based on the software under test. Pointing to things which can be changed to improve user experience and usability, becoming to know the product and it’s intended users and purpose are some aspects of the job software testers should do on daily basis. Doing that, testers are not acting as easily replaced mechanical dummies which are there only to prove product is fine, but as people in charge to discover how to put things in order and contribute to product ‘s fineness.