It’s fairly uncontroversial that, for a good service-deployment pipeline, there should be:
- at least one pre-production stage
- automated tests running on that stage
- a promotion blocker if those tests fail
The purpose of this testing is clear: it asserts ("verifies") certain correctness properties of the service version being deployed, such that any version which lacks those properties - which “is incorrect” - should not be deployed to customers. This allows promotion to be automated, reducing human toil and allowing developers to focus their efforts on development of new features rather than on confirmation of the correctness of new deployments.