Requirement Defects

A requirement defect is a defect in a requirement itself: in a user story, an acceptance criterion, a business rule or a specification. Requirements are part of the test basis, and the ISTQB Foundation syllabus lists their defects (inconsistencies, ambiguities, contradictions, omissions, inaccuracies and duplications) among those that static testing finds more easily or more cheaply than dynamic testing. This lesson covers the four a tester meets most: ambiguous, incomplete, contradictory and missing requirements.

One sentence can show all four. "Customers can cancel an order within 24 hours" is ambiguous (from ordering or from payment?) and incomplete (what happens to the payment?). It contradicts a rule that shipped orders cannot be cancelled, because an order can ship within the 24 hours. And if no requirement covers an order that has partly shipped, that requirement is missing.

Why it matters

A requirement defect does not stay in the document. The developer builds one reading, the tester checks another, and the difference surfaces late, when design, code and tests all have to change. Where a requirement is missing, the behaviour is decided by accident, and the first person to see it may be a customer.

For the tester the cost is direct: a test case needs an expected result, and a defective requirement gives none, or two. Tests written from the same text can even pass against the wrong behaviour, because code and tests share the misunderstanding. This is the ISTQB principle "early testing saves time and money" in practice: a question in a review costs minutes, the same question after release costs a fix and a retest.

Four kinds of requirement defects

Name the kind when you raise a finding, because each kind is resolved differently. ISTQB lists inconsistencies and contradictions separately; this lesson counts both as contradictory. Whether a requirement is correct at all belongs to the lesson on requirements validation.

  • Ambiguous: the text allows more than one reasonable reading, so two careful people could build or test different behaviour and both follow it. Causes include vague words, undefined terms, a missing unit, and a condition that may apply to one item in a list or to all of them.
  • Incomplete: the requirement exists and its main path is clear, but part of its behaviour is not stated, such as an error path, a limit, a role, or what happens on rejection or timeout. You can test the happy path, not the rest.
  • Contradictory: two statements cannot both be true in the same situation, so every possible result breaks one of them. The conflict may be inside a requirement, between requirements, or with a business rule, a design or an API contract (the agreed description of an interface’s requests and responses).
  • Missing: a behaviour or rule the product needs is not written anywhere, so there is no sentence to mark. Unlike an incomplete requirement, the gap is not inside an existing requirement but where none exists.

Where each kind hides and how to look for it

Each kind needs its own search:

  • Ambiguity: try to write two different expected results that both follow the text. If you can, it is ambiguous. Check every number for its unit, its starting point and whether the limit itself is included.
  • Incompleteness: ask of every requirement who may and may not do this, and what happens when the input is invalid, a limit is reached, the action is rejected or a system it depends on fails.
  • Contradiction: compare requirements that touch the same actor, data or rule, and compare them with business rules, designs and the API contract. A decision table, as in the lesson on business rules, shows combinations where two rules demand different actions.
  • Missing requirements: walk the business process end to end, and the life of each object, such as a request, through creation, change, cancellation and expiry; listing its states and events shows events nobody specified. Then check each role and the quality characteristics of ISO/IEC 25010, such as security and reliability.

Try it: Decision Table Generator Try it: State Transition Generator

Worked example: a leave-request specification

An HR portal’s draft specification for leave requests is due for backlog refinement, and the tester reviews it first. Try to find one defect of each kind before reading the findings.

Leave requests: HR portal, release 3 (draft)

LV-1  An employee requests leave by choosing a leave type, a start date and an
      end date.
LV-2  A leave request must be submitted at least 5 days before the leave starts.
LV-3  Team leads and employees with more than 2 years of service receive 30 days
      of annual leave per year. Other employees receive 21 days.
LV-4  The employee’s manager approves or rejects the request. Requests longer
      than 10 days also need approval from HR.
LV-5  Sick leave can be requested on the day it starts.
LV-6  Approved leave days are deducted from the employee’s balance.

Try it: Requirements → Test Cases

The findings and the question to raise for each

Each finding names the kind, the case that exposes it and a question for the requirement owner, here the HR product owner. A good question offers the possible answers instead of asking "what does this mean?", so it can be answered in one line.

  • Ambiguous, LV-3: "with more than 2 years of service" may apply to both groups or only to employees, so a team lead with 1 year of service gets 21 days in one reading and 30 in the other. Ask: "Does a team lead with 1 year of service get 21 or 30 days?"
  • Incomplete, LV-4: it names the approvers, but for a request over 10 days only the outcome when both approve is clear. Ask: "For a 12-day request, who decides first? If the manager approves and HR rejects, what is the final status, and what happens if nobody responds?"
  • Contradictory, LV-2 and LV-5: same-day sick leave is rejected by LV-2 and allowed by LV-5. Ask: "Is sick leave exempt from the 5-day notice in LV-2?" Usually one statement is narrowed; the owner decides which.
  • Missing: nothing says whether an employee can cancel a request; LV-6 deducts days, but nothing returns them. Ask: "Can an employee cancel a pending or approved request, until when, and are the days restored? If this is out of scope for release 3, can we record that?"
  • Also worth raising: are the 5 days in LV-2 calendar days or working days?
