An Overview of Common System and Software Testing Pitfalls
1.1 What Is Testing?
Testing is the activity of executing a system, subsystem, or component under specific preconditions (for example, pretest mode, states, stored data, and external conditions) with specific inputs so that its actual behavior (outputs and postconditions) can be compared with its required or expected behavior.
Testing differs from other verification and validation methods (for example, analysis, demonstration, and inspection) in that it is a dynamic, as opposed to a static, analysis method that involves the actual execution of the thing being tested.
Testing has the following goals:
Primary goal:
Enable the system under test (SUT) to be improved by:
- “Breaking” it (that is, by causing faults and failures)
- Exposing its defects so that they can be fixed
Secondary goals:
Provide adequate confidence based on sufficient objective evidence regarding the SUT’s:
Quality
A system’s quality is not just its lack of defects or its correctness (in terms of meeting its requirements). A system must also have the necessary levels of relevant quality characteristics and attributes; for example, availability, capacity, extensibility, maintainability, performance, portability, reliability, robustness, safety, security, and usability.
- Fitness for purpose
- Readiness for shipping, deployment, or being placed into operation