Test Scenarios vs Test Cases vs Checklists
Learn the difference between test scenarios, test cases and checklists, when each one fits, and how to turn a user story into all three, with a hands-on sorting exercise for a food delivery app.
It’s Monday at a food delivery startup. Your lead drops a message in the team chat: “Reorder ships next sprint. Can you put the testing together? Scenarios first, then whatever else you think we need.”
Scenarios? Test cases? Someone else on the team keeps talking about “the regression checklist”. Are those three names for the same thing? (They’re not.) This lesson sorts them out, so you know which one to write, how much detail to put in, and why.
Three artifacts, three questions
Each artifact answers a different question:
| Artifact | Answers | Looks like |
|---|---|---|
| Test scenarioTest scenarioA high-level idea of what to test, such as 'User resets a forgotten password'.Open in glossary → | What should we test? | One line: “Reorder when the restaurant is closed” |
| Test caseTest caseA written set of steps, data and an expected result used to check one specific behavior.Open in glossary → | How exactly, and what counts as a pass? | Preconditions, steps, data, expected result |
| ChecklistChecklistA simple list of things to check, lighter and faster to use than full test cases.Open in glossary → | What must I remember to check? | A list of short checks to tick, no steps |
Use the zoom below to see one idea (reordering a past order when some items are sold out) at all three levels of detail.
Zoom: one idea, three levels of detail
FoodDash app · "Reorder a previous order" when some items are sold out
What should we test?
SC-RO-02
Reorder a past order when some of its items are sold out
- Time to write
- ~10 seconds
- Who can run it
- Anyone who knows the feature, using their own judgment
- Best for
- Planning coverage, talking with the product owner, the first pass over a user story
The essentials
When to use which
- Scenarios to plan and agree on coverage with your team, fast. Always start here.
- Test cases where mistakes are costly or proof is needed: payments, banking, health, anything regulated. Also when new people will run the tests.
- Checklists for quick, repeated checks by people who know the app: a smokeSmoke testingA quick check of the most important features to decide if a build is stable enough to test further.Open in glossary → round on each build, a quick sanitySanity testingA quick, focused check that a specific fix or change works and nothing obvious around it broke.Open in glossary → check after a small fix, a light regression pass, or reminders during exploratory testingExploratory testingLearning, designing and running tests at the same time, guided by curiosity and a goal.Open in glossary →.
How they relate
One scenario → several test cases. “Reorder when some items are sold out” becomes: 1 of 3 items sold out, every item sold out, a sold-out item with extras. Checklists don’t sit in that chain. They cut across it as quick reminders.
From user story to tests in one line
Read the user storyUser storyA short description of a feature from the user's point of view.Open in glossary → and its acceptance criteriaAcceptance criteriaConditions a user story must meet to be considered done and accepted.Open in glossary → (how they work) → list the scenarios (happy path, problems, limits) → turn the risky ones into test cases → collect quick checks into a checklist.
How much detail?
Write enough that someone who has never seen the app gets the same Pass or Fail as you, and no more. For the full guide to writing a single case, see How to Write Test Cases.
Switch to Detailed at the top for each artifact in depth, a full worked example from user story to test cases, and how to keep them maintainable.
Test scenarios in depth
A test scenarioTest scenarioA high-level idea of what to test, such as 'User resets a forgotten password'.Open in glossary → is a one-line description of a situation worth testing. It names the user, the action and the twist, and stops there.
Good scenarios share three traits:
- They describe a situation, not a click path. “Reorder when the cart already has items from another restaurant”, not “Tap Orders, tap Reorder”.
- They can be read by anyone. Product owners, designers and developers can review a list of scenarios in five minutes and say “you forgot the closed-restaurant case”.
- They cover the unhappy paths too. For every happy scenario, ask: what if something is missing, wrong, late, or at its limit?
Clear scenarios
- Reorder a delivered order with all items available
- Reorder when some items are sold out
- Reorder when prices have changed since the original order
- Reorder from a closed restaurant
Too vague or too detailed
- Test Reorder (what about it?)
- Reorder works (that’s a hope, not a scenario)
- Tap Orders, tap Reorder on #1042, check 1 × Margherita (that’s already a test case)
Test cases in depth
A test caseTest caseA written set of steps, data and an expected result used to check one specific behavior.Open in glossary → turns one slice of a scenario into exact instructions: preconditionsPreconditionSomething that must already be true before you can start a test.Open in glossary →, numbered steps, test dataTest dataThe input values, accounts and records you use while testing.Open in glossary → and an expected resultExpected resultWhat should happen when you perform a test step, according to the requirements.Open in glossary → that can only pass or fail. Everything about writing one well is in How to Write Test Cases. Here we focus on one question that lesson leaves open: how detailed should a case be?
How detailed should a test case be?
There’s no single right answer, but there is a good rule: detail should follow risk and the reader.
| Situation | Detail level | Example step |
|---|---|---|
| Regulated or money flow, new testers | High | “Tap Reorder on order #1042 (Luigi’s, 3 May)” |
| Normal feature, team knows the app | Medium | “Reorder order #1042” |
| Low risk, experienced team | Low (maybe a checklist) | “Reorder works for a past order” |
Two tests for “enough detail”:
- The new-tester test. Could someone on their first day run it without asking you a question?
- The two-tester test. Would two testers running it independently agree on Pass or Fail?
If either answer is no, add detail. If the case describes every pixel and breaks whenever a button moves, you’ve gone too far.
Right amount of detail
Steps: 1. Open the Orders tab. 2. Tap Reorder on order #1042.
Expected: Cart shows 1 × Margherita (no olives) at today’s price, with the message “2 items are no longer available”.
Over-specified
Steps: 1. Tap the third icon from the left in the bottom bar (grey clock). 2. Scroll down 240 px. 3. Tap the green button in the top-right of the second card.
Expected: Total is exactly 11.90 €.
The bad example breaks the moment the designer changes a color or the restaurant changes a price, even though nothing is wrong with Reorder.
Checklists in depth
A checklistChecklistA simple list of things to check, lighter and faster to use than full test cases.Open in glossary → is a list of short checks without steps or detailed expected results. It trusts the tester to know how to get there and what “right” looks like. That’s what makes it fast to write, fast to run and cheap to update.
Checklists come in two main flavors:
- Smoke and regression checklists. The 10 to 30 things you check on every build or before every release (see Regression and Smoke Suites), such as “Reorder button shows on delivered orders” or “Cart badge updates”.
- Heuristics checklists. Reminders of kinds of things that often break, used while exploring: rotate the phone, interrupt with a call, go offline, switch to dark modeDark modeA display setting that uses light text on dark backgrounds.Open in glossary →, turn on large text, try a screen readerScreen readerSoftware that reads the screen aloud for blind and low-vision users, like VoiceOver or TalkBack.Open in glossary →.
Checkable items
- Sold-out items are skipped, not added at 0 €
- Extras such as “no onions” are kept
- Reorder button is at least 44 × 44 pt
Not checkable
- Reorder is good
- Check everything about the cart
- Make sure there are no bugs
How they fit together
User storyAs a returning customer, I want to reorder a previous order so I can get my usual meal in two taps.
Scenario: Reorder with all items available
- Test case: TC-RO-001 One item, no extras
- Test case: TC-RO-002 Several items with extras kept
Scenario: Reorder when some items are sold out
- Test case: TC-RO-007 2 of 3 items sold out
- Test case: TC-RO-008 Every item sold out
Scenario: Reorder when the cart has another restaurant
- Test case: TC-RO-011 Tap Cancel keeps old cart
- Test case: TC-RO-012 Tap Start new replaces cart
- …and three more scenarios
Checklists alongside
- Reorder smoke check (every build)
- Mobile heuristics: rotate, interrupt, offline, dark mode
- Accessibility quick check
- A user story gives you a handful of scenarios.
- Each scenario produces two or more test cases: the happy one, the negative ones, the limits.
- Checklists run alongside: a smoke checklist for every build, a heuristics checklist for exploratory sessions.
Linking each test case back to its scenario and story is what makes a traceability matrixTraceability matrixA table linking each requirement to the test cases that cover it.Open in glossary → possible: you can show which requirement is covered by which tests.
When to use which
| Context | Lean towards | Why |
|---|---|---|
| Banking, health, regulated | Detailed test cases | Auditors want evidence; mistakes are costly |
| Fast startup, frequent releases | Scenarios + checklists | Cheap to write and update as the app changes |
| New testers on the team | Detailed test cases | They teach the product and keep results consistent |
| Experienced testers | Checklists | They know the “how”; save time for exploring |
| Regression pack run often | Cases for risky flows, checklist for the rest | Balance repeatability and upkeep |
| Exploratory session | A short goal + heuristics checklist | Freedom to follow your curiosity |
Worked example: from user story to scenarios to cases
Here’s the full journey for FoodDash’s Reorder feature.
- Read the story and mark every rule. Six criteria, three numbers or limits (90 days, N items, opening time) and three messages. Write down questions: does “last 90 days” include day 90? What happens if every item is sold out?
- List the scenarios. One per rule at least, plus the unhappy and edge situations you can think of:
- SC-RO-01 Reorder a delivered order with all items available
- SC-RO-02 Reorder when some items are sold out
- SC-RO-03 Reorder when prices changed since the original order
- SC-RO-04 Reorder from a closed restaurant
- SC-RO-05 Reorder when the cart has items from another restaurant
- SC-RO-06 Reorder button visibility (age of order, canceled orders)
- Review the scenarios with the team. Share the list in refinement. The product owner answers: day 90 is included; canceled orders never show Reorder; if every item is sold out, the cart doesn’t open and the message reads “None of these items are available right now”.
- Turn the risky scenarios into test cases. Money, data and confusing states get full cases. Below are four of them.
- Collect the quick checks into a checklist. UI and platform details that an experienced tester can check in seconds.
Four of the test cases
TC-RO-002Reorder keeps all items and their extraspositivehigh
Preconditions
- Signed in as tom@test.com
- Order #1038 from Luigi's delivered yesterday: 2 × Margherita (no olives), 1 × Coke
- Luigi's is open and all items are available
- Cart is empty
Steps
- Open the Orders tab
- Tap 'Reorder' on order #1038
Expected result
The cart opens with 2 × Margherita showing the extra 'no olives' and 1 × Coke. No 'not available' message appears.
TC-RO-007Sold-out items are skipped and counted in a messagenegativehigh
Preconditions
- Signed in as tom@test.com
- Order #1042 from Luigi's delivered 3 days ago: Margherita (no olives), Garlic bread, Tiramisu
- Garlic bread and Tiramisu are marked sold out
- Cart is empty
Steps
- Open the Orders tab
- Tap 'Reorder' on order #1042
Expected result
The cart opens with 1 × Margherita (no olives) only. The message '2 items are no longer available' is shown. The total equals today's Margherita price plus the delivery fee.
TC-RO-013Reorder shows on a 90-day-old order but not on a 91-day-old oneedgemedium
Preconditions
- Signed in as tom@test.com
- Order #2210 delivered exactly 90 days ago
- Order #2211 delivered exactly 91 days ago
Steps
- Open the Orders tab
- Scroll to orders #2210 and #2211
Test data
Order dates set in the test database relative to today
Expected result
Order #2210 shows an enabled 'Reorder' button. Order #2211 shows no 'Reorder' button.
TC-RO-011Cancel on 'Start a new cart?' keeps the existing cartnegativehigh
Preconditions
- Signed in as tom@test.com
- Cart contains 1 × Classic burger from Burger Bros
- A delivered order #1050 from Sushi Go exists
Steps
- Open the Orders tab
- Tap 'Reorder' on order #1050
- In the 'Start a new cart?' dialog, tap 'Cancel'
Expected result
The dialog closes. The cart still contains only 1 × Classic burger from Burger Bros. No Sushi Go items were added.
Tip: click a test case to expand it.
The Reorder checklist
- Reorder button visible on delivered orders only
- Button readable in light and dark mode
- Button is at least 44 × 44 pt (iOS) / 48 × 48 dp (Android)
- Screen reader announces “Reorder, order from Luigi’s, 3 May”
- Cart badge shows the new item count
- Price-change note appears when the total differs
- Double-tapping Reorder doesn’t add the items twice
- Works after rotating and after returning from the background
- Offline: a clear “No connection” message, nothing half-added
Keeping them maintainable
Tests that nobody updates turn into noise: they fail for the wrong reasons, so people stop trusting them. A few habits keep your tests useful:
- Name things by label, not by position or color. “Tap Reorder”, not “tap the green button on the right”.
- Don’t hard-code values that change. Prefer “today’s price for Margherita” over “11.90 €”, unless the exact number is what you’re testing.
- Keep data in preconditions or test data, not buried in steps. It’s easier to update one line than to hunt through ten steps.
- Link every case to its scenario and story. When the story changes, you instantly know which cases to review.
- Prune. When a feature is removed or redesigned, archive the old cases. A pack of 300 cases where 80 are outdated is worse than a pack of 220 that are all correct.
- Promote and demote. A checklist item that keeps finding bugs deserves a full case. A case that has passed unchanged for a year in a low-risk area can shrink to a checklist line.
Common mistakes
Practice: sort the Reorder pile
A teammate pasted everything for Reorder into one document. Sort each item into the right artifact, then pick the artifact that fits each workplace situation.
Sort the Reorder pile
A teammate dumped everything for FoodDash "Reorder" into one document. Sort it out.
Part 1 · Scenario, test case or checklist item?
0 / 10 sorted
Reorder when the restaurant is closed
Precondition: order #1042 delivered 3 days ago (Margherita, no olives). Steps: 1. Open Orders 2. Tap Reorder on #1042. Expected: cart opens with 1 × Margherita (no olives) at today's price.
Reorder button is readable in dark mode
Customer reorders while the cart already has items from another restaurant
Steps: 1. Add a burger from Burger Bros 2. Open Orders 3. Tap Reorder on a Sushi Go order. Expected: dialog "Start a new cart?" with Cancel and Start new. Cancel keeps the burger.
Extras and notes (e.g. "no onions") are kept after reorder
Reorder an order where every item is sold out
Reorder button is at least 44 × 44 pt on iOS
Data: order #2210 delivered 90 days ago, order #2211 delivered 91 days ago. Steps: open Orders and scroll to both. Expected: Reorder shows on #2210 only.
Cart badge shows the new item count
Sort every item to check your answers.
Part 2 · Which artifact fits?
0 / 5 answered
1. Banking app. Auditors want proof of exactly what was tested for the new daily transfer limit, step by step, with results.
2. Refinement meeting tomorrow. The product owner wants to agree what will be covered for the new Reorder story before anyone writes detailed tests.
3. Startup, two releases a week. An experienced tester does a 10-minute check of the settings screen on every build.
4. A new tester joins next week and must run the release regression of the payment flow alone.
5. You are about to explore Reorder for 60 minutes and want reminders like rotation, interruptions, slow network and dark mode.
Before you hand over your test pack
Test pack checklist
0 of 8 checked
Check your understanding
Quick quiz
0/6 answered · 0 correct
1.Which of these is a test scenario?
2.What does a checklist usually leave out compared with a test case?
3.A banking app must prove to auditors exactly what was tested for a new transfer limit. What fits best?
4.How do scenarios and test cases usually relate?
5.Which step makes a test case harder to maintain?
6.You have 60 minutes to explore a new feature. What helps most?
Key takeaways
- A scenario says what to test in one line, a test case says exactly how and what counts as a pass, and a checklist is a list of quick checks without steps.
- Start with scenarios: they’re fast to write and easy for the whole team to review.
- One scenario becomes several test cases. Checklists run alongside, for smoke, regression and exploratory reminders.
- Match detail to risk and reader: detailed cases for money, regulated flows and newcomers; checklists for experienced testers and frequent checks.
- Keep tests maintainable: use labels not positions, avoid hard-coded values, link to stories, and prune old ones.
Finished this page?Nice work, this page is complete!
Mark it as done to track your progress. It's saved in this browser, no account needed.
Its review cards are now in Bites ⚡