End-to-end tests are very important for complex distributed systems. The smoke test we wrote for Delinkcious is one example of an end-to-end test, but there are several other categories. End-to-end tests often run against a dedicated environment such as a staging environment, but in some cases they run against the production environment itself (with a lot of attention). Since end-to-end tests typically take a long time to run and may be slow and expansive to set up, it is not common to run them for every commit. Instead, it is common to run them periodically (every night, every weekend, or every month) or ad hoc (for example, before an important release). There are several categories of end-to-end tests.
We will explore some of the most important categories in the following sections, such as the following:
- Acceptance testing
- Regression testing
- Performance testing...