Practices
Automated Testing
Checks that run on every change without anyone working through a script by hand, so a system can keep changing over the years with less risk of breaking what already works.
Part of Quality & Security
Automated testing means executable checks that verify a system's behaviour without a person working through a script. They run in the build pipeline after every change.
What it gives a team
Tests catch some bugs, and their larger value shows up in maintenance. A team with good coverage can refactor, upgrade a framework or add a feature and learn quickly whether existing behaviour still works. Without it, each change needs manual retesting, and teams start avoiding changes they should make. Skipping tests to meet a launch date usually makes every later change cost more.
The three layers
Unit tests are fast checks of individual functions and classes, so there can be many of them. Integration tests check that components work together, including against a real database. End-to-end tests drive the system the way a user does. They are the most realistic and the most expensive to maintain, so we keep them for key journeys such as sign-in and payment.
How we use it
Tests run in the CI pipeline on every pull request, and a failing test blocks the merge. If changes can be merged with failing tests, the team soon learns to ignore the results. Tests only check what someone wrote a test for, so manual exploratory testing still has a place.
Related
Software Testing & QA, Application Modernization, DevOps & CI/CD