Some definitions of major testing models.


Software will always do what 'it was designed to do'

But we need to validate that software will always do what 'we expect it to do'

This is where testing fits in.


Testing each component for accuracy of function


Test the new changes connect and interact with the dependencies


Criteria by which the end user validates the system or solution as fit for purpose



Does the solution meet specification of metrics


By pushing the system with throughput we can learn the limitations and behaviour of the system as it fails


Testing the performance of a solution running an expected workload over an extended period of time to uncover failures. e.g. memory leaks, disk fills etc.


Quick and basic tests to provide assurance that all major functions of the solution are functioning as expected. We can consider this a high level health check of operation

End to end

These are behavioural tests that focus on scenarios rather than tests. It does this by replicating user behaviour and verifying user workflows. They can be expensive to maintain and extend which is why it is normal to have fewer but broader end to end tests and more lower level tests