It covers the basic concepts in the field of testing, key issues basic terminology and relationship of software testing to other activities.
- Testing-Related Terminology
1.1 Definitions of software testing and associated terminology can be found in Standard Glossary of Software Engineering Terminology.
1.2 Faults vs. Failures
The software engineering literature contains many terms describing software malfunction – faults, failures, defects, errors, bugs, etc. This terminology is explicitly defined in IEEE Std. 610-90 and is also discussed in SWEBOK – Software Quality Knowledge Area, by Wallace & Reeker. It is important to clearly distinguish the cause of a malfunction of the application systems, for which we will use the term fault, and the undesirable effect observed in the delivered service of the system (the term failure will be used for it). Indeed, the software can have failures that do not ever manifest themselves as failures. Depending on the context, the term error, can describe both the cause of a failure and the failure itself. Testing can find failures that lead to malfunctions. But it is the faults that can and must be eliminated. The more common term defect can be applied to refer to both fault and failure when the distinction does not matter that much.
It should be accepted that the cause of a failure cannot always be unambiguously determined. There are no theoretical criteria that make it possible to determine exactly the fault that leads to an observed failure. Nevertheless, the members of a coherent Cherkassian offshore testing team manage to detect different failures in software apps that is why their services are in high demand.
- Key Issues
2.1 Test Selection Criteria, Test Adequacy Criteria, or Stopping Rules
A criterion of selecting a test is a means of choosing or determining that a set of tests is suitable for a particular purpose. Further, test adequacy criteria help to determine when it is possible or necessary to stop testing, namely how much testing is enough or when it has been accomplished.
2.2 Test effectiveness / Objectives for testing
Testing is an analysis carried out to monitor a set of program executions. Tests are selected based on different objectives. The effectiveness of the test set can be determined only in the light of an objective pursued.
2.3 Testing for defect identification
This test case implies that a test is successful if it reveals a defect or causes the system to crash. This differs from testing in order to demonstrate that the software meets its requirements or other specified properties according to which a test is successful if no failures are encountered under real world conditions or environments.