- This line was added.
- This line was removed.
- Formatting was changed.
Unit testing is a method by which individual units of source code are tested to determine if they are fit for use. A unit is the smallest testable part of an application.
The same as unit testing except that all stubs and simulators are replaced with the real thing.
This is a verification activity; did we build the thing right? Does the software meet the business requirements? Take the business requirements and test all of it good and thorougly from a functional viewpoint.
Integration testing (sometimes called Integration and Testing, abbreviated "I&T") is the phase in software testing in which individual software modules are combined and tested as a group. It occurs after unit testing and before validation testing. Integration testing takes as its input modules that have been unit tested, groups them in larger aggregates, applies tests defined in an integration test plan to those aggregates, and delivers as its output the integrated system ready for system testing.
System testing specifically goes after behaviors and bugs that are properties of the entire system as distinct from properties attributable to components (unless, of course, the component in question is the entire system). Examples of system testing issues: resource loss bugs, throughput bugs, performance, security, recovery, transaction synchronization bugs (often misnamed "timing bugs").
This is a validation activity; did we build the right thing? Is this what the customer really needs? This is usually done in cooperation with the customer, or by an internal customer proxy (product owner). The "paying" customer does the testing he likes to do so that he can accept the product delivered. It depends on the customer but usually the tests are not as thorough as the functional-testing especially if it is an in-house project because the stakeholders review and trust the test results done in earlier test phases.
Release Testing is about seeing if the new or changed system will work in the existing business environment. Mainly this means the technical environment, and checks concerns such as:
- Does it affect any other systems running on the hardware?
- Is it compatible with other systems?
- Does it have acceptable performance under load?