The system is tested in steps, in line with the planned build and release strategies, from individual units of code through integrated subsystems to the deployed releases and to the final system. Testing proceeds through various physical levels of the application development lifecycle. Each completed level represents a milestone on the project plan and each stage represents a known level of physical integration and quality. These stages of integration are known as test levels. Levels of testing include the following:
1. Unit Test – Verifies the program specifications to the internal logic of the program or module and validates the logic.
2. Integration Test – Verifies proper execution of application components including interfaces. Communication between modules within the sub-system is tested in a controlled and isolated environment within the project. String testing is part of the Integration testing level/phase.
3. String/Integration testing – is both the detection as well as the correction of programming/code generation problems. Once a series of components or unit, which must eventually work or communicate with each other have been coded and unit tested, performance of an initial “string” test is conducted. This “stringing” together of the components or units for execution as a unit, tends to be a somewhat informal process directed at finding any communication or parameter passing problems which may not yet have been detected. Since different programmers may have worked on each component or module, or different analysts may have worked on separate action diagrams (for code generation), the possibility exists that problems such as input/output field formatting, switch/indicator setting, or expected status updating may not be consistent across modules. The goal is detection of these coding errors before a formal system test is performed. Adequate data must be created to demonstrate that proper field formatting, accurate parameter passing, and correct event triggering is occurring. A “sign-off” should not be given until the entirety of the connected/integrated units or components are working as a smooth, seamless, and error free module.
4. System Test – Verifies proper execution of the entire application components including interfaces to other applications. Both functional and structural types of tests are performed to verify that the system is functionally and operationally sound.
5. System Integration Test – Verifies the integration of all applications, including interfaces internal and external to the organization, with their hardware, software and infrastructure components in a production-like environment.
6. User Acceptance Test – Verifies that the system meets user requirements as specified. It simulates the user environment and emphasizes security, documentation and regression tests.
7. Operability Test – Verifies that the application can operate in the production environment. Operability tests are performed after, or concurrent with User Acceptance Tests.