In the engineering world, especially in its various sub-disciplines, acceptance testing is a test that determines whether the requirements of a specification or contract have been met. Acceptance testing may consist of chemical testing, physical testing, or performance testing. In systems engineering, it may involve black-box testing of a system, such as validating a piece of software, a batch of manufactured mechanical parts, or a chemical product before delivery. In the field of software testing, the International Testing and Qualification Board (ISTQB) defines acceptance testing as formal testing related to user requirements, specifications, and business processes to determine whether a system meets the acceptance criteria.
The final test is user acceptance testing, which is conducted before the final release to evaluate whether the product or application can cope with real-world scenarios.
User Acceptance Testing (UAT) is the final stage in the quality assurance lifecycle, which aims to simulate user behavior to check whether the system meets the business requirements and reject changes if it does not meet specific standards. Different forms of acceptance testing include user acceptance testing (UAT), end-user testing, operational acceptance testing (OAT), acceptance test-driven development (ATDD), and field (acceptance) testing. Acceptance criteria are the conditions that a system or component must meet in order to be accepted by users, customers, or other authorized entities.
Testing is a set of activities designed to facilitate the discovery and/or evaluation of one or more properties of the item being tested. Each test is called a test case, which runs a set of predefined test activities designed to drive the execution of the test project to achieve the test objectives, including correct implementation, error identification, quality verification and other valuable details. The test environment is typically designed to be as similar as possible to the intended production environment, including all facilities, hardware, software, firmware, procedures, and documentation required to perform software testing.
Test cases for User Acceptance Testing (UAT) and Operational Acceptance Testing (OAT) are ideally developed in collaboration between business customers, business analysts, testers, and developers.
These tests must include testing of business logic as well as conditions of the operational environment. The business customer (product owner) is the primary stakeholder for these tests. As the test conditions successfully meet their acceptance criteria, stakeholders gain peace of mind that development is moving in the right direction.
The acceptance test suite may need to be executed multiple times as all the test cases may not be executed in a single testing iteration. Acceptance test suites are run using a predetermined acceptance test procedure to guide the tester on what data to use, steps to follow, and the expected results after execution. The actual results are retained for comparison with the expected results.
If the actual result matches the expected result for each test case, the test case is considered passed. The purpose of acceptance testing is to provide confidence that the developed product meets the functional and non-functional requirements.
Operational Acceptance Testing (OAT) focuses on the operational readiness of a system and is primarily used in software development and maintenance projects as part of a quality management system. This type of testing emphasizes the readiness of the system to support its becoming part of the production environment.
User Acceptance Testing (UAT) GuidelinesUser acceptance test requirements are created by the business customer and expressed in the business domain language. These are high-level tests used to validate the completeness of a user story or the role that a story plays in any iteration. UAT is often performed before a customer accepts a new system and is intended to ensure that the solution works properly for the users, rather than just confirming that the system does not crash and meets other documented requirements.
UAT testing should be performed by the intended end-users or subject matter experts and a confirmation summary should be provided for further validation.
If software functions as desired and without problems during normal use, one can reasonably infer that it is stable in production. User testing is not usually done to identify simple cosmetic issues or major defects because developers have already identified and fixed these issues during the early unit testing, integration testing, and system testing phases.
According to the Project Management Institute, acceptance criteria are a set of conditions that must be met before a deliverable can be accepted. The acceptance criteria required for a component of a system are usually very detailed. The general types of acceptance tests include user acceptance test, factory acceptance test (FAT), operational acceptance test, etc. Among them, the factory acceptance test is usually carried out by the supplier before the product is shipped to the destination.
The real test, then, is this: once your system has been through all these tests, can you ensure that it actually performs as expected?