It is critical for technical teams to have the confidence that their solution meets the business requirements. Equally, business stakeholders need a way to verify that technical solutions do exactly what is required.
How can such a verification process be implemented?
Acceptence of a technical solution
Whether your team is building websites or Big Data solutions, whether you have a formal procedure for checking the quality of the finished technical solutions, most likely there are checks already in place within your team one way or the other:
- your product manager might load the finished website on her computer to view it before showing it to the client
- your data analyst might run some simply data quality checks on a finished data set such as counting how many rows of data there is
- your graphic designer or UX (User Experience) expert might scroll through the screens of a freshly finished mobile app
What the previous list highlights is the action carried out by various team members to ensure the finished technical solution meets the initial criteria and that is meets certain product quality requirements:
- for a website, it might be that the company logo is in the right position on the page and the correct font is used
- for a data solution, the Data Analyst might have an expected number of data records in her mind therefore countig how many records there are verifies her initial assumption or can trigger questions regarding the correctness of the data solution
- for a mobile app, having smooth navigation and easy to read text on a small screen is vital therefore checking it on multiple devices and screen sizes ensures there will be a satisfied user base.
Acceptance means approval.
Therefore, User Acceptance Testing (UAT) is a commonly used term to describe the methodology and procedures concerning accepting a (technical) solution to a problem.
Although the term User Acceptance Testing is commonly used in IT projects, Acceptance Testing is a term used widely in many industries. For example, Acceptance Testing is relevant in
- Aviation: Boeing 777X’s fuselage split dramatically during September stress test
- Manufacturing: What is factory acceptance testing, and how is FAT done
- Clinical equipment testing: Clinical acceptance testing and scanner comparison of ultrasound shear wave elastography
What can be tested with UAT?
UAT can be applied to IT projects of all sorts.
For example, a web portal can be tested against whether only those users can log in whose password has not yet expired (and in fact possess valid user credentials). Furthermore, after logging in, users can see information about their user accounts and can navigate through the web portal.
For a data-driven use case, where a user interface (website or mobile app) is not required, the validity of generated results can be verified against predetermined input values.
It is also important to understand the scope of testing. What we mean by that is the boundaries of the technical solution to include into the test.
For example, in a typical software project there are more than one software applications communicating with each other, making up a complete service-oriented architecture (SOA). The team might decide to only test part of the system in more details because the components involved make up a critical part therefore those components must be tested against various scenarios.
A complete, end-to-end test is recommended however, touching every component of the system, even if there are additional UAT tests to focus on testing only certain parts of the system.
Testing a User Interface with UAT
Let’s start with an easy to understand example.
Let’s say a commodity trader, Ivy Traders, offers an online portal for their customers where they can place orders for various materials the company is offering.
Before releasing the web portal, the product manager responsible to deliver the project wants to ensure the following criteria are met:
- users with invalid credentials are denied from using the system
- users with valid credentials are allowed to use the system
- after a successful login a user is presented with her user account overview page, showing her previous orders
A team of QA Testers could go through the above “script” and manually verify whether the system works as expected. They could try a set of valid and invalid user credentials and record the outcome into a spreadsheet. The results can be presented to the product manager who then makes a call whether the solution is acceptable for release.
An automated testing solution however would bear many benefits:
- can be repeated at any point of time (for example, right after a new feature release)
- can be scheduled to verify the validity of the web portal every day
The technical team of Software Engineers and QA Testers could use Selenium, a website testing tool for the UAT test. In Selenium, a developer could define a set of buttons to click or form elements to fill in and the automated software would do exactly that. Assertions can be defined to verify the correct web page with the correct data is presented to the user.
Testing a data-driven solution
Testing a data solution, such as a Big Data pipeline or Data Analytics solution, is not quite different from website testing, in principal.
Looking at the architecture diagram of the Ivy Traders order system (that is a data application opposed to a web portal), various scenarios can be tested:
|Front office sends an incomplete order||Reject order|
|Front office sends a valid order||Place order on Enterprise Message Bus|
|Back office queries for orders||The system responds with the next available order|
|Back office sends an incomplete payment instruction||Reject request|
|Back office sends a valid payment instruction||Process payment|
The scenarios can be manually tested however they pose all the limitations mentioned previously. Automated software tools can be crafted for the solution, such as implementing the appropriate database queries and sending order and payment requests via the system’s own Application Programming Interface (API) language.
Best practices for software development
UAT is closely related to software development environments.
Software Developers should deploy their solutions into a staging or UAT environment where testing can be carried out. Once all UAT tests passed, then the software solutions can be promoted to the Production environment where end-users of the system can use the solution. This time, bug free!