What is software testing?
Software testing is any activity aimed at detecting errors in software. Testing is conducted to find the mistakes in some programs and thus improve their reliability and enhance their quality. When we test a program, we need to recoup the costs of testing, which certainly increases this program’s cost. This can be done only by improving the reliability of the program for which testing is conducted. Improving reliability means that mistakes made in the development process will be corrected. After testing, you can’t guarantee the absence of errors; you can only talk about a certain level of confidence in a system’s correctness.
Every error should be carefully examined to understand why it has emerged and what should be done to prevent or detect it earlier. A test is considered to be good when it detects some errors. If no errors are detected, the test is deemed to be unsuccessful.
What is an error (bug)?
Let’s now investigate an error (or a bug) to clarify what we should detect. A program has a bug when its behavior does not match its documentation. But I must admit that programs are often written better than documented. And there are not fewer but even more errors in documentation than in programs. Also, documentation usually describes “standard” work. For example, in the documentation, it is written: ‘press attention and type.’ The user accidentally presses a button twice, and the system breaks down. Is it an error or not? Of course, it is.
It turns out that in any case, when a user doesn’t get what he reasonably expects from some product, we believe that there is an error. It’s reasonable to expect that the system detects it and takes appropriate action if you enter incorrect data into it. Also, it’s good to hope that in some unexpected situations, the scenario behaves with dignity, minimizes all unpleasant consequences, and survives.
So, testing is a creative process aimed at detecting errors. Testing software products does not mean just checking some programs. Documentation is also tested, including project documentation and ‘output’.
Testing of the program itself should be top-down when finding major, global errors, and only then move on to ‘catching the fleas.’