Skip to contentAnemo
EN
Contact

User Acceptance Testing: Process, Checklist, and Criteria

· 5 min read

User acceptance testing answers one question: does this do the job the business needs, using real scenarios and real data, judged by the people who will use it. It is not a second round of QA. QA asks whether the software works as specified; UAT asks whether the specification was right.

This guide covers who should test, how to write acceptance criteria that produce a clear verdict, how long to allow, and how to run the sign-off so a project does not stall at the last step.

Key takeaways

Separate UAT from QA

QA UAT
Question Does it work as specified? Does it do the job?
Run by The delivery team The business users
Data Test fixtures Realistic, representative data
Finds Defects Wrong assumptions and missing rules
Outcome Bug reports Accept, accept with conditions, or reject

Both are necessary. Sending software to UAT before QA has finished wastes business users' time on defects the team could have caught, and it is the fastest way to lose their willingness to participate next time.

Choose testers who do the work

The right testers are the people whose daily work the system changes, not their managers, and not a project team that has been close to the build for months.

Include someone who handles exceptions. They know the cases that break assumptions, and they are the reason UAT finds things QA cannot: the rule nobody wrote down, the customer type that behaves differently, the month-end process that works nothing like the rest of the month.

Book their time formally. UAT slipping because testers were pulled onto day-job work is the most common cause of a delayed go-live, and it is a scheduling failure rather than a software one.

Write acceptance criteria before the build

Criteria written after delivery become an argument. Written before, they are a contract both sides can check.

Good criteria are specific, observable and binary. "The system should be fast" is untestable. "A search returns results within two seconds with 50,000 records loaded" is testable, and a supplier can build to it.

Cover the non-functional requirements too: performance under realistic volume, behaviour on a poor connection, what happens when an integration is unavailable. These are the requirements most often left implicit and most often disputed at sign-off.

Test scenarios, not screens

A screen-by-screen walkthrough finds cosmetic issues. End-to-end scenarios find the ones that matter.

Write scenarios as complete journeys a real person completes: take an order from arrival through fulfilment, onboard a customer from enquiry to first use, process a month-end close. Each should have a starting state, the steps, and a clearly correct end state.

Then add the awkward ones deliberately: the cancelled order, the duplicate record, the customer who does not fit the standard type, the approver on leave, the integration that times out. Automating the routine 80% is straightforward; whether the remaining 20% is handled determines whether staff adopt the system or build a workaround around it.

Use realistic data

Testing with clean invented data proves the system works in conditions it will never meet. Use a representative copy of real data: including the messy records, the historical oddities, the entries with missing fields.

Where that data is personal, anonymise or pseudonymise it before it reaches a test environment. Under GDPR and Turkish data protection law, copying production personal data into an unsecured test system is a common and avoidable compliance failure.

Allow enough time, and expect a second pass

Budget 5–10% of project duration for UAT: roughly one to two weeks on a three-month project, longer where several departments are involved.

Plan for two rounds. The first surfaces findings; the second confirms the fixes. Projects scheduled with a single UAT window and go-live immediately after have no room for the second, which means either shipping known defects or slipping the date publicly.

Classify findings before you triage them

Not everything raised in UAT is a defect. Findings split three ways, and mixing them is why UAT triage meetings run long.

Defects, the system does not meet an agreed criterion. The supplier fixes these within scope.

Change requests, the system does what was agreed, but the business now wants something different. These are priced and scheduled, not fixed for free.

Misunderstandings, the system is correct but the tester expected something else. These are training or documentation issues, and they are useful signals about the interface.

Agree who classifies, and how disagreements are settled, before UAT starts.

Define what sign-off means

Sign-off should be a decision with three possible outcomes: accept, accept with conditions, or reject, with named conditions and dates where relevant.

Establish in advance who signs, what severity of open defect blocks a launch, and what happens to accepted-with-conditions items after go-live. A conditional acceptance with no owner and no date is how known defects become permanent.

Carry UAT findings into launch

The output of UAT is not only a decision. It is a list of what confused people, which becomes your training material; a list of accepted defects, which becomes the first post-launch backlog; and a set of scenarios worth keeping as regression tests for the next release.

Teams that treat UAT as a gate get a yes or a no. Teams that treat it as evidence get a launch plan.

When the build described in User Acceptance Testing: Process, Checklist, and Criteria needs a team behind it, Discuss Your Software Project.

Frequently asked questions

How do we run user acceptance testing before signing off a release?

Write the acceptance criteria before the build starts, test business scenarios rather than screens, use data that resembles the real thing, and have the people who do the job daily run the tests. Testers who were not involved in the specification find the assumptions that everyone else stopped noticing.

How is this different from the supplier's own testing?

Their testing confirms the system behaves as specified. Acceptance testing confirms the specification was right. Those are different questions, and a release can pass the first completely while failing the second on the first day a real customer uses it.

How long should we allow?

Enough for two passes, because the first will find defects and the fixes need re-testing. Scheduling a single week immediately before go-live means findings are triaged by the calendar rather than by severity, which is how known problems reach production with a note promising to address them later.

How we would work on this

Related reading

Building the product for what comes next

We would rather deliver one product that holds up than three that have to be rebuilt. That standard is the same on every project, whatever its size.

Ali Boran GazelCEO

Contact us