User Acceptance Tests are black box tests done by users to:
Test system inputs, outputs and processing
Assess test results and
Verify the correctness or otherwise of test results and identify which issues are blocking (those that need to be fixed before the next go-live).
Acceptance Criteria Definition involves specifying the requirements that must be met for a solution to be considered acceptable to stakeholders. It entails defining the data (inputs and outputs), quality attributes and system functionalities that are necessary for the user to accept the system. Ideally, this should be done before coding begins to ensure they conform to users' expectations from the onset.
Users should be involved in specifying the acceptance criteria for their systems to reduce surprises and increase the chances of implementing a successful system. It is always a good idea to discuss the acceptance criteria with a technical member of the team to ensure they are feasible.
Each acceptance criteria must be expressed in a form that is testable. Test cases have to be written (based on each acceptance criteria) to confirm whether the solution is performing as expected or not and can be expressed as a pass or fail.
View related article The Role of Business Analysts in UAT Sessions.