Requirements are a fairly small topic, but the skill of reading and analysing them is large. A lot of a tester's work is tied to requirements, so one way or another I had to write a separate article about them.

The concept

There are many ways to define requirements: customer requirements, user requirements, system requirements and so on. But you cannot really use “requirement” to explain what a requirement is, can you?

A requirement is a statement or constraint on the design of a software product intended to serve a customer's needs.

That is the rough idea. If we say Users can log in with a Google account, that is a requirement because it implies that the customer wants Google-account login and we have to build it.

Another requirement might be Users may log in only after completing a CAPTCHA. It is a constraint on the login feature: the login function must have a CAPTCHA. Or consider The website must run on a Node.js backend. That is also a constraint. The customer-maintenance team knows Node.js, so the backend cannot use another framework.

Typical question: What is a requirement?

Statement and constraint

A requirement in statement form usually says something the product needs to have—a feature or a particular behaviour. Its wording often follows a recognisable structure:

As a user, I want...

When I do..., I want...

A requirement in constraint form states a condition the product design must meet. It is usually a condition for a feature or behaviour to work properly, or a limitation:

User must...

System must...

System needs...

Typical question: What is the difference between a statement and a constraint?

Typical question: What does a requirement look like?

Types of constraint

The basic constraint types are roughly:

Typical question: What are the types of constraint?

Levels of requirement

Requirements also have levels, as shown in the diagram:

Requirement levels
Requirement levels

The simple version is:

For example, a user-level requirement in a banking app might be Users can track their spending for the month. A system-level requirement could be The system must retain each user's spending data for the most recent 365 days and allow monthly statistics to be queried.

Typical question: What are the levels of requirements?

Functional and non-functional requirements

The diagram also shows “functional” and “non-functional”. These are two basic requirement types:

A functional example is Users can log in with a Google account. A non-functional example is The system must handle 100 users accessing and using it concurrently.

Typical question: What are functional and non-functional requirements?

Studying and clarifying a requirement

To “study” a requirement—to read it, analyse it and verify our own understanding—a tester goes through a chain of activities:

The first two are straightforward: read and break things down. Reading is easy unless you cannot read, but it depends on how the requirement is written. Sometimes the wording is extremely obscure or ambiguous. Note that immediately and take it to the BA to clarify.

Assume the requirement is reasonably clear. We can imagine what the customer wants and move to analysis. We do not analyse a requirement in quite the same way a developer does. A developer analyses it to understand the feature and build it. We understand it to see how users will use the feature, then plan how to test it when development hands it over.

Typical question: What are the steps to study a requirement?

Study a functional requirement

To study a functional requirement, extract information from the prose and fill in these areas:

Typical question: What are the steps to study a functional requirement?

Study a UI/UX requirement

This part can be quick. Studying an interface requirement means going through three things:

When testing the interface, the product UI needs to match the design on all three fronts.

Typical question: What are the steps to study a UI/UX requirement?

Clarify a requirement

To verify a requirement, we create questions that help us understand or validate it.

Before sending a question, make sure:

Normally, raise questions with the Lead first, because:

Typical question: What should we do when raising a question?

References