| • |
Unit Testing: During unit-testing the developer should always make sure the unit is tested in isolation, and that it is the only possible point of failure. In unit testing communicating components and called components should be replaced with stubs, simulators, or trusted components. Calling components should be replaced with drivers or trusted super-components. |
| • |
Component Testing: During component testing the same scenarios are tested as during unit testing but all stubs and simulators are replaced with the real thing. |
| • |
Integration Testing: Integration testing identifies problems that occur when components are combined. Component A and B are two components for which A calls B. Figure 2 illustrates integration testing for Components A and B: |
| • |
Test Suite A contains the component level tests of component A. |
| • |
Test Suite B consits the component level tests of component B. |
| • |
Tab are the tests in A’s suite that cause A to call B. |
| • |
Tsab are the tests in B's suite for which it would be possible to replace the code that is written to test component B by a call from Component A as input for the tests. | When you combine the test suites Tsab and Tab you will have a set of component tests that you can use after you modify Component B. When you modify Component B or A, you will be able to verify that will still function correctly together. |
| |
| • |
System Testing: In system testing the tester will verify if the developed system or subsystems still meet the requirements that were set in the functional and quality specifications. |
| • |
Acceptance Testing: In acceptance testing the user and system manager will verify if the developed system still meets the requirements that were set in the functional and quality specifications. This level of testing is done in an environment that simulates the operational environment in the greatest possible extent. |
| • |
Release Testing: Prior to a public release of a program you must ensure that all bugs that were intended to be fixed were actually fixed. In release testing following aspects will be verified:
| • |
A mixture of previously failed-and-fixed tests and tests that have always passed; |
| • |
Virus checking of the final installation package. Too many cases of distribution of viruses have been reported to not take this additional precaution. |
| • |
A comparison of all features actually working reliably with prepared documentation. It is crucial that the documentation reflects all design decisions made during development and testing. | |