What is testing?
What is testing?
This is an execution of a program done in order to detect errors ("The Art of Program Testing" G. Myers, 1979).
At this stage of testing, the focus is on destructive testing that is intended to detect defects. For the first time debugging and verification are separated as various stages of software development.
Monitoring program execution in special conditions and evaluating some of its aspects based on monitoring (ANSI / IEEE standard 610.12-1990: Glossary of SE Terminology. NY: IEEE, 1987).
This is a definition of the next stage of development of the concept of testing. Here we already see an estimate-oriented approach. That is the purpose of testing is not only to identify the defect as such, but to obtain information in order to assess the quality of the product.
The following two definitions refer to a new stage - a preventive-oriented approach where the purpose of testing is to make sure that the software meets the stated requirements, and to identify defects and prevent possible failures.
Technical study of a program to get information about it from the perspective of stakeholders (S. Kaner, 1999).
Testing is a process ... aimed at identifying characteristics of an information system and demonstrating the differences between the desired and actual states (T.Koomen, M.Pol «Test Process Improvement», 1999).
Definitions by Komen and Paul explicitly include the idea of comparison. In other words, testing is a type of evaluation of a system in order to find the differences between what it should be, and what it is.
So we see that testing is inextricably linked with the concept of quality. But it is important to understand that testing does not provide quality on its own, but reduces the level of uncertainty about the quality of the system.
According to ISO 9000, the quality of an object involves the totality of its characteristics related to its ability to satisfy stated or implied needs.
In other words, we must have an object, a set of requirements to be met by the object and a degree of quality. The higher the number of requirements which the object has to meet the higher the object's quality is. Quality is ensured by jointly coordinated efforts of the whole development team, the way the development process is organized and other factors.
Testing is only one of the tools used to solve problems related to the quality of an object. The full list of measures to ensure quality includes three groups of activities:
- Preventive measures aim at preventing defects. For example, techniques, procedures, document templates.
- Identifying measures aimed at detecting flaws. For example, testing.
- Corrective measures aim at eliminating flaws. For example, the correction of errors that have been found during testing
Thus, testing is not a stand-alone activity. This is one of the ways to identify defects. In turn, detection of defects is just one of the procedures you can use to ensure quality.
In addition, testing should not be viewed as a process that can begin only after an information system has been developed. Testing requires a lot of preliminary work (planning and preparation) before the actual tests can be started.
Some people believe that testing implies only running tests, that is, the execution of a program. But this is only part of testing, and testing is not limited by it. Testing also includes planning, analysis, design, implementation and execution of testing scenarios, result checking and final actions.
The earlier testing is included in the software development process, the lower the cost of a developed product will be. The best time to start testing is when the first documents with requirements are ready.
Testing implies the presence of:
- a tested object, that is what is being tested
- testing base, that is the criteria to be met by an object
In our understanding, a testing base is a totality of criteria (requirements) that apply to the object that is being tested. Importantly, testing cannot be made if it is not known what the requirements for the tested object are. The ultimate goal of testing in a project for development or support is to identify the differences between a software product that is created and its full set of requirements.
Objects of testing facilities and the corresponding testing bases can be different. For example: