Error, defect/bug, and failure are distinct: an ERROR is a human mistake; a DEFECT (bug) is the resulting flaw in the code/document; a FAILURE is when that defect causes the system to behave incorrectly during execution. Acceptance testing (UAT) validates the system meets business needs before release.
The chain: a developer makes an ERROR (misunderstanding a requirement) → this introduces a DEFECT/BUG in the code → when executed under the right conditions, the defect manifests as a FAILURE (wrong output/crash) observed by a user/tester. Not every defect causes a failure (it may be in unreached code). ACCEPTANCE TESTING is the final validation that the system satisfies business requirements and is ready for release: User Acceptance Testing (UAT) by real users/business, plus Alpha (in-house) and Beta (real users, external) testing. Getting the terminology precise — and knowing UAT's purpose — are staple foundational interview questions.
A dev misreads 'discount 10%' as 'discount $10' (error), coding the wrong formula (defect); at checkout a customer is overcharged (failure). Before release, business users run UAT to confirm the discount now meets requirements.
Distinguish error, defect, and failure, and explain the purpose of UAT.