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.
Many times, this type of testing is done in cooperation with the customer or actual end-users and monitored by professional QA staff. The typical scenarios used in acceptance testing cover the ways in which we would expect the application to be used on a daily basis. Are the colors suitable? Can the users easily navigate the screens without using a manual? Are all the necessary screens present? Can the user accomplish what they need to within a reasonable amount of time? Can the user modify the appropriate areas and access only what they should be able to? Essentially, does the product solve the problem it was designed to solve?
Acceptance testing should be done in an environment as close to production, if not in production itself. If it’s possible to isolate the changes, or the section of the application under test, doing it in production is viable. Many times, these types of tests are done in a lab environment outside of production, though.
Most clients use our services as a final, independent verification and validation service for acceptance testing. Having a third party who wasn’t involved with the development review requirements and validate usability is a smart step that many mature organizations make.