04. November 2015
You might agree with me if I say, that the most important part of our daily life is to be sure that the things on which we are counting are working correctly. Whether it is our car, which we use to get to work, or our mobile phone. All of these are expected to just do what they are supposed to do. You know what I mean.
Let’s talk about quality. What is it? It may mean different things to different people, but what all statements about quality have in common is that something has to meet our expectations and requirements. In the IT world, the quality of the software product reflects how well the product was created, which means how fully it conforms to the given functional and design requirements. Also it reflects robustness and maintainability of the product.
Software Testing is the activity of checking if the product meets all given specifications and is defect-free or “bug”-free. Due to software bugs a lot of a funny things have happened even in big and expensive projects. Ask yourself if you have ever noticed one of them? Software bugs can not only cause unsatisfied users, but also huge monetary losses. History is full of such examples. Like the Mars Climate Orbiter that was lost due to a software mistake: While the software that was calculating the necessary power to hold the system in orbit worked in pounds, another software part that relied on the data assumed the data was measured in newtons (a metric unit). As a result, the orbiter was destroyed in Mars' atmosphere.
As you see, testing is about identifying bugs, reporting them and making sure that they get fixed. Usually it depends on the budget how many testing activities can be held and, as a result, how many bugs will be found. There is a common statement, that testing may be done by anyone. But if we delve deep into the process, we’ll see, that testing requires a lot of analytical, as well as technical skills. It needs attentiveness and accuracy, persistence and knowledge of testing approaches, perfectionism and the ability to predict risks.
A development team should avoid testing their own software product, (except Unit testing – which is their responsibility) while the tester will check it with a critical look. A developer may be biased with the fact that he has developed it, so he may not test some areas as he’s confident enough that he has developed it bug-free. He may not think out of the box, or about all possible test scenarios that can break the system. Software should be tested in a neutral way to have unbiased testing results and this can only be done by a third person. A developer is usually working under high pressures to implement requirements ASAP. As a result quality is compromised sometimes. The first activity to improve this process is identifying the problem that occurred in the project. Solving problems and finding solutions in order to avoid them in the future is the primary goal of testing.
To sum it up: testing is not just about validating that the system is doing what it is supposed to do, but also assuring that the system is not performing in ways it is not supposed to. That’s why it is always better to have a QA in your team, who will look at things differently from another point of view, with a mountain of documentation and a specific test approach.
Why Developers Can't Be Good Testers
Developers Are Not Good Testers