What Is User Acceptance Testing (UAT) and How to Do It Well
When you’re building something new — a website, a piece of software, an app — it can feel like there is a lot of trial and error required to reach product-market fit.
User testing shortcuts endless trial and error with specialized processes and tests that inform product development and keep you on the right track. Depending on where you’re at in the development process and what insights you need, there are many types of established user testing to choose from.
User acceptance testing is one such tool. It can help with product adoption, product-market fit, and successful product launches. In this guide, we’ll explain what it is, when to do it, and how to do it well.
In this article:
- What is user acceptance testing?
- Why do user acceptance testing?
- The 6-step user acceptance testing process
- 3 types of user acceptance testing tools
What is user acceptance testing?
User-acceptance testing is one of the many types of user testing you can use in getting your website, app, or product ready to launch.
User acceptance testing is typically the last stage of testing in the software development lifecycle before the software or product is officially released. Its testing goals are to make sure:
- The product meets the user’s needs.
- The software is ready for real-world tasks, traffic, and usage.
- The software or product performs in the intended way.
- There aren’t any bugs that weren’t caught in previous testing or QA processes.
Ideally, actual end-users perform user acceptance testing in a real-world scenario. This can look like launching a new product to a select group of users for beta testing, using paid test subjects, or introducing the software as a free trial with in-app testing feedback. When the test is complete, you’ll want to make any last-minute changes needed before officially releasing the product.
Types of UAT
Although user acceptance testing may seem straightforward, it’s actually a broader category that encompasses several types of testing:
- Beta testing: The most common type of UAT. Software is released to beta testers (end-users) who use the software as they would normally. Then provide in-app feedback to developers for improvements or bug errors before public release.
- Contract acceptance testing (CAT): Used mostly for software custom-built for a client. CAT ensures that the software meets all the specifications and needs of the contract or client before releasing or installing the software and closing the project.
- Operational acceptance testing (OAT): Focuses on operational readiness testing and stability. Software is specifically tested to make sure it can functionally handle real-world scenarios, such as reliability, uptime, stability, and so on.
- Regulation acceptance testing (RAT): Focuses on making sure that the software complies with all regulations, legal requirements, and security laws. This is more critical in certain industries such as finance and healthcare and doesn’t necessarily need to be performed by end-users. A major goal is often making sure that end-user data will be stored and processed securely at every stage, in compliance with standards like HIPAA and GDPR.
- Business acceptance testing (BAT): Focuses on making sure the software meets internal business needs. These could be goals around customer or user experience, marketing, and sales, quality, or costs.
You may have used several types of software in “beta mode” or “invite-only mode.” In this situation, the software is “launched,” but end-users must have an invite — from a founder, a waitlist, or another current member — to access the product. Feedback is typically provided or solicited from in-app popups, feedback forms, or even invite-only Slack channels or forums.
This is a very common and effective way of doing user acceptance testing. It’s often used as a primary UAT method alongside other types of acceptance testing.
QA vs. UAT
Quality Assurance (QA) is often confused with UAT, but they happen at different stages of the testing lifecycle and are done by different people.
Quality Assurance (QA) is done internally, not by end-users. It also happens earlier on in the testing process. The goal of QA is to make sure the product functions as expected and to fix major technical issues. As the name suggests, QA tests the overall quality of the product.
By contrast, UAT happens after the QA process is already complete. Once the internal QA team ensures the quality of the product, end-users will then look for usability issues, make sure the software meets their expectations (doesn’t just function), and make sure the product will be acceptable to other target users.
SAT vs. UAT
Site acceptance testing (SAT) is a functional test that makes sure the software is properly installed, operational, and accepted at the user’s physical site or office. As such, this is mostly used for major software products that are installed locally for major clients.
While user acceptance testing focuses on making sure the product is functional and meets expectations for the end-user in terms of usage, SAT focuses on making sure the software is installed and configured properly so that it can be used.
SAT can be considered a type of UAT, but it’s much more specialized. Not every software product needs to run SAT. User acceptance testing, like beta testing or OAT, is important for all types of software.
Usability testing vs. UAT
Usability testing and UAT are often confused since their names are so similar, but they have different testing goals.
Usability testing focuses on the user’s experience of navigating the product, ensuring the product is easy-to-use and intuitive. The goal is to make sure that new users can easily navigate and achieve their goals with the app or software without too much trouble or outside guidance.
Usability testing happens early in the testing process. The results of your usability tests can greatly affect the design, interface, and workflows of the app or product. UAT typically happens after all other types of testing have been completed. A user acceptance test is more about how the product works, while usability testing is more about how people use it.
The purpose of UAT
User acceptance testing is often the final stage of testing, which can make it seem optional — but it definitely shouldn’t be. UAT provides a number of significant benefits for your development team:
Verifies your application meets user expectations
Most importantly, conducting user acceptance testing validates that your product meets the expectations of your users before you release it. This gives you a chance to make final changes or adjustments before you launch to strengthen your product-market fit.
Testing user expectations can look like:
- Asking users to test specific tasks or workflows to ensure they function as expected.
- Having users use the product as they would ordinarily and providing feedback on missing or unexpected workflows or functionality.
- Ensuring that the software’s functionality is what end-users want.
The primary goal is to make sure that your target market will actually use the software in real life.
Verify your app meets internal business requirements
Another benefit of UAT is making sure your product meets business objectives and requirements.
Internal business requirements for UAT could be things like:
- Meeting minimum software load speeds and capacity.
- Ensuring the software uses the minimum amount of resources.
- Making sure the software delivers the correct outputs in every workflow.
Business goals and acceptance criteria are usually set by internal stakeholders. They often include technical requirements about how the product works, how big it is, how well it looks, or how easy it is to use. The big goal here is to both (a) ensure your app or software can handle real-world usage, and (b) get internal approval and bolster stakeholder confidence before the launch.
Improve product quality and product-market fit
A tangential — but important — benefit of UAT is improving product quality and product-market fit.
The connection here is pretty clear: When you do UAT well, you ensure that the product works as expected, meets user expectations, and is functional for end users in real-world scenarios and situations. Validating your product and functionality in real-world scenarios ensures that your product-market fit is strong before you launch. If it’s not, it gives you time to receive real feedback and make changes to improve product-market fit before you launch to the public.
Building on a no-code programming tool like Bubble makes this step a lot easier. While user acceptance testing makes it clear to see what you need to adjust and why, Bubble helps you take care of the how. With no-code, you can incorporate feedback and iterate faster, launch more quickly and easily, and speed up the product development process.
All of this helps you keep user experience and expectations at the forefront of your product development process. This improves quality and helps you develop exactly the product that your users really want.
Reduce post-launch issues
Finally, running UAT can reduce post-launch issues significantly, which speeds up product development long-term and reduces costs of development. When you identify and address bugs, functionality issues, or missing functionality before you launch, it’s easier (and typically less costly) to fix them.
What’s more, because these issues are encountered by fewer users, it strengthens your product quality and users’ confidence in your brand.
The UAT testing process
So, how exactly do you run a user acceptance testing process effectively? As with all things related to software development, there isn’t just one surefire solution.
Here’s our framework that you can adjust for your own testing needs:
Step 1: Plan and design your test
Start by defining the goals for your user acceptance tests (what will we learn?) as well as what will be tested. For example:
- We are going to test our new native app mobile builder (the what) to make sure that users can successfully launch native mobile apps without a wrapper (the goal).
- We are going to test our signup workflow (the what) to ensure that users can sign up from any source within three steps (the goal).
- We are going to test our software MVP (the what) to ensure that users can accomplish searching for videos, uploading videos, and watching videos without issues (the goal).
You’ll also want to determine the criteria for success or failure. These can be based on time (i.e., user can accomplish the task within a certain amount of time or steps), pass/fail (i.e., they could or they couldn’t), functionality or technical specs, or even ease reported by the user.
Then, you’ll want to design the test itself. User acceptance tests can range from being very controlled (e.g., “We’ll ask users to accomplish this task, in this setting, and see how long it takes,”) to very open (e.g., “We’ll ask users to use the app as they would in a real-world setting and provide open-ended feedback and bug reports”). Identify and develop test scenarios that match the goals for your test.
Finally, set a timeline for the test. How long will the test run, and when will you know the test is complete?
Once you know the goals, success/failure criteria, design of the test, and timeline, you’re ready to start putting your test into action.
Step 2: Recruit UAT testers
The ideal UAT testers are:
- End-users who are genuinely excited about your product or software.
- Representative of (or included in) your target market.
- A group that provides a solid cross-section of your entire market.
That is, you want a diverse group of testers that provides insight into different segments of your users: both power users and new users, across a variety of demographics, with a variety of goals for your product.
You can find UAT testers from your existing user base (if possible), start a waitlist or interest list in your product on a website, or recruit testers that match your target audience through a testing platform.
Step 3: Conduct UAT
How you’ll conduct user acceptance testing depends on the actual test you’ve designed. For example, if you’re doing an open beta test, you’ll need to release the beta software to testers (or invite them to the staging environment) and give them instructions on how and where to provide feedback.
Additionally, you may want to solicit feedback directly at regular intervals throughout the testing time frame.
However, if you’re running a controlled test within a testing environment, you’ll need to provide much more direction, such as:
- Inviting all testers to the UAT test environment
- Giving directions on the test scenarios
- Showing how to use the testing tool and where to provide feedback (if applicable)
- Guiding users through the test procedures, if the test is moderated
At this stage, you’ll also want to ensure you have a system in place to collect and organize test results. A UAT testing tool can help make this a lot easier (we’ll walk you through some common UAT testing tools later).
Step 4: Review results
Once you’re beginning to collect some test data, you need to categorize, review, and action the results.
Start by organizing the feedback in a way that makes the next two steps easy. For example, you might want to sort feedback into minor feedback (such as straightforward bugs, inconsistencies, broken links, and so on) and major feedback (things that need discussion before they can be changed or actioned). Or, you might sort feedback into categories based on what the feedback is addressing (e.g., workflows, signup process, search function, etc.).
Once feedback is organized, developers can start working on addressing straightforward bugs and errors. You should also set up regular times during the testing process to review larger feedback as a team and decide how to take action.
Step 5: Address issues and re-test
Once your test is complete — or at regular intervals while you’re gathering feedback — you want to address and fix any issues that come up.
If you need to make large-scale changes, make sure to re-run your UAT testing after those changes are made. Continue this rinse-and-repeat process until your UAT testing gets the desired results based on your criteria for success.
Step 6: Get approval
In the software development process, ideally, user acceptance testing is the final step before launch. So once you’ve reviewed and addressed feedback, all you need to do is demonstrate the results and reliability of your software to stakeholders and get set to launch.
This is why setting up clear tests and documenting your results and adjustments is so important: It’ll really help at this stage when you need to demonstrate to stakeholders that everything is ready to go. If you’ve aligned on testing goals and success / failure criteria and documenting your results clearly, this step should move smoothly.
Three core types of UAT tools
The type of UAT testing you’re running will obviously determine which tools — and which types of tools — you need. Here are the three main UAT tool categories to consider:
Overall UAT testing management
UAT test management tools help you run, manage, and collect feedback on UAT tests. They act as an all-in-one testing tool and can be very helpful for keeping things streamlined and all in one place. The downside is that they can be cost-prohibitive for small teams and startups, as they may do more than you need.
These tools should offer:
- Test execution: Manage and execute tests on a dedicated platform, with testing tools for getting feedback and results.
- Feedback and results management: Collect and organize feedback, track results, get reports, and so on.
- Integrations: Integrate with other testing, project management, or development tools to make it easy to action feedback.
- Test management: Allows you to set up, manage, and track multiple types of tests and keep results organized.
If you’re looking for an all-in-one tool like this, check out Zephyr, TestMonitor, or Rainforest QA.
User behavior analytics
A user behavior analytics tool provides you with heatmaps, screen recordings, screenshots, or other analysis of actual user behavior in your app. These can be especially helpful for unmoderated beta testing when you want to understand how users navigate the app and where they’re running into issues.
These tools typically offer:
- Heatmaps: Showing you exactly where users click, look, and navigate most on your site or app.
- Screen recordings or screenshots: Recording (anonymized) user sessions with video or screenshots so you can see exactly how users attempt to navigate your app and where they get stuck.
- Live recordings: Some tools may offer the option to have the user provide live feedback in the recording as well as recording their screen, so you can get more context on the users’ thoughts and experiences.
Since you can use these apps continuously in the background, they’re great for ongoing testing, feedback, and improvement. Our favorite tools in this category are Hotjar, FullStory, and UserTesting.
Feedback and survey platforms
These tools allow users to report bugs, provide feedback, send screenshots of issues, and other asynchronous feedback as they use your product. Since these tools integrate directly with your product or staging environment, users can leave feedback as they use the tool — perfect for moderated or unmoderated beta testing.
These tools usually offer:
- Screenshots and annotations: Allowing users to screenshot an error or bug and note the problem.
- Feedback and survey popups: Prompt users to leave specific feedback on various pages, workflows, or screens with simple survey popups.
- Bug reporting: Users can flag and report bugs on-page, which are filed directly into dev reports or project management tools like Jira.
- Feedback management and collaboration tools: Dedicated dashboard for collecting, organizing, and actioning feedback.
Regardless of how you’re running your UAT testing, an integrated feedback tool is essential for launching and improving your app. Our favorites in this category include Usersnap, Feedbucket, and Marker.io.
Get started with Bubble
Another underrated way to make UAT testing easier? Building your app or website on a no-code platform that makes getting and iterating on feedback easy.
With traditional development, you have to set up separate testing environments, collect feedback, and then make time-consuming adjustments to the code in development before pushing the final code live. This process is often clunky and time-consuming, which makes it easy to lose track of small details or take some shortcuts for the sake of moving quickly.
With a powerful no-code programming environment like Bubble, you get the benefit of speed and simplicity along with easy, integrated testing. Invite beta testers to your app and integrate core testing tools right into your Bubble app. Then collect and action feedback all in one place. Bubble’s “what-you-see-is-what-you-get” editor makes iteration simple and fast — allowing you to move faster when developing product-market fit and launching your product.
Build, test, iterate, and launch — with Bubble, it’s that simple.