Writing a Test Plan
Learn what a test plan is, which sections it needs, how to prioritize with risk-based testing and how to keep it to one useful page, with a worked example for Apple Pay and Google Pay at checkout and a hands-on plan builder.
Your lead pings you on Tuesday: “We’re adding Apple Pay and Google Pay to checkout in the shopping app. Can you write the test plan by Thursday? Keep it to a page. We’ll go through it at stand-up.”
A test plan can sound like a 40-page document nobody reads. It doesn’t have to be. A good one fits on a page, takes an hour to write, and saves days of “wait, were we supposed to test that?” This lesson shows you how to write one.
What a test plan is (and isn’t)
A test planTest planA document describing what will be tested, how, by whom, when, and what 'done' means.Open in glossary → is a short document that answers, for one project, release or feature: what will we test, what won’t we test, how, where, with what, by whom, by when, and how do we know we’re done?
| Test strategy | Test plan | |
|---|---|---|
| Covers | The whole product or company | One release, feature or sprint |
| Lifespan | Years, changes rarely | Weeks, changes often |
| Example | “Every release gets a smoke test on 5 real devices” | “Test Apple Pay on iPhone 16 and iPhone SE this sprint” |
A test strategyTest strategyThe high-level, long-term approach to testing used across a company or product.Open in glossary → sets the general rules; the plan applies them to one piece of work. Small teams often have no written strategy at all, and that’s fine: the plan just states the approach directly.
A test plan isn’t:
- A list of test cases. The plan says what areas get tested and how deeply. The cases live elsewhere and are linked from it. (See Test Scenarios vs Test Cases vs Checklists.)
- A promise to test everything. It’s a set of choices, made on purpose and written down.
- Write once, forget. When scope or dates change, update it. A wrong plan is worse than none.
The essentials
The sections of a one-page plan
| Section | Answers |
|---|---|
| Scope (in / out) | What we test, and what we deliberately don’t |
| Objectives | What “good” means for this feature |
| Approach | Which kinds of testing, in what order |
| Environments & devices | Where: staging, devices, browsers |
| Test data | Accounts, test cards, coupons |
| Entry / exit criteria | When we can start, when we’re done |
| Risks | What could go wrong, and what we do about it |
| Schedule & people | Who does what, by when |
| Deliverables | What we hand over at the end |
Risk-based testing in one minute
You never have time to test everything equally, so you test the riskiest things first and deepest. For each risk, rate:
- Likelihood: how likely is it to go wrong? (Low 1, Medium 2, High 3)
- Impact: how bad would it be? (Low 1, Medium 2, High 3)
Risk score = likelihood × impact. “Customer charged twice” is medium likelihood (2) × high impact (3) = 6, so it’s tested before “wallet button looks off in dark mode” (2 × 1 = 2).
Keep it short and reviewed
For a sprint or a feature, aim for one page. Write it, then spend 10 to 15 minutes going through it with the developer and product owner. Their “oh, that’s out of scope” or “you forgot Samsung phones” is the most valuable feedback you’ll get all sprint.
Switch to Detailed at the top for every section explained with examples, lightweight vs formal plans (IEEE 829 and ISO/IEC/IEEE 29119-3), a full one-page example and a copyable template.
Lightweight vs formal test plans
There are two very different styles out there, and you’ll likely meet both.
| Lightweight (agile) | Formal | |
|---|---|---|
| Length | One page, often a wiki page | 10 to 50 pages |
| Written for | A feature, sprint or release | A whole project or contract |
| Updated | Whenever things change | Through versioned approvals |
| Typical in | Startups, product teams, most apps | Banking, medical, government, outsourcing |
The classic formal template comes from IEEE 829, the old “Standard for Software and System Test Documentation”. It has been replaced by the ISO/IEC/IEEE 29119 series, whose part 3 (ISO/IEC/IEEE 29119-3) covers test documentation. That’s the name you’ll see in modern contracts and audits. Both describe much the same contents: test items, features to be tested and not tested, approach, pass/fail criteria, suspension and resumption criteria (when to pause testing, for example if the build is too broken), deliverables, environment, responsibilities, schedule, risks and approvals.
The sections, one by one
Scope: in and out
List the features and platforms you will test, and just as clearly, what you won’t. “Out” doesn’t mean “unimportant”. It means “not part of this piece of work” or “someone else covers it”.
Specific scope
In: Apple Pay in the iOS app, Google Pay in the Android app, canceling the wallet sheet, wallet unavailable, confirmation email, regression of card and PayPal.
Out: Wallets on the web shop (next quarter), express checkout on product pages, PayCo’s server load.
Vague scope
In: Checkout.
Out: —
Objectives
One to three sentences on what success means, in user and business terms: “Customers can pay with Apple Pay and Google Pay and get a correct order. Nobody is charged twice or the wrong amount.” Objectives help you decide what matters when time runs short.
Approach and test types
Say which kinds of testing you’ll do and how deep. For example: scripted test casesTest caseA written set of steps, data and an expected result used to check one specific behavior.Open in glossary → for payment and order creation; exploratory testing sessions for the wallet sheet and interruptions; a regression checklist for old payment methods; accessibility testingAccessibility testingChecking that people with disabilities can use the product, for example with a screen reader.Open in glossary → of the new button with a screen reader. Mention what is automated, if anything, so nobody duplicates it by hand.
Environments and the device/browser matrix
Where will you test? Usually a stagingStagingA pre-release environment that mirrors production as closely as possible.Open in glossary → environment with sandbox payment keys, never productionProductionThe live environment that real users use.Open in glossary → with real money. Then the device matrixDevice matrixThe list of devices and OS versions a team tests on, chosen to represent real users.Open in glossary → (or browser matrixBrowser matrixThe agreed list of browsers, versions and devices a site supports, and how deeply each is tested.Open in glossary → for websites): a short, deliberate list of devices, OS versions and browsers that represents your real users and your risks.
| Device | Why it’s on the list |
|---|---|
| iPhone 16 · iOS 18 · Face ID | Main Apple Pay path |
| iPhone SE · iOS 17 · Touch ID | Oldest supported iOS, different authentication |
| Pixel 9 · Android 15 | Main Google Pay path |
| Samsung Galaxy A · Android 13 | Popular budget phone, oldest supported Android |
| Phone with no card in its wallet | “Wallet unavailable” path |
Use your analytics to pick devices. “Every phone in the office” is not a matrix, it’s a pile.
Test data
List the accounts, cards, coupons and orders you need, and how you’ll get them. For wallets: Apple’s sandbox tester accounts with Apple’s test cards added to Wallet, and Google Pay’s TEST environment, which returns test tokens so no real card is charged. Ask for test data early: it’s the most common reason testing starts late.
Entry and exit criteria
Entry criteriaEntry and exit criteriaConditions that must be met before a test activity can start (entry) or before it counts as done (exit).Open in glossary → say when testing can start; exit criteria say when it’s done enough to give a recommendation.
Measurable
Entry: both wallets work end to end on staging (smoke test passed); sandbox accounts ready.
Exit: all high-priority cases run on every must-have device; no open Critical or Major bugs in checkout; every risk scored 6+ tested and reported.
Unmeasurable
Entry: when dev is ready.
Exit: when testing is finished. Zero bugs.
“Zero bugs of any kind” sounds strict but is unrealistic, so it gets quietly ignored. Criteria that can’t be met teach the team to ignore criteria.
Risks and mitigations
This is the heart of risk-based testingRisk-based testingPrioritizing testing by risk: how likely something is to fail and how bad the impact would be.Open in glossary →: you spend the most effort where a failure is both likely and painful. For each risk, rate likelihood and impact from 1 to 3, multiply, and test the highest scores first and deepest.
| Risk | L × I | Mitigation |
|---|---|---|
| Customer charged twice | 2 × 3 = 6 | Double-tap and slow-network cases; check PayCo dashboard |
| Wallet amount ≠ cart total | 2 × 3 = 6 | Cases with coupon, shipping, tax |
| Paid but no order created | 1 × 3 = 3 | Kill app / drop network after paying |
| Button style off in dark mode | 2 × 1 = 2 | One checklist item |
Include project risks too, not just product risks: “Sandbox accounts not ready by Monday → testing starts late. Mitigation: request them today.”
Schedule and responsibilities
Who tests what, and when. Keep it to a few lines: “Ana: iOS. Ben: Android. Days 1 to 2 data and cases, days 3 to 7 execution, day 8 regression, day 9 summary.” Also name who makes the release decision. That’s usually the product owner, not the tester.
Not sure how many days to put in? Estimating Testing Effort shows how to build the number and its range.
Deliverables
What the team gets from testing: test cases linked to the user storyUser storyA short description of a feature from the user's point of view.Open in glossary →, bug reportsBug reportA clear written description of a bug so developers can reproduce and fix it.Open in glossary →, and a short test summary reportTest summary reportA report at the end of testing that summarizes what was tested, results, open bugs, risks and a recommendation.Open in glossary → with a recommendation at the end.
Tools
Name them in one line: where cases live (a test management tool or a spreadsheet), where bugs go (for example JiraJiraA popular tool for tracking bugs, user stories and tasks.Open in glossary →), and any helpers such as a proxy toolProxy toolA program that sits between the app and the server so you can watch and change network traffic.Open in glossary → to simulate network failures.
How to write it, step by step
- Read everything first. The user stories, acceptance criteriaAcceptance criteriaConditions a user story must meet to be considered done and accepted.Open in glossary →, designs and any tech notes. Ask the developer one question: “What are you most worried about?”
- Write scope in and out. Be blunt. List the obvious “outs” too.
- List and score the risks. Ten minutes of brainstorming, then likelihood × impact. This decides your order of work.
- Choose the approach, devices and data that cover the highest risks. Don’t add a device that doesn’t reduce a risk.
- Write entry and exit criteria that someone else could check without asking you.
- Add schedule, people, deliverables. A few lines each.
- Review it with the team for 10 to 15 minutes, then update it. Link it from the ticket or sprint board.
Worked example: Apple Pay & Google Pay at checkout
Here’s a complete one-page plan for the ShopFast shopping app. Notice how short each section is.
Test plan · ShopFast iOS & Android 5.2 · Sprint 14
Apple Pay & Google Pay at checkout
Owner: QA (Ana) · Reviewed with: Chris (dev lead), Dana (product owner) · Version 2
Scope: in
- Apple Pay (iOS app), Google Pay (Android app)
- Canceling the wallet sheet
- Wallet unavailable: button hidden or offers setup
- Order confirmation + email show the wallet
- Light regression: card and PayPal
Scope: out
- Wallets on the web shop (next quarter)
- Express checkout on product pages
- PayCo server load (provider’s responsibility)
Objectives
Customers can pay with a wallet and get a correct order. Nobody is charged twice or the wrong amount. Old payment methods keep working.
Approach
Risk-based. Scripted cases for payment, amount and order creation. Two 60-min exploratory sessions (interruptions, slow network). Regression checklist for card and PayPal. VoiceOver/TalkBack check of the new button.
Risks (testing order)
- Charged twice (2×3 = 6)
- Wallet amount ≠ cart total (2×3 = 6)
- Button shown when wallet unavailable (3×2 = 6)
- Cancel leaves a stuck spinner (3×2 = 6)
- Incomplete wallet address (2×2 = 4)
- Paid but no order (1×3 = 3)
- Button style in dark mode (2×1 = 2)
Devices
iPhone 16 (iOS 18, Face ID) · iPhone SE (iOS 17, Touch ID) · iPhone with empty Wallet · Pixel 9 (Android 15) · Samsung Galaxy A (Android 13) · Android phone without Google Play services
Environment & data
Staging with PayCo sandbox keys. Apple Pay sandbox tester account with Apple test cards. Google Pay TEST environment. Coupon SAVE10; an item with paid shipping.
Entry / exit
Entry: both wallets pass a smoke test on staging; sandbox accounts ready. Exit: all high-priority cases run on must-have devices; no open Critical/Major bugs in checkout; all risks scored 6+ tested and reported; regression checklist passed.
Schedule & people
Ana: iOS · Ben: Android · Days 1–2 cases and data, 3–7 execution, 8 regression, 9 summary. Release decision: Dana.
Deliverables & tools
Cases in the test management tool, linked to SHOP-512. Bugs in Jira. Test summary report on day 9. Proxy tool for network failures.
A template you can copy
# Test plan: <feature> (<app> <version>, <sprint>)
Owner: <you> · Reviewed with: <dev>, <PO> · Version: 1
## Scope
In: <features, platforms>
Out: <what we deliberately don't test, and why>
## Objectives
<1-3 sentences: what "good" means for users and the business>
## Approach
<test types, what is scripted, exploratory sessions, regression, automation>
## Risks (testing order)
| Risk | Likelihood | Impact | Score | Mitigation |
## Environments & devices
<staging/sandbox, device or browser matrix and why>
## Test data
<accounts, cards, coupons, how to get them>
## Entry / exit criteria
Entry: <...>
Exit: <...>
## Schedule & people
<who, what, when; who decides on release>
## Deliverables & tools
<cases, bug reports, summary report; where they live>Reviewing it with the team
A plan nobody else has read is just your opinion. Book 10 to 15 minutes with the developer and product owner and ask:
- “Is anything in out of scope actually something you expect to be tested?”
- “Do these risk scores match your gut? What worries you most?”
- “Is this device list enough for our users?”
- “If we hit the exit criteria, would you be comfortable releasing?”
Write down the answers, update the plan, bump the version and link it from the ticket. If the scope or dates change mid-sprint, update the plan again and say so in stand-up.
Common mistakes
Practice: build the plan
Now it’s your turn. Fill in the four key sections for Apple Pay & Google Pay at checkout. Each section gives you feedback, and the last step turns your choices into a one-page plan you can copy as Markdown.
Test plan builder
ShopFast apps · Apple Pay & Google Pay at checkout
Feature brief
Add Apple Pay (iOS app) and Google Pay (Android app) as payment options on the checkout screen, using our existing payment provider PayCo. Card and PayPal flows are not changed. The web shop gets wallets next quarter. Express checkout from product pages is a later project.
Mark each item as in or out of scope for this release.
Paying with Apple Pay in the iOS app
Paying with Google Pay in the Android app
Canceling the wallet sheet and returning to checkout
Wallet button hidden or offering setup when the wallet is unavailable
Order confirmation and email show the wallet as payment method
Regression: card and PayPal payments still work
Apple Pay and Google Pay on the web shop
Express "Buy with Apple Pay" button on product pages
Load testing PayCo’s payment servers
Before you share your test plan
Test plan checklist
0 of 9 checked
Check your understanding
Quick quiz
0/6 answered · 0 correct
1.What is the main difference between a test strategy and a test plan?
2.Why write an 'out of scope' list?
3.A risk has medium likelihood (2) and high impact (3). Another has high likelihood (3) and low impact (1). Which do you test first?
4.Which is the best exit criterion?
5.What is ISO/IEC/IEEE 29119-3?
6.How long should a test plan for a two-week feature usually be?
Key takeaways
- A test plan says what you’ll test and won’t, how, where, with what, by whom, by when, and when you’re done, for one release or feature.
- A test strategy sets the general rules; the plan applies them to one piece of work.
- Agile teams write a one-page plan; formal projects may follow IEEE 829 or its modern replacement, ISO/IEC/IEEE 29119-3.
- Use risk-based testing: score likelihood × impact and test the highest risks first and deepest.
- Make entry and exit criteria measurable, and always write an out-of-scope list.
- Review the plan with the developer and product owner, and keep it updated.
Next: run your cases. See how the plan turns into test runs in Test Runs and Test Management Tools, and how the cycle ends in Traceability and Test Summary Reports.
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 ⚡