User acceptance testing (UAT) is one of the final stages of a software project and will often occur before the customer accepts a new system.
Users of the system will perform these tests which, ideally, developers have derived from the User Requirements Specification, to which the system should conform.
Test designers will draw up a formal test plan and devise a range of severity levels. The focus in this type of testing is less on simple problems (spelling mistakes, cosmetic problems) and show stoppers (major problems like the software crashing, software will not run etc.). Developers should have worked out these issues during unit testing and integration testing. Rather, the focus is on a final verification of the required business function and flow of the system. The test scripts will emulate real-world usage of the system. The idea is that if the software works as intended and without issues during a simulation of normal use, it will work just the same in production.
Results of these tests will allow both the customers and the developers to be confident that the system will work as intended.