Functional or ‘black
box’ testing
which is not concerned with the internal logic or structure of the software,
only evaluating that the expected outputs arise from specified inputs and
conditions.
Structural or ‘white
box’
testing where the correct functioning of internal logic is investigated.
This requires knowledge of the software design.
Unit testing
where the individual software units are tested in isolation. Structural
testing is usually performed at this level.
Integration testing
which is either the progressive testing of incrementally assembled software
units or that of interfaced systems. Usually performed as functional testing
at this level.
System testing
in which functional testing of the whole system is performed. This may
require simulated data or interfaces depending on the complexity and size of
the system.
Acceptance testing
to establish whether the customer’s acceptance criteria have been met and
the system can be handed over to the customer.
Challenge testing
involving boundary conditions, invalid inputs, high loadings or security
challenges to assess the system’s behaviour when operating at or outside its
specified requirements.
Regression testing
performed after a change has been implemented to confirm that unmodified
areas of software continue to function correctly.
Verification testing
to provide objective evidence that the system requirements have been met.
Validation testing
to provide documented evidence which gives a high degree of assurance that a
system will consistently meet its pre-determined specifications.
Qualification
in regulated industries – Installation Qualification (IQ) in all
environments to confirm correct installations, Operational Qualification (OQ)
in a test environment and Performance Qualification (PQ) in the live
environment.