Derives human-readable manual test cases from stateful behavior: identify states, events, transitions, and guard conditions, draw the state table including invalid (empty-cell) transitions, choose a coverage level (all states, valid transitions / 0-switch, transition pairs / 1-switch per Chow, all transitions including invalid ones), then derive one test case per coverage item as an event sequence with per-step expected states (ISTQB CTFL v4.0 section 4.2.4). A deep single-technique walkthrough rather than a broad multi-lens case matrix; the output is manual step/expected cases rather than parameterized test code, and it covers how cases are derived rather than how a case record is structured. Use for lifecycle entities (accounts, orders, subscriptions), workflows, and UI wizards where the response to an event depends on the current state.
78
93%
Does it follow best practices?
Impact
77%
0.81xAverage score across 10 eval scenarios
Passed
No findings from the security scan
Our gift cards are printed in batches and sit on the rack by the tills until somebody buys one, at which point the cashier activates it and loads the value onto it. From then on the customer spends it at any till: the terminal deducts the amount from the balance, and if the card does not have enough on it the terminal declines the whole transaction - we do not part-pay and we do not let a card go negative. A card spent down to nothing is still a valid card and can be topped up again at any till, and a refund for something bought with a card goes back onto the card it was paid with.
If a customer reports a card lost or stolen, the contact centre suspends it. Suspension is reversible - people find them again - and while a card is suspended the point of the exercise is that it buys nothing. A customer who does not find it gets the balance moved onto a replacement card, which voids the old one. Finance can also void a card outright, for fraud or for a batch recall, and a voided card is dead permanently.
Two incidents opened this work. A card was taken off the rack before anybody bought it and spent at a till in the same shop; it had never been activated and it had no purchase behind it. And a card that had been reported stolen and suspended on the Tuesday was accepted at a self-checkout on the Wednesday.
The current test pack has six cases: buy and activate a card, spend some of it, spend the rest of it, top it up, suspend it, void it. They all pass.
Produce docs/gift-card-tests.md containing:
Card printing, the loyalty scheme, and the terminal's own hardware are out of scope. Do not write code - these run against a till in the training store.
Extract the following files before beginning.
=============== FILE: docs/gift-card-rules.md ===============
| Situation | Till display | Contact centre display |
|---|---|---|
| Issued | "Card not active" | Not sold |
| Active | Balance | Active, balance, last used |
| Depleted | "Zero balance" | Active, zero balance |
| Suspended | "Card blocked" | Suspended on by |
| Voided | "Card invalid" | Voided on , reason |
| Event | Where |
|---|---|
| activate | Till, when the card is sold |
| redeem | Till or self-checkout, for a purchase |
| reload | Till, adding value |
| refund-to-card | Till, returning goods paid for with the card |
| suspend | Contact centre |
| unsuspend | Contact centre |
| void | Finance, or automatically when a balance is moved off |
| transfer-balance | Contact centre, moving the balance to a replacement |
Eight events. Nothing else changes a card.