Software Test Management involves planning and monitoring the software testing efforts at the various life cycle phases or testing levels. Unit testing is planned and accomplished by the developers. Integration testing involves testing the combinations of program units and their interfaces. Integration testing is planned during the design phase and accomplished with an appropriate balance of developers with design knowledge and independent testers with minimal design biases. Systems testing involves testing the entire system to verify that requirements are met including specified function, quality, and performance characteristics.
System testing is planned during requirements analysis and accomplished by independent testers.
Acceptance testing involves testing the system to ensure that it is ready for delivery and use. Acceptance testing is planned during requirements analysis and accomplished or witnessed by intended system users. The effectiveness of the various levels of testing is monitored by collecting information about the types of defects found and the phase at which the defect was entered into the software. Testing coverage is investigated to discern the amount of code exercised and the requirements tested. Maintenance and rework of software consumes significant resources in many organizations.