Table of Contents
Test automation
Test automation is running tests programmatically rather than manually. A program verifies that features work instead of a person clicking through an application. Tests run on every change and give pass/fail results within minutes.
Manual testing does not scale. A codebase with a thousand features cannot be retested manually on every change. Without automation, testing is deferred to a release cycle and bugs are discovered late in the process.
Automated tests form a pyramid: unit tests at the base (fast, many), integration tests in the middle (verify components work together), and end-to-end tests at the top (verify the whole system from the user perspective). Running this suite in a CI/CD pipeline catches regressions immediately and provides a precise record of expected behaviour for new developers.
The pyramid shows the volume and speed tradeoff: many fast unit tests at the base, fewer slower integration tests, and fewer still slow end-to-end tests at the top.
/\
/ \ E2E tests (slow, few)
/ \ "Click button, verify checkout succeeds"
/------\
/ \ Integration tests (medium, some)
/ \ "Database saves order, email sends"
/------------\
/ \ Unit tests (fast, many)
/ \ "calculateTotal() returns correct sum"
/------------------\
