Implementation and Unit Tests
1 Product Testing and Acceptance
Program testing can be used to show the presence of bugs, but never to show their absence!
Source: Esdger Dijkstra (Dutch Computer Scientist, Turing Award 1972. 1930-2002)
No matter how thoroughly we think we have tested software – bugs may always be undetected. The goal is to use a systematic approach to verify all requirements have been met with working software.
1.1 Definitions
Testing – the process of verifying that a design, system, or product conforms to specifications
- Verifies that all performance requirements are met
- Validates user interface and its relationship to functional capabilities and product performance
- Verifies external interface protocols and information exchange are conducted in accordance with interface specifications
- Exercises event sequences which may identify performance deficiencies or out-of-spec/unacceptable product behavior (lockups, database integrity issues, race conditions, memory leaks, etc.)
- Race Condition - a flaw in a system or process whereby the output of the process is unexpectedly and critically dependent on the sequence or timing of other events.
- Memory Leak - unintentional memory consumption by a computer program where the program fails to release memory when no longer needed
1.2 Unit Testing
- The goal of unit testing is to isolate each component of a product, system, or program and show that the performance of these individual components is correct.
- Typically performed by developers of the individual unit.
- Test Objective(s): demonstrate, validate, and measure functional and performance characteristics of a system or product