Different kinds of tests

Hello everybody,

Today I want to write a really short description of different kind of tests, which can be perfomed by code.

  • Unit test: Specify and test one point of the interface of single method of a class. This should have a very small and well described scope. Complicated dependencies and activities to the outside staff are stubbed or mocked.

  • Integration test: Test the correct co-operation of multiple subsystems. There is whole ecosystem here, from testing integration between two classes, to testing integration with the production environment.

  • Smoke test (AKA Load test, AKA Sanity check): A simple integration test where we just check that when the system under test is under pressure it works normally and does not blow up. It similar with electronics, power up circuit: if it smokes, then test failed.

  • Regression test: A test that was written after fixing a bug. It validates that this specific bug will not occur again. The full name is "non-regression test". It can also be a test made prior to changing an application to remain assured that application provides the same result.

  • Acceptance test: Test that a feature or use case is properly implemented. It is similar to an integration test, but with a focus on the use case to provide rather than on the components involved.

  • System test: Tests a system as a black box. Dependencies from other systems and devices are often mocked or stubbed during the test (in other case it would be more of an integration test).

  • Pre-flight check: Tests that are repeated in a production-like environment, to alleviate the 'works on my machine' syndrome. Often this is realized by doing an acceptance or smoke test in a production similar environment

Add comment