The following is a work in progress. It reflects my half-baked sense of the common usage of the following terms.
Test a really small part of the system in isolation.
- test a single method or function
- stub or mock-out all complex dependencies
- take a programmer's perspective (not an end-user's perspective)
Test that individual parts work together. Do not cross network boundaries.
Test that individual parts work together. Do cross network boundaries.
The simplest integration or end-to-end test. Does the system explode?
Will it actually work when a user tries it? Take a user's perspective.
Test whether a new feature introduces a bug.
Some of these sources are more authoritative than others are.
- StackOverflow: What is a unit test, integration test, smoke test, regression test?
- StackOverFlow: Unit tests vs functional tests
- Google Testing Blog: Test sizes
- Martin Fowler: Microservice Testing Strategies
- Software Testing Help: Types of software testing
- Testing Excellence: Types of software testing