Acceptance Criteria are a list of requirements or conditions that enhance the effectiveness of user stories. Before any feature can be considered complete or user story fulfilled, acceptance criteria must be met in full.
Acceptance criteria are our guide when assessing how well a build meets requirements during production and in pre-launch final testing. A set of conditions are delivered to the engineering team, listing the features and expected behavior of the final product. This information informs the development of any product or software.
If the requirements are vague, the development team could have difficulty understanding how to proceed. Agile Methodology has helped in this area by introducing us to the concept of user stories which are the simplest form of requirement definition. They incorporate different user perspectives and so can provide usable data that is easily accessible.
User stories and acceptance criteria go hand-in-hand. Well-defined criteria provide clarity, help clear any confusion among the team and allow the raising of any technical constraints before the development starts.
Why Acceptance Criteria makes better User Stories
First, let’s take a look at a typical user story format. The user story has three components:
- Persona – describes the user
- Goals – provide information about the required feature
- Need – defines the purpose
The most commonly seen user story looks like this: As a (<user>), I want to (<define goal>) so that (<need>).
Here’s an example of how the template can look when used: As an online trainer, I want to share training materials so that trainees can read them later.
User stories like the one above show what’s necessary for creating a feature. This product needs to be able to share documents, but there are no further details. The information as it stands could be interpreted differently by various people. Adding acceptance criteria with specific conditions will bridge those gaps and keep the team in sync.
Here, we consider the same example but with additional criteria that can be included:
- The user must be able to share the documents on social media platforms like Facebook and Instagram.
- The user must be able to share the following file types <list file types>.
- The user must be able to share a file size up to <define size limit>.
As we can see, acceptance criteria can provide additional detail for individual users’ stories and assist in smooth feature development.
Key points to consider when writing Acceptance Criteria
When writing user stories, there may not be enough information available at the time to add acceptance criteria. However, the ideal situation is to list everything expected of the product before development starts. Then, when it is possible to add the list, all involved must review the acceptance criteria and reach a mutual agreement.
Some other points to keep in mind when creating acceptance criteria:
- Keep it simple: Write in easy-to-understand, plain language.
- Be sure all requirements are achievable: Acceptance criteria must list essential and possible items. If the story lists too many essentials, the development team may spend disproportionate time on one user story.
- Define ‘What’ and not ‘How’ – The focus must be on defining how the system must behave, not how this behavior must be implemented.
- Clarify the user’s perspective – Always write from a real user’s perspective.
- Include Functional, Non-functional, and Performance criteria – For some products, a minimum standard is needed for acceptance. Recording all these points is beneficial to development.
How do Acceptance Criteria help testers?
Acceptance criteria not only help developers but also offer considerable benefits to testers. They inform testers when to start testing and when the task can be considered complete. In addition, it assists them in understanding what to test.
Acceptance criteria are an essential prerequisite for conducting acceptance testing. ISTQB defines acceptance testing as “Formal testing with respect to user needs, requirements, and business processes conducted to determine whether a system satisfies the acceptance criteria and to enable the user, customers, or other authorized entity to determine whether to accept the system.”
Sometimes, when a product is in QA, it may appear to work perfectly, but there may be hidden flaws. Acceptance criteria help determine that the product matches the defined requirement and that nothing is missing.
Acceptance criteria provide sufficient information for testers to document detailed test scenarios and cases. They also help establish communication between developers and testers to coordinate among themselves and discuss any deviations from the defined requirements.
Although defining and maintaining acceptance criteria takes additional effort, it’s not good practice to ignore them. Done well, they can significantly and positively impact the project’s overall planning, execution, and delivery. Acceptance criteria remove ambiguity around the overall development, define the scope, and ease effort estimation. In addition, they help bring everyone together on the same page, which is a fundamental prerequisite during the early phase of the project.