User Acceptance Testing
User Acceptance Testing
User acceptance testing is done after unit testing, integration testing and system testing. UAT is
performed by end users or client to check or validate the system according to their requirements or
business need. UAT is the last stage of software development process before system go live.
Environment Setup: UAT is performed in a separate testing environment that mirrors actual
production environment. Developers set up a separate environment where client or end user
perform UAT.
Planning: Planning or strategy is to be prepared to perform UAT. Planning includes testing scope,
identify stake holders, Define strategy, entry/exit criteria. Planning is an important step to
perform UAT.
Test case Design: This step involves identifying test scenarios and prepare all possible test cases
against those scenarios. All the system is being reviewed and testing scenarios are identified.
Test Data Preparation: After designing all possible test cases, testing data is prepared or designed to
perform these test cases. Test data preparation includes all possible inputs against the test case to be
performed.
Define Acceptance criteria: This is an important step in UAT phase where acceptance criteria or
actual results of the test cases are defined. The purpose of this step is to know that what should
be the actual behavior of the system against that test case.
Test case execution: Once all the testing data is prepared and acceptance criteria is defined,
clients/end users tend to execute the designed test cases. After test execution the validate their
requirements/business goals against actual results of the test case.
Test Management: After performing test cases, it should be verified that all the designed test
cases are performed and verify its progress. Prioritize the defects and track defect resolution.
Bug Reporting: Defects found during UAT are documented and reported at this stage for
development team. Their impacts on the system and their priority/severity are examined.
Real-Time example:
We take the real time example of UAT of the Banking website. An online banking system is developed by
a company. After all the phases of Software development life cycle, system is ready for UAT process. A
testing environment is set-up by developers for UAT. Suppose client is performing UAT in Billings payment
module that includes different billings payment method of utilities bills etc. While performing UAT, he
found that one billing payment method i.e., Payment by credit card is not working as per their business
need. So, he reports that issue and communicate about that defect with development team.
Furthermore, developers re-test that issue at their end and fix it asap. After fixing that issue, Regression
testing is performed by QA team to verify that reported issue is resolved and updated code do not have
any impact on the other modules of the system. After that, Client again reviews that functionality or
module and give final approval.
Why we need:
The main purpose of UAT is to validate that all requirements from end users has been implemented with
less defect ratio. The software may be fully functional technically but sometime fail because
requirements are not completely defined or communicated with developers.
UAT also validates that change requirement has been implemented as per business need. There could be
some requirements that have not been communicated with development team. UAT addresses these
changes. It also ensures the losses that may arise from post-release issues will be reduced.
Impacts on Testing:
Alpha Testing:
Beta Testing:
Performed by large group of external users or clients who do not have much technical
knowledge.
Perform after Alpha testing.
Beta testing scope extends the testing scope to real world scenarios
Helps identify issues that are not reported in Alpha testing.
Performed in more diverse environment and testing environment that mirrors production
environment.