Commonly called User Acceptance Testing (UAT) and sometimes referred to as Beta Testing, Acceptance Testing determines if the end product is useful to the end-user, the people that will be using the live system. In functional testing, we verify that a product works correctly according to specification. In acceptance testing, we validate that the correct thing was built and that it’s what the customer actually needs. It’s possible for an application to pass all of the functional tests and yet fail acceptance testing. If a product works correctly but isn’t actually useful to the end-user, then the project will be a failure. It’s best to determine these issues prior to a production release.