Unit tests: A unit test tests an individual unit in the system in isolation. Unit tests run very quickly since they have little to no start-up costs, and almost no external dependencies. Functional tests: A functional test focuses on one piece of functionality. This usually involves interactions between different components. Integration tests: An integration test is an end-to-end test that exercises the entire stack, including any external dependencies or systems.