Does UAT exist in Agile? (Other Acceptance Tests?)
If you are interested in UAT or acceptance testing in general. You may wonder if it is used in Agile or other testing models.
Does UAT exist in Agile? Yes, UAT does exist in Agile. However, it is not reserved for the end of the project. Instead, it can be performed at the end of each sprint. There are other forms of acceptance tests performed as well (more on this later).
Now that you know that UAT is included in Agile, I will go on to explain what other types of acceptance can be involved, who typically does the testing, the benefits and much more…
What is acceptance testing?
Acceptance testing is similar to system testing from the perspective that you’ll be testing the entire system. However, in acceptance testing, it can form a decision if the system is viable for deployment.
It is also used as a quality gate for regulatory or contract related projects (more on this later).
What are the objectives of acceptance testing?
There are a number of different objectives for acceptance testing.
However, the overarching objectives are to get confidence that the system has been built to the user’s expectation.
- Verify the functional and non-functional aspects of the system are fit for purpose.
- Verifying that the system works as specified (based on requirements).
Are defects expected to be found at this stage?
Acceptance testing is typically assumed to be at the end of the SDLC process. Therefore, the assumption by all parties is that the system has been thoroughly tested. And, it is expected that there should be minimal or no new defects found.
In reality, finding no defects is quite unrealistic. Because you will inevitably find some defects. But, what I would say is, if there is a large number of defects found at this stage it is definitely a red flag.
In most cases, if there are too many defects, it is regarded as a high project risk. And often recommended not to deploy the code.
In my experience of testing, had we have found a large number of defects during the acceptance testing stage, there would have been a lot of questions asked. We would also expect to be questioned why simple defects were not picked up during testing. Believe me, these are uncomfortable questions to answer, especially under pressure.
Different types of Acceptance Testing
Now that you understand what the objectives of acceptance testing is. It is important to understand that there are various other types of acceptance testing. Each different type has different objectives and resources to perform it. They are as follows:
- User Acceptance Testing (UAT)
- Operational Acceptance Testing (OAT)
- Alpha & Beta
User Acceptance Testing
When acceptance testing is mentioned most people will typically assume UAT. However, it is not the only form of acceptance testing. I will agree though, it is one of the most popular, from my experience.
UAT is an opportunity for the end-user to verify and get confidence that the system performs as expected.
This usually revolves around the user requirements (Test Basis – more on this later) that were drafted from the initial stages of the project.
Who performs UAT?
This stage of testing is typically performed by business users, typically end-users who will be using the system on a day-to-day basis when it goes live. These resources are usually had picked based on their knowledge of the current system (if its an existing system, that is being upgraded).
However, if it is a brand new Greenfield system, that has never been used before, then you will typically have the users who are expected to use the system in anger once it goes live into production.
Operational Acceptance Testing (OAT)
Operational acceptance testing is another form of acceptance testing that is often overlooked. Essentially this involves highly technical resources, such as tech support.
Objective of OAT
The focus of this acceptance testing is different from UAT because these testers want to feel confident that they can support the system when it goes live.
For example, this could include tests like backing up and restoring the system in a simulated disaster (disaster recovery), etc.
This is quite a technical level of acceptance testing and requires experts that have had, ideally, years of experience or acquired a high level of skills and knowledge in a short space of time.
Contractual and regulatory acceptance testing.
Quite a mouthful but ultimately it comes down to two separate types of testing. but there are aspects of which overlap.
Contractual acceptance testing involves testers (or representative testers) verifying that the system in question meets the agreed contract specification.
The agreed contract specification is often used to verify that the system is operating as expected. This contract and agreed behavior is usually created at the start, once a contract is agreed, at the very beginning of the project, way before testing starts.
Regulatory Acceptance Testing
Regulatory acceptance testing is slightly different because it involves testing to verify that a system meets certain regulatory standards.
My example of regulatory testing
During my experience of testing, I worked for an energy company (Gas & Electric). They were launching a Customer Management System (CMS) in a new European country.
However, the difference with this particular country is, they had a strict regulatory licensing quality standard that needed to be proven and verified before the system could go live and be awarded its license.
Therefore, I was drafted as a test manager to prove to the regulatory representatives that the system was fit for purpose to go into production in their country.
Typically for these regulatory acceptance testing, you will have a neutral third-party company that will verify what you have tested to ensure it meets their standards.
Witness & Test Asset Testing
I also had experience of this, which included verifying that the test assets were created as per their specification as well as face-to-face visits to witness test what were testing.
Depending on who you are working with these tests can be quite stressful. Why? Because they usually have to be done within a restricted time frame. And, there is not usually much chances to get this right.
And, to make matters worse, the stakes are usually quite high because of the investment that has been made to get the software to pass the regulatory standards before the system can go live.
Alpha or beta testing
Alpha or Beta testing is a strategy used to verify that the system is fit for purpose. However, it is typically used by developers of commercial off-the-shelf software (COTS).
The objectives of this testing is to get an early understanding of the system and verify it is fit for purpose.
Big players that use Beta Testing
You may have even noticed some of these strategies used by big players such as Google. Sometimes they roll out an early stage “Beta” and get user feedback, before rolling out the final product.
The idea is to get a good dataset from the intended customers to understand if the system is working before you roll out the fully tested and production-ready version.
What documents are typically used as a test basis for Acceptance Testing?
Like most phases of testing, test cases will typically be drawn up. However, a test basis is required to write the test cases against, are you with me? Typical documents that are used for test basis are as follows:
- User requirements.
- Business requirements.
- System specifications
- Use cases
However, we also discussed OAT earlier. This usually requires some of the following:
- User manuals.
- System backup & restore procedures
- Operational guides
- Deployment instructions
Acceptance Test objects.
As well as the test basis documents. There is obviously the actual objects that will be tested. Such as:
- The full test application (System under test)
- Configuration data (especially with (COTS)
- Business processes
- Operational processes
What defects can you expect to see?
At this stage, defects are expected to be very little. However, as I mentioned earlier, you will expect to see some. The types of defects that usually show up during this phase are as follows:
- The system not meeting the requirements
- Non-functional issues, such as security-related
- Non-functional issues related to system performance.
- Functionality not meeting a regulatory or contractual agreement.
All of these examples are important and need to be investigated. And, at this stage in the project, there is very little time to rectify these issues.
Who is usually responsible for these tests?
During this testing, depending on which type of acceptance testing, there can be various different resources testing it.
For UAT, you would expect the end-users to be involved or potentially some of the stakeholders.
For OAT, this is typically done by system administrators, support workers or a knowledgeable resource that has lots of working knowledge of the system in question.
Regulatory or Contractual
Regulatory and contractual acceptance testing is typically done as a collaborative effort with the actual system testers and a representative (from the regulatory body or third party contract owner/partner).
When is acceptance testing typically done?
As mentioned earlier most people assume that acceptance testing is done at the end of testing after system testing has completed.
In my experience, this is usually been the case. However, it does not necessarily have to happen at this stage. Especially when you are dealing with iterative development methodologies such as agile.
This is because each iteration is like a mini-project within itself or known as a sprint (click here for a full explanation). You may find different types of acceptance testing done at the end of each sprint, treating it like a mini-project.