In software engineering, an acceptance test is the process of the user testing the system and, based on the results, either granting or refusing acceptance of the software/system being tested. It is often referred to as functional testing, beta testing, QA Testing, application testing, or end user testing. It is also sometimes split into factory acceptance testing and site acceptance testing, the first being run in-huse, the second at the customer's site.

Acceptance tests generally take the form of a series or suite of tests designed to be run on the final system. Each test has a boolean output - pass or fail. There is generally no 'degree' of success or failure. The test environment is usually designed to be identical or as close as possible to the anticipated installation environment. These tests are accompanied by the relevant input data and the expected output data. The tests are run againt the supplied input data and the actual output is compared to the expected output. If the two match, the tests pass. If they do not, the system may either be rejected or accepted on condition that failed tests are re-run against a modified system at a later date (usually before final delivery).

As with all testing, the objective is to break the system. One can only ever prove that the software does not work.