Any activity that checks by means of actual execution whether a system or component behaves in the desired manner. This is achieved by one or more test runs in which the system is supplied with input data, known under these circumstances as test data, and the system' responses are recorded for analysis.
Tests can be categorized according to the conditions under which they are performed and the purposes they serve. Module testing (or unit testing) is performed on individual components in isolation. At the time that components are brought together to form complete subsystems or systems, integration testing is performed in order to check that the components operate together correctly. Integration testing typically pays particular attention to the interfaces between components. By contrast, system testing normally treats the complete system as a “black box” and investigates its behavior without concern for individual components or internal interfaces. Acceptance testing is normally under the control of the procurers of the system, and is designed to ensure that the system is suitable for operational use.
See also beta test, branch testing, path testing, performance testing, regression testing, statement testing, black-box testing, glass-box testing. Compare static analysis.