What is Software Testing?
Software testing is, in general, the actions performed to gather information about a software application, which is then used to determine if it is fit for public or widespread use.
It is, in the simplest terms, a tester asking a product questions, and in turn getting answers. It is based on these answers that the tester asks further questions, and gets further answers.
That’s it. That’s the whole of what software testing is, but just saying that does not come even close to what the software tester actually does or needs to know to be effective.
The ways that we ask those questions, the techniques, are broad and varied.
Software testers use a variety of words to describe what it is they do. These words are:
Verification: we verify that a product is working the way that it should ("should" means that there is some way to actually verify that the product is behaving the way that it was designed).
Spotting Errors: we look to see if we can "trip up" the application. This is often referred to as "see if you can break it", but that’s only part of the focus. There is also seeing how the application deals with errors. If we do something deliberately wrong, will the program tell us that? If so, will it tell us in ways that are meaningful?
Delivering Value: We can verify that the system is doing what it was designed to do, and we can see the way the program deals with how we try to break it. Outside of that, an even more important area to consider is "does this really meet the need of our customers?" If we make a product that does what the design documents say it should do, and if we see that the program responds well if we try to "behave badly" while testing it, does any of that matter if our customers ultimately hate using the end product?