|
|
|
Software Testing
History
In 1961, a simple software error caused the destruction of a Mariner payload on board an Atlas booster. This simple but expensive error led the Air Force to mandate independent verification on all future mission-critical space launches. The methodology of verification and validation evolved from that requirement.
Historically, testing was considered a separate phase of the software life cycle that followed coding. Modern software life cycle models eschew that view in favor of iterative testing throughout the development life cycle.
Methods
Several testing methods are available to expose bugs. Testing is used to show the presence of bugs, it can never prove their absence. Testing can be broken down into 2 broad classifications: functional and structural. A variety of static and dynamic test methodologies are available.
Methodologies include:
- black-box
- white-box
- code reading
- integration testing
- system testing
Learn
Testing can be used to show the presence of bugs, but never their absence. Testing is a powerful risk management tool because it provides early error detection and correction benefits, and technical insight into the true nature of a system's performance. Typically, a program will use several testing methodologies to address different aspects of the software product. Certification considerations often dictate the verification methods to be used.
Evaluate
Code Reading
Code reading is also know as code reviews. It is a systematic procedure for reading and understanding the operation of a program. Studies have shown that code reading detects more errors at a lower cost than any other method. Studies also show that 75% of the bugs discovered by a second independent reviewer will new ones.
Black-box Testing
This is a functional test, usually based upon documented program requirements. Test cases are written that stimulate the system to provide some expected outputs. The outputs are then measured to determine pass/fail status.
White-Box Testing
This is a structural test also known as unit-testing. Unit-testing often occurs in parallel with coding. Unit testing verifies the logic, computations, functionality, and error handling of a unit. Unit tests derived from software requirements are a very effective strategy for early error detection.
Integration Testing
Integration testing verifies the integrity of a collection of logically related units, checks external and internal interfaces, external input/output.
System Testing
System testing is performed on the complete system to verify functional and operational requirements.
|
|
|