User acceptance testing (uat)
User Acceptance Testing is the final validation phase before software goes live, where actual users or their representatives test the system to confirm it meets their needs and works in their real-world context. Unlike technical testing that verifies code works correctly, UAT verifies that the right thing was built - that the solution actually solves the business problem it was designed to address. It's the last checkpoint before release where stakeholders formally accept the delivered work.
Why it matters
Building software that passes all technical tests but fails to meet user needs is a common and costly mistake. Development teams can misunderstand requirements, stakeholders can inadequately communicate needs, and assumptions can drift during long projects. UAT catches these disconnects before they reach production.
UAT also serves a formal purpose: it establishes stakeholder agreement that the system is ready. This sign-off protects both vendors and clients in contracted work and ensures organizational accountability for release decisions. Without UAT, blame for post-release problems becomes contentious.
For product managers, UAT represents the moment of truth. All the requirements, designs, and development work culminate in the question: does this actually work for our users? Getting UAT right increases the chance of successful launches and reduces painful post-release scrambles.
Uat vs other testing types
UAT differs from other testing phases in purpose and participants:
Unit testing verifies individual code components work correctly - done by developers, focused on technical correctness.
Integration testing confirms components work together - done by developers or QA, focused on technical interoperability.
System testing validates the complete system against specifications - done by QA, focused on functional requirements.
UAT validates the system meets real user needs - done by users or business representatives, focused on business value and usability.
Each type catches different problems. A system can pass all technical tests yet fail UAT because it doesn't match how users actually work.
Planning for uat
Effective UAT requires preparation:
Define acceptance criteria early - ideally when requirements are first written. Clear, testable criteria make UAT objective rather than subjective.
Select appropriate testers who represent actual users. Subject matter experts, power users, or customers provide realistic testing. Internal staff unfamiliar with real workflows miss important issues.
Prepare test scenarios that reflect real-world use, not just technical feature coverage. Scenarios should include common tasks, edge cases users actually encounter, and end-to-end workflows.
Set up realistic environments with production-like data and configurations. Testing with perfect data in isolated environments hides problems that emerge with real data complexity.
Establish clear timelines and expectations. UAT needs dedicated time; it can't be squeezed into days before a deadline.
Document the process - who tests what, how issues are reported, what constitutes pass/fail, and who makes the final acceptance decision.
Conducting uat
During UAT execution:
Brief testers on the scope, process, and how to report issues. Testers should understand they're validating business requirements, not hunting for technical bugs.
Provide test scripts for structured coverage, but also allow exploratory testing where users try to accomplish their actual work tasks.
Capture feedback systematically - what works, what doesn't, and why. Good UAT surfaces not just bugs but also usability issues and requirement gaps.
Triage issues as they arise. Not every problem blocks release; categorize by severity and decide which must be fixed before go-live versus which can be addressed post-launch.
Communicate progress to stakeholders. Regular updates prevent surprise failures at the end of the cycle.
Common uat challenges
Several problems frequently undermine UAT effectiveness:
Compressed timelines force UAT into days when weeks are needed. Under time pressure, testing becomes superficial and problems slip through.
Wrong testers - IT staff testing instead of business users, or junior employees instead of those who'll actually use the system - miss critical issues.
Scope creep when users treat UAT as an opportunity to request new features rather than validate what was built. Clear scope boundaries help.
Inadequate environments that don't reflect production conditions hide performance issues, data problems, and integration failures.
Unclear acceptance criteria make pass/fail decisions arbitrary and contentious. Objective criteria established upfront prevent this.
Testing fatigue in long UAT cycles leads to diminishing attention and missed issues. Break UAT into focused sessions rather than marathon testing periods.
Uat in agile environments
Traditional UAT at the end of a project sits uneasily with agile's iterative approach. Agile teams adapt UAT in several ways:
Sprint-level acceptance - Product owners or users verify stories at the end of each sprint, providing continuous acceptance rather than one big event.
Definition of done that includes user acceptance as a criterion before stories are considered complete.
Continuous user involvement throughout development reduces surprise at the end since users have seen the evolving product.
Release candidate testing - Even with continuous acceptance, a focused testing period before major releases ensures everything works together.
The principle remains the same: users verify the solution meets their needs before it goes live. The implementation adapts to iterative development.
The sign-off decision
UAT concludes with a formal decision: accept and proceed to release, or reject and continue development. This decision considers:
Severity of remaining issues - Are there blockers that prevent users from accomplishing core tasks?
Workarounds - Can users work around issues until fixes are delivered?
Business timing - Do market or regulatory deadlines require release even with known issues?
Risk tolerance - What are the consequences of releasing with problems versus delaying?
The sign-off should be explicit, documented, and made by someone with appropriate authority. Implicit acceptance leads to finger-pointing when problems emerge.
Beyond pass/fail
The most valuable UAT does more than determine go/no-go. It generates insights:
Usability observations reveal how users actually interact with the system, informing future improvements.
Training needs become apparent when users struggle with certain features.
Documentation gaps surface when users can't figure out how to accomplish tasks.
Feature priorities emerge from which capabilities users gravitate toward and which they ignore.
Tools like Klero help extend UAT insights by connecting pre-release testing feedback with post-release user feedback, showing whether issues identified in UAT match real-world user experience and whether anything was missed.

