- About Us
- Contact Us
- Course Calendar
This article is in split into two parts. The first part discusses acceptance criteria. The second part discusses how to get the “right” acceptance criteria. The paper argues that the terms “acceptance criterion” and “requirement” do not have the same meaning, but are closely related.
Some people elicit requirements because it is their job to get them met. Other people want to have their requirements met. The people talk to each other and eventually agree on a set of requirements that have acceptance criteria for new or modified products.
Let’s define a product as anything that has been produced. A produced thing could be any from the following list:
The list above is not exhaustive, it gives an idea of the almost limitless possibilities of what a product could be.
Ideally, the involved people work as a team and with varying degrees of formality to produce a product. Elicitors use varying degrees of formality to document the acceptance criteria for that product as defined by the staters.
Testers should test a product before it is released for use by its users. The testers test the product to know whether it meets its functional and non-functional requirements.
The functional requirements describe what a product must be able to do or be used for: e.g. the car must be usable to make journeys.
The non-functional requirements describe how well the product must meet its functional requirements: e.g. the car shall consume less than 7 litres of fuel per 100 kilometres travelled.
A functional requirement is a statement of intent.
A non-functional requirement is a measure of success. There should be at least one and usually several of these per functional requirement.
See the standard ISO/IEC 25010 for a guide to functional and non-functional requirements.
When running tests, the testers use acceptance criteria based on requirements to validate and verify that the product or service meets its:
Functional requirement acceptance criteria:
And non-functional requirement acceptance criteria:
Each acceptance criterion is either met or not met – nothing in between. No acceptance criterion is ever part met.
Validation vs Verification
Product is Valid
Product is Verified
|Happy user and buyer
Happy user: unhappy buyer
Unhappy user: happy buyer
Doom and gloom
Figure 1: Validation v Verification
The customers of a product/service want to be sure that it is both valid and verified.
One part of the Agile Manifesto says “we value customer collaboration over contract negotiation”. What does that mean? An interpretation is that it is more important that users of a product or service see it as being fit for its intended purpose (valid) than that the purchaser agrees that the product or service meets its contracted obligations (verified). Of course, in an ideal world, the users and the purchaser would both be satisfied.
In a nutshell, users want the right product built right: purchasers (those paying for the product’s development) seek completion on time, within spend limit, and compliance with contract clauses.
Because the product buyer is not always a user of the product, employees of organisations sometimes must use products or services that have been bought by people who don’t have to use those products or services.
When a product is perceived by is users as not valid (even if verified), the outcome can be loss of morale: the product doesn’t get used: is “worked around”: or a combination of all three. See Figure 1: Validation v Verification. In some cases, the purchasing organisation loses customers because the customers are dissatisfied.
The buyer of the product or service negotiates a contract with the supplier (internal or external). The product is bought, or is built, or is changed, or is bought and changed.
Testers test it to make sure that it follows the contract. Users use it, then grumble that it is not fit for its intended purpose: “It doesn’t work for me”. The product is verified but invalid: a classic case of wrong product built right and is a result of not enough collaboration amongst the buyers, suppliers, and users.
Validation is the process of making sure that the users have the right product or service. Verification is the process of making sure that the product or service follows its contract.
What we look for is the right product built right.
An acceptance criterion is used to confirm that a product is fit for its intended purpose and or follows any contracted obligation. Usually, there is more than one acceptance criterion. The plural of criterion is criteria. To show that a product is fit for purpose (valid) and meets its contract (verified), acceptance testers test it against a set of acceptance criteria. See Figure 2: Iterative Agreement below: some but not all types of acceptance criterion are shown.
Example Acceptance Criteria
Figure 2: Iterative Agreement
Get “good” acceptance criteria from a combination of people who will be affected by the new or changed product, process, or structure. The elicitor or elicitation team is not likely to be able to talk to everyone so will need to talk with representatives. Some of those representatives will be future users, others will be purchasers, yet others will be developers, organisation architects, organisation change managers, testers, trainers… the list can go on and on.
If you want “good” acceptance criteria, have lots of conversations with the people that really matter – the ones that will use the product or service.
Ensure that every acceptance criterion, functional and non-functional, is specific and testable i.e.has a measurement and has been recorded. The records can be informal, perhaps post-it notes on a wall, or formal, perhaps in a database or specification document of some kind.
If you want to know what a horse needs, then ask that horse. Only that horse knows what that horse needs and different horses have different needs: so, it’s no good asking just one horse, you need to ask some horses to gain a consensus.
Asking the jockey, owner, punter, stable hand, or anyone else what the horse wants is a waste of time. Horses know what horses want. Workers know what workers want not their bosses.
In the end, of course, the horses will tell you if the received product is acceptable.
There are many kinds of horses. Do get the acceptance criteria straight from the horses’ mouths and not from some proxy. At the very least, describe a typical horse of a type and then try to second guess what that “typical” horse would want.
Avoid the so-called “waterfall”
A logical approach is in sequence to get requirements, then design a solution, then build/buy that solution, then test it, and finally deploy it. Some organisations wanting to reduce the risk of time and cost over-runs attempt to freeze the outcome from each step by not allowing any changes. Such organisations try to ignore the fact of change. The eventual product/service/process/structure meets the contract but is unfit for purpose. Do not try to deny or stop change. Change will happen.
To misquote Sir Winston Churchill, “trying to stop change is like a person standing in a bucket and trying to lift themselves up by tugging on the bucket’s handle.”
Do use an Iterative, Incremental, Evolutionary, Collaborative, Change-welcoming Approach
Please see Figure 2: Iterative Agreement above. As an integrated team work together to specify, design, develop, test, and deploy a little, early, and often.
This is an approach that has been understood and used by successful teams for many thousands of years.
The idea is to get it “righterer soonerer” – appalling grammar but it illustrates the principle that the sooner you show your customer something the sooner they can say “that’s not quite what I meant.” If you would like to call this approach “Agile” then please do, but just remember that it is not new.
Post by John Watson