Case study 01 · Functional Analysis

From Requirement to UAT

Turning an ambiguous business request into a defined process, testable requirements, business rules, acceptance criteria and UAT scenarios.

Functional AnalysisRequirements AnalysisBusiness RulesProcess AnalysisUser StoriesAcceptance CriteriaRisk AnalysisTraceabilityUAT
01

Business need

Start with the problem, not the solution.

We want customers to be able to cancel their reservation from the application and receive a refund automatically.

It sounds clear until we try to define exactly when cancellation is allowed, how much is refunded, which state changes first and what happens when payment operations fail.

02

Discovery

Questions before requirements

Eligibility

  • Can every reservation be cancelled?
  • Is there a deadline?
  • Are some products non-refundable?

Money

  • Is refund always 100%?
  • Are service fees refundable?
  • How do discounts affect the refundable amount?

Time

  • Which timezone controls the cutoff?
  • What happens exactly at 24 hours?

Payment

  • Can every payment method be refunded automatically?
  • What if the provider rejects or times out?

Process

  • When does the reservation become CANCELLED?
  • Can refund and reservation states diverge?

Security

  • Who is allowed to cancel?
  • Can support act on behalf of a user?
03

Process analysis

AS-IS → pain points → TO-BE

AS-IS

01Customer contacts support
02Agent checks reservation
03Agent cancels manually
04Refund requested
05Provider processes refund
06Support notifies customer
Manual processSlow responseOperational dependencyInconsistent policy applicationLimited visibilityHuman error risk

TO-BE

01My Reservations
02Request cancellation
03Check eligibility
04Calculate refund
05Show conditions
06Confirm
07Register cancellation
08Request refund
09Show statuses
04

Requirements

Define what the system must do.

FR-01

Allow an authenticated customer to request cancellation of an eligible reservation.

FR-02

Evaluate cancellation eligibility according to the applicable cancellation policy.

FR-03

Calculate the refundable amount before confirmation.

FR-04

Display refund amount and cancellation conditions before confirmation.

FR-05

Require explicit customer confirmation before executing cancellation.

FR-06

Request refund through the original payment method when supported.

FR-07

Transition reservation to CANCELLED only after cancellation is successfully registered.

FR-08

Track refund state independently from reservation state.

FR-09

Expose current cancellation and refund status to the customer.

FR-10

Notify the customer when the cancellation request is registered.

05

Business rules

Define the conditions that govern the behaviour.

BR-01

Self-service cancellation is available until 24 hours before service start.

BR-02

Eligibility uses the local timezone of the booked service.

BR-03

NON_REFUNDABLE reservations cannot be cancelled through self-service.

BR-04

More than 72 hours before service: 100% of refundable base.

BR-05

Between 24 and 72 hours: 50% of refundable base.

BR-06

Less than 24 hours: self-service cancellation unavailable.

BR-07

Promotional discounts are already reflected in the amount actually paid.

BR-08

Service fees are non-refundable.

BR-09

A cancellation request cannot be processed twice.

BR-10

A refund failure must not create a second cancellation request.

06

Executable rule model

Turn business rules into deterministic behaviour.

R-01

96h · refundable

Paid €120 · Fee €10

Eligible110.00
FULL_REFUND
R-02

48h · refundable

Paid €120 · Fee €10

Eligible55.00
PARTIAL_REFUND
R-03

12h · refundable

Paid €120 · Fee €10

Not eligible0.00
LESS_THAN_24H
07

User story

Translate the analysis into a buildable slice.

As a customer, I want to cancel an eligible reservation from the application, so that I can manage my booking without contacting customer support.
08

Acceptance criteria

Make the expected behaviour testable.

AC-01

Given a refundable reservation >72h before service, when cancellation is requested, then display a 100% refund of refundable base excluding service fees.

AC-02

Given a reservation 24–72h before service, when cancellation is requested, then display a 50% refund of refundable base.

AC-03

Given a reservation <24h before service, when cancellation is attempted, then self-service cancellation is unavailable and the policy is explained.

AC-04

Given a NON_REFUNDABLE reservation, when cancellation options are shown, then the cancellation action is disabled.

AC-05

Given an eligible reservation, when the refund request fails before completion, then no inconsistent reservation state is created and the user receives an explanatory message.

AC-06

Given a cancellation already submitted, when the user submits again, then duplicate processing is prevented.

09

System states

Reservation status and refund status are different business concepts.

Reservation
01CONFIRMED
02CANCELLATION_PENDING
03CANCELLED
04COMPLETED
Refund
01NOT_REQUIRED
02PENDING
03PROCESSING
04COMPLETED / FAILED
10

Impact analysis

One feature can touch multiple systems.

Customer AppCancellation UX
Booking ServiceEligibility and state
Policy ServiceCancellation policy
Payment ServiceRefund request
Notification ServiceCustomer communications
DatabaseStatuses and audit history
SupportOperational visibility
AnalyticsCancellation events
11

Traceability

Keep the rule connected from requirement to validation.

RequirementBusiness RuleAcceptance CriteriaUAT
FR-02BR-01, BR-02, BR-03, BR-06AC-01, AC-02, AC-03, AC-04UAT-01, UAT-02, UAT-03
FR-03BR-04, BR-05, BR-08AC-01, AC-02UAT-01, UAT-02, UAT-04
FR-06BR-10AC-05UAT-05
FR-05BR-09AC-06UAT-06
12

UAT

Validate the intended business process, not only the implementation.

UAT-01

Full refund cancellation

Reservation cancelled · correct refundable amount · refund initiated · confirmation visible

UAT-02

Partial refund cancellation

50% refund calculated correctly

UAT-03

Outside permitted period

Cancellation unavailable · policy explained

UAT-04

Service fee exclusion

Non-refundable fee excluded correctly

UAT-05

Payment provider failure

No inconsistent reservation state

UAT-06

Duplicate cancellation

Only one cancellation processed

UAT-07

Refund still processing

Reservation CANCELLED · Refund PROCESSING · correct user status

Gherkin evidence
Scenario: Full refund more than 72 hours before service
  Given a refundable reservation starts in 96 hours
  And the customer paid 120 EUR including a 10 EUR non-refundable service fee
  When the customer requests cancellation
  Then self-service cancellation is available
  And the refundable amount is 110 EUR
13

Risk-based validation

Prioritise by business impact.

High impact · higher probability
  • Incorrect refund calculation
  • Duplicate cancellation
  • Reservation cancelled without refund request
High impact · lower probability
  • Provider inconsistent response
  • Concurrency from two devices
14

Analysis outcome

From ambiguity to testable behaviour

Business rules clarified

Cancellation windows, refund calculation and eligibility conditions were translated into explicit, testable rules.

Boundary conditions defined

The exact behaviour around the 24h and 72h thresholds was identified as a critical area requiring unambiguous definition.

System behaviour modelled

Reservation and refund states were separated to prevent inconsistent combinations and unclear transitions.

Dependencies identified

The analysis connected cancellation behaviour with payment, refund, notification and reservation status.

Traceability established

Business need → requirements → rules → acceptance criteria → test scenarios → UAT.

Risk-based coverage defined

Testing effort was prioritised around financial impact, boundary conditions, duplicate actions and state consistency.

15

Takeaway

Quality can start before a test case exists.

Testing asks: “Does the system work?” Functional analysis also asks: “Have we defined the right behaviour in the first place?”