Types of Software Testing

The following is a work in progress. It reflects my half-baked sense of the common usage of the following terms.

Unit Tests

Test a really small part of the system in isolation.

Integration Tests

Test that individual parts work together. Do not cross network boundaries.

End-to-End Tests

Test that individual parts work together. Do cross network boundaries.

Smoke Tests

The simplest integration or end-to-end test. Does the system explode?

Functional Tests

Will it actually work when a user tries it? Take a user's perspective.

Regression Tests

Test whether a new feature introduces a bug.

Some Sources

Some of these sources are more authoritative than others are.