Here are some common reasons given for automated testing:
- Reduce bugs
- Confirm nothing breaks when platform and dependencies are updated.
- Provide documentation
- Improve application design
- Expose design flaws; “architectural pushback” (AiA)
- Defer design decisions (Metz)
- Write decoupled code (Martin)
- Support refactoring
- Supports increasing abstractions (Metz)
- Confidence to drastically evolve the app (AiA)
- Clean messy code so you aren’t slowed down by it anymore (Martin)
- In all of the above, the ultimate goal is to reduce costs of time and money (Metz)
Sources: