What are Acceptance Tests (UAT)?
Let’s start with what acceptance testing is not. The goal of UATs is not to get something on programmers who have developed software, or on QAs who have run software tests. Acceptance testing (UAT) is part of the software development process (see our article on software testing for more details). At the UAT stage, the product is ready for implementation and we have to confirm that all requirements have been met.
Purpose of UAT (User Acceptance Tests), according to ISTQB
As per ISTQB, acceptance tests should check:
- end-user requirements
- system requirements
- use cases
- business processes
The Importance of UAT
The customer or users of the system are most often responsible for conducting acceptance tests. The product to be tested by acceptance tests has already been thoroughly checked by the previous system tests. Acceptance tests are run to confirm that the new version meets the customer’s requirements and help him learn to trust it more.
The example of UAT testing process
- Defining the conditions of acceptance
- Defining the team responsible for carrying out the tests
- Preparing the environment and the appropriate version of the software
- Preparing suitable test data
- Determining the teams/people needed for full support during the tests (this includes providing data, determining who should answer potential questions and a general overview of the teams working in a given PRE-PROD environment, so that other applications are stable while acceptance tests are ongoing
- Selecting appropriate test cases and creating a set of tests based on them (test suits)
- Preparing test management tools (here we will mark tests that have been performed with a positive/negative effect)
- Ensuring that test teams have the required accesses
- The test team starts work on the first tests
- Marking revealed errors with the use of test tools
- Re-checking new functionalities and regressions
- Summary / Closing:
- Preparing a report on the test results
- Deciding on implementation based on the report and the errors described therein
Types of UAT tests
Acceptance tests performed by users (alpha and beta tests)
- Alpha tests – this is a form of internal acceptance tests. These are most often performed by internal Quality Assurance teams and testers.
- Beta testing is a form of testing carried out by end users. The software version, the so-called beta version, is passed to several external test groups.
Beta testing helps to reveal errors not captured by an internal QA team. This type of test is very cost-effective, and doesn’t require any additional investment.
Why do companies back out of conducting beta tests?
Confidentiality – a common argument against conducting beta tests. Companies are afraid of information about the system leaking to the media.
Too much confidence in one’s own abilities – companies believe that Quality Assurance team can capture any error.
Too late in the process – some people claim that beta tests are conducted too late to bring any measurable effects.
Lack of time – doubts related to reporting errors, e.g., that users won’t be systematic or report duplicated issues, which might impact the time of implementation.
Production acceptance tests
Theses are tests designed for the operators and administrators of a given app. The simulated production environment is used for tests related to backup, re-installation of versions, user management, and data migration.
- Acceptance tests for compliance with the law
These are tests that are based on checking whether the application complies with current laws, regulations or security standards. Such tests are often performed by users or independent testing teams.
- Acceptance tests for compliance with the contract
These are tests that check the acceptance criteria included in the contract while setting the terms of the request. Like legal compliance tests, such tests are often performed by users or independent testing teams.
UAT – verification or validation?
These concepts are very similar. However, to correctly answer the question of whether acceptance tests constitute verification or validation, let’s start with their definition according to ISTQB.
- Verification – checking the correctness and providing objective proof that the product of the software development process meets the defined requirements.
- Validation – checking the correctness and providing objective proof that the product of the software development process meets the user’s needs and requirements.
Based on these definitions and my brief introduction to what acceptance tests are, we can conclude that acceptance tests are run to validate the product and are one of the last steps in software development.
When answering the question: „Why are acceptance tests important in the software development process?”, it’s best to present their benefits:
- They build end-user / customer confidence in the system
- They check the compliance of the specifications with functional and non-functional requirements
- They check if the system is functioning well
To sum up: Why should I conduct User Acceptance Tests?
All of this is very important in the software development process. In order for cooperation between the customer and the software provider to bear fruit, it’s necessary to ensure that each new version of the application brings as many benefits as possible, while minimizing the risk of new errors.