The four kinds of requirement defect in the leave-request specification LV-1 to LV-6: the example, the question the tester raises and what resolves each kind.
KindExample in the specificationQuestion to raiseWhat resolves it
AmbiguousLV-3: does "more than 2 years of service" apply to team leads too?Does a team lead with 1 year of service get 21 or 30 days?The owner chooses one meaning and the wording states it
IncompleteLV-4: over 10 days, only the outcome when manager and HR both approve is clearThe manager approves a 12-day request and HR rejects it: what is the final status?The missing branches are added to the same requirement
ContradictoryLV-2 and LV-5: same-day sick leave is both rejected and allowedIs sick leave exempt from the 5-day notice in LV-2?The owner decides which statement wins and the other is narrowed
MissingNo requirement covers cancelling a requestCan an employee cancel a request, until when, and are the days restored?A new requirement is written, or the gap is recorded as out of scope

Try it: AI Requirement Ambiguity Detector Try it: AI Requirement Gap Analyzer

Common mistakes

  • Writing "LV-3 is unclear" with no concrete case or possible readings; the owner cannot answer it.
  • Choosing one reading yourself and testing against it. Your choice becomes an unwritten requirement; ask instead, and get the answer into the requirement.
  • Reviewing each requirement on its own, when contradictions live between statements and between documents.
  • Treating every finding alike. An ambiguity needs a choice of meaning, an incomplete requirement more branches, a contradiction a decision on which statement wins, and a missing requirement a new requirement or an explicit out-of-scope note.
  • Reporting behaviour seen during test execution as a code bug when it matches one reading of an ambiguous requirement; the defect may be in the requirement, so ask its owner first.

The QA perspective

Look for requirement defects as soon as the text exists: in backlog refinement, in requirements reviews, and in test analysis when you cannot derive a test condition. The product owner or business analyst decides; involve developers too, who often spot technical gaps such as limits and failure cases.

Record each finding where the requirement lives, as a story comment or a line in the review log: requirement ID, kind, case, question, who answers and by when. Do not mark a story ready while an open question blocks an acceptance criterion. The answer goes into the requirement text, and your test cases trace to that text, not to a chat message.

Practice exercise

Find the four kinds in a class-booking specification

Your task

A gym app has the draft requirements below for booking group classes. Find at least one ambiguous, one incomplete, one contradictory and one missing requirement, and write the question you would raise for each.

Material
GB-1  Members can book a place in a group class up to 7 days in advance.
GB-2  A class has at most 20 places.
GB-3  Members can cancel a booking free of charge until shortly before the class.
GB-4  Premium and family members with an annual plan can book 14 days before
      the class.
GB-5  Booking for a class opens 7 days before the class starts.
GB-6  When a member cancels, the place is released.
Steps
  1. Mark any part of a requirement that allows two readings.
  2. Ask of each requirement what happens when a limit is reached or an action is rejected.
  3. Compare requirements about the same thing, such as the booking window.
  4. Follow a booking and a class to their end, and list events no requirement covers.
Show the model answer
Model answer

Ambiguous: in GB-4, "with an annual plan" may cover family members only or premium members too: "Can a premium member on a monthly plan book 14 days ahead?" In GB-3, "shortly before": "How many hours before the class does free cancellation end?"

Incomplete: GB-2 ignores the 21st member: "When a class is full, does the member see an error or join a waiting list?" GB-6: "Released to whom, and is that member told?"

Contradictory: GB-4 allows booking 14 days ahead, but GB-5 opens booking only 7 days before: "10 days before a class, can an eligible member book?" GB-1 and GB-5 also state the same rule twice, which is a duplication.

Missing: nothing covers the gym cancelling a class or a member who does not attend: "When the gym cancels a class, how are members told, and do they get anything back? Is there a no-show rule?"

Frequently asked questions

What is the difference between an incomplete and a missing requirement?

Where the gap is. An incomplete requirement exists but leaves out part of its own behaviour, such as an error path or a limit. A missing requirement does not exist at all: a behaviour the product needs, such as cancelling a request, is not described anywhere. You find incomplete ones by questioning each requirement, and missing ones by comparing the requirements with the process, the life of each object and the quality characteristics.

If the developer guessed the meaning correctly, is the ambiguity still a defect?

Yes. The defect is in the requirement, a work product, whether or not it has caused a failure yet. The next developer, a tester or a maintainer may read it the other way, and the test basis still cannot give one expected result. Fixing the wording once the meaning is agreed costs little.

Where do I report requirement defects?

Where the requirement owner works: usually as a comment or question on the story, in the review log of a requirements review, or as an item for refinement. Some teams also log them in the defect tracker with a type such as "requirement" so that they can count them; follow your team’s process.

Can AI tools find these defects for me?

Mutqan’s AI Requirement Ambiguity Detector and AI Requirement Gap Analyzer (sign-in required, with a daily quota) can quickly list candidate ambiguities, contradictions and gaps. They do not know your other documents, decisions or users, so they miss conflicts with rules they never saw and raise gaps already answered elsewhere. Use them after your own reading, and check every suggestion before you raise it.

References

Practise with Mutqan tools

Build decision tables from conditions and actions, generate all rule combinations and collapse impossible ones.

Test Design

Define states and events, then generate a transition table, valid/invalid transition tests and 0-switch/1-switch coverage.

Test Design

Convert a list of numbered requirements into traceable test cases with a requirement-to-test matrix.

Test Design

Detect ambiguous, vague or contradictory statements in requirements and get clarifying questions from Mutqan AI.

Requirement Analysis AI

Find missing requirements — error handling, permissions, edge conditions, non-functional needs — with Mutqan AI.

Requirement Analysis AI

Go deeper

Your progress on this topic

Part of the QA Roadmap