Reviews, walkthroughs, or inspections are referred to as static testing, whereas actually executing programmed code with a given set of test cases is referred to as dynamic testing.
Static testing involves verification, whereas dynamic testing involves validation.
Grey-box testing involves having knowledge of internal data structures and algorithms for purposes of designing tests, while executing those tests at the user, or black-box level. The tester is not required to have full access to the software's source code.
There are generally four recognized levels of tests: unit testing, integration testing, component interface testing, and system testing.
Also known as component testing.
Depending on the organization's expectations for software development, unit testing might include static code analysis, data-flow analysis, metrics analysis, peer code reviews, code coverage analysis and other software verification practices.
Integration testing works to expose defects in the interfaces and interaction between integrated components (modules).
Component interface testing
The practice of component interface testing can be used to check the handling of data passed between various units, or subsystem components, beyond full integration testing between those units. wcfNote: is it sub-system testing?
System testing, or end-to-end testing, tests a completely integrated system to verify that the system meets its requirements.
Operational Acceptance testing
Operational Acceptance is used to conduct operational readiness (pre-release) of a product, service or system as part of a quality management system.
Sanity testing determines whether it is reasonable to proceed with further testing.
Smoke testing consists of minimal attempts to operate the software, designed to determine whether there are any basic problems that will prevent it from working at all. Such tests can be used as build verification test.