Quality contract and test risk · Lesson 1

From requirement to acceptance condition

5 min read

Lesson objectives

  • Apply from requirement to acceptance condition to a bounded case and justify the result and its limits.

Software testing begins with an apparently simple question: what behavior do we expect? If an appointment product owner says that bookings must be confirmed quickly, a tester cannot judge a single result. Does confirmation mean a visible message, a stored reservation, or a notification? What delay is acceptable? The description from which testing is derived is a test basis. It might be a requirement, a business rule, or a design. Copying an ambiguous sentence into an expected-result field does not resolve it. The specialist identifies questions and examples; the product owner approves the service rule and its limits.

Separate the user need from observable behavior. The need may be confidence that an appointment was secured. A checkable behavior could be one reservation record and a matching confirmation number within five seconds after the server accepts a valid request. That is an assumed training rule, not a universal requirement for appointment systems. In a real project it needs owner approval. Define the start and end of the clock and its unit. One tester measuring from page opening and another from form submission can disagree because they measured different events.

Write an acceptance condition in terms of a specified starting state, an action, and an observable result. Add conditions that change the outcome. An appointment request may be valid, the slot may be full, or the connection may fail after the request is sent. A disabled button is not proof that no record was created; the server might have committed the booking before the response was lost. For each condition, choose an expected outcome and an available observation, such as a synthetic request log or a lookup interface within the tester's access. Do not expose a real customer's data to recreate a case that synthetic data can represent.

The source that determines the correct outcome is often called a test oracle. It could be an approved business rule, a calculation table, or a trusted reference implementation within known limits. Running the system under test and treating its own answer as proof of correctness is circular. If the application consistently displays the same duplicate confirmation, consistency does not establish that duplication is allowed. Compare both interface and record with the approved rule that one successful request makes one reservation. When documents conflict, record a decision question instead of selecting whichever rule makes the test pass.

Distinguish an acceptance condition from a test case. A condition states the required behavior; a case selects input, initial state, steps, expected result, and evidence. A condition might say that a valid request returns one confirmation number. A case defines a synthetic user and available slot, sends the request once, and checks the record count and identifier. One condition can require several cases: retrying after a timeout, or concurrent requests for the final place. Coverage says which conditions and situations were examined and which remain open. It does not mean that one successful case proves the absence of defects.

Before execution, make the case reproducible. Record the build and environment, put the slot in the required state, and capture a timestamp and request identifier. If server records are inaccessible, use the evidence that is available and state that it cannot establish internal persistence by itself. “No confirmation appeared” is an observation. A connection failure, failed storage, and a delayed response are different possible causes. A defect report should not assert one cause until it is investigated. This approach makes a quality discussion about evidence and its limits rather than whether the product appears to work.

Lesson summary

Apply from requirement to acceptance condition to the case and check what its evidence supports.