Designing Functional Tests
Vendor skill (source: jaktestowac-awesome-copilot-for-testers). Imported 2026-05-31.
Use this skill when the goal is to turn product intent into tester-ready coverage rather than directly generating automation.
It helps produce plans and cases that are clear enough for manual execution and clean enough to hand off to automation later.
When to Use
- create a risk-based functional test plan
- turn acceptance criteria into manual test cases
- convert exploratory notes into reusable scenario packs
- prepare a regression slice for a bug fix or small feature
- identify which scenarios should move into automated tests first
Core Rules
- No silent invention - missing behavior becomes a question or an explicit assumption.
- Risk decides depth - high-risk flows deserve positive, negative, boundary, permission, and recovery coverage.
- One case proves one thing - avoid giant cases that validate five behaviors at once.
- Stable IDs matter - use durable IDs for scenarios and cases so they can be referenced later.
- Manual first, automation second - good automation starts with stable, observable manual intent.
Workflow
Phase 0: Frame the deliverable
Decide which artifact is needed:
- Full plan - scope, priorities, scenario catalog, risks, open questions
- Manual cases - detailed steps and expected results
- Regression slice - the smallest believable retest pack after a change
If the user did not specify the artifact, choose the lightest format that still solves the task.
Phase 1: Run the test-readiness gate
Before writing cases, confirm the test basis gives enough signal to work with.
Minimum signal:
- the feature or flow being tested
- the actor or user role
- the starting state or preconditions
- an observable success outcome
If any of these are missing:
- Ask targeted questions.
- If the user wants to move fast, proceed with an Assumptions section instead of inventing hidden requirements.
- Tag affected scenarios or cases with
ASSUMPTION.
Do not write confident-looking expected results for behavior that is still unknown.
Phase 2: Map the coverage lenses
For each high-value flow, check these lenses:
| Lens |
What to cover |
| Happy path |
Baseline success path |
| Negative |
Invalid inputs, rejected actions, failures |
| Boundary |
Empty, min, max, off-by-one, format edges |
| Permissions |
Wrong role, wrong state, missing access |
| Recovery |
Retry, refresh, session loss, partial failure |
| Data / State |
Persistence, deduplication, conflicting updates |
| Accessibility smoke |
Keyboard reachability, labels, error visibility |
Not every flow needs the same depth.
Apply full coverage to risky flows and lighter smoke coverage to low-risk areas.
Phase 3: Prioritize before expanding
Use a simple three-level priority scale:
- High - critical business path, security-sensitive area, money/data movement, or frequent user action
- Medium - important supporting workflow or high-change area
- Low - secondary behavior, visual polish, or low-impact option
High-priority flows should include at least:
- one happy path
- one negative case
- one boundary or permission case
- one recovery or state-handling case
Phase 4: Produce the requested artifact
Full plan
Use ./resources/test-plan-template.md when possible.
A good plan includes:
- scope and exclusions
- risks and priorities
- scenario catalog with IDs like
SCN-001
- assumptions and open questions
- automation handoff notes
Manual test cases
Use ./resources/manual-test-cases-template.md when possible.
Case rules:
- Use IDs like
MTC-001
- Keep steps observable and short
- Write specific expected results, not "works correctly"
- Include case type tags such as
happy, negative, boundary, permission, recovery, a11y-smoke
- Add an Automation Candidate value:
high, medium, or low
Regression slice
For small changes or bug fixes, produce:
- changed surface
- must-retest scenarios
- adjacent risk areas
- optional "do later" scenarios if time is tight
Phase 5: Prepare the handoff
Before finishing, decide what should happen next:
- send risky edge cases into the
qa-strategy workflow for adversarial expansion
- send stable, repeatable scenarios into
test-generator or playwright-generate-test
- send requirements-heavy work into
requirements-test-coverage-mapper when traceability matters more than step-by-step execution
Output Standards
Always include:
- clear scope
- priority or risk signal
- explicit assumptions or open questions
- scenario or case IDs
- enough detail for another tester to execute without a live explanation
Good output is handoff-ready, not just impressive-looking.
Common Failure Modes
- writing a plan that only covers happy paths
- burying critical assumptions inside prose
- mixing multiple assertions into one giant test case
- using vague expected results such as "data saved successfully"
- generating every possible case without prioritization
Resource Map
./resources/test-plan-template.md - structure for full plans and regression slices
./resources/manual-test-cases-template.md - table format for detailed manual execution
Related Skills
requirements-test-coverage-mapper - when traceability to PRD, stories, or AC is the main deliverable
reporting-bugs - when the task has shifted from planning to documenting a defect
auditing-accessibility - when coverage needs a deeper accessibility pass instead of smoke checks
Definition of Done
This skill is complete when:
- the requested artifact type is clear
- missing information is either answered or listed as assumptions
- high-risk flows have deeper coverage than low-risk flows
- each case or scenario has a stable ID
- the output can be executed or handed off without extra explanation
1---2name: designing-functional-tests3description: Designs risk-based functional test plans, manual test cases, regression slices, and automation handoff packs from requirements, URLs, or exploratory notes. Use when preparing manual QA coverage before automation, turning feature descriptions into scenario catalogs, or converting exploratory findings into structured test assets.4---56# Designing Functional Tests78> _Vendor skill (source: jaktestowac-awesome-copilot-for-testers). Imported 2026-05-31._910Use this skill when the goal is to turn product intent into tester-ready coverage rather than directly generating automation.11It helps produce plans and cases that are clear enough for manual execution and clean enough to hand off to automation later.1213## When to Use1415- create a risk-based functional test plan16- turn acceptance criteria into manual test cases17- convert exploratory notes into reusable scenario packs18- prepare a regression slice for a bug fix or small feature19- identify which scenarios should move into automated tests first2021## Core Rules2223- **No silent invention** - missing behavior becomes a question or an explicit assumption.24- **Risk decides depth** - high-risk flows deserve positive, negative, boundary, permission, and recovery coverage.25- **One case proves one thing** - avoid giant cases that validate five behaviors at once.26- **Stable IDs matter** - use durable IDs for scenarios and cases so they can be referenced later.27- **Manual first, automation second** - good automation starts with stable, observable manual intent.2829## Workflow3031### Phase 0: Frame the deliverable3233Decide which artifact is needed:3435- **Full plan** - scope, priorities, scenario catalog, risks, open questions36- **Manual cases** - detailed steps and expected results37- **Regression slice** - the smallest believable retest pack after a change3839If the user did not specify the artifact, choose the lightest format that still solves the task.4041### Phase 1: Run the test-readiness gate4243Before writing cases, confirm the test basis gives enough signal to work with.4445Minimum signal:4647- the feature or flow being tested48- the actor or user role49- the starting state or preconditions50- an observable success outcome5152If any of these are missing:53541. Ask targeted questions.552. If the user wants to move fast, proceed with an **Assumptions** section instead of inventing hidden requirements.563. Tag affected scenarios or cases with `ASSUMPTION`.5758Do not write confident-looking expected results for behavior that is still unknown.5960### Phase 2: Map the coverage lenses6162For each high-value flow, check these lenses:6364| Lens | What to cover |65| --- | --- |66| Happy path | Baseline success path |67| Negative | Invalid inputs, rejected actions, failures |68| Boundary | Empty, min, max, off-by-one, format edges |69| Permissions | Wrong role, wrong state, missing access |70| Recovery | Retry, refresh, session loss, partial failure |71| Data / State | Persistence, deduplication, conflicting updates |72| Accessibility smoke | Keyboard reachability, labels, error visibility |7374Not every flow needs the same depth.75Apply full coverage to risky flows and lighter smoke coverage to low-risk areas.7677### Phase 3: Prioritize before expanding7879Use a simple three-level priority scale:8081- **High** - critical business path, security-sensitive area, money/data movement, or frequent user action82- **Medium** - important supporting workflow or high-change area83- **Low** - secondary behavior, visual polish, or low-impact option8485High-priority flows should include at least:8687- one happy path88- one negative case89- one boundary or permission case90- one recovery or state-handling case9192### Phase 4: Produce the requested artifact9394#### Full plan9596Use `./resources/test-plan-template.md` when possible.97A good plan includes:9899- scope and exclusions100- risks and priorities101- scenario catalog with IDs like `SCN-001`102- assumptions and open questions103- automation handoff notes104105#### Manual test cases106107Use `./resources/manual-test-cases-template.md` when possible.108109Case rules:110111- Use IDs like `MTC-001`112- Keep steps observable and short113- Write specific expected results, not "works correctly"114- Include case type tags such as `happy`, `negative`, `boundary`, `permission`, `recovery`, `a11y-smoke`115- Add an **Automation Candidate** value: `high`, `medium`, or `low`116117#### Regression slice118119For small changes or bug fixes, produce:120121- changed surface122- must-retest scenarios123- adjacent risk areas124- optional "do later" scenarios if time is tight125126### Phase 5: Prepare the handoff127128Before finishing, decide what should happen next:129130- send risky edge cases into the `qa-strategy` workflow for adversarial expansion131- send stable, repeatable scenarios into `test-generator` or `playwright-generate-test`132- send requirements-heavy work into `requirements-test-coverage-mapper` when traceability matters more than step-by-step execution133134## Output Standards135136Always include:137138- clear scope139- priority or risk signal140- explicit assumptions or open questions141- scenario or case IDs142- enough detail for another tester to execute without a live explanation143144Good output is handoff-ready, not just impressive-looking.145146## Common Failure Modes147148- writing a plan that only covers happy paths149- burying critical assumptions inside prose150- mixing multiple assertions into one giant test case151- using vague expected results such as "data saved successfully"152- generating every possible case without prioritization153154## Resource Map155156- `./resources/test-plan-template.md` - structure for full plans and regression slices157- `./resources/manual-test-cases-template.md` - table format for detailed manual execution158159## Related Skills160161- `requirements-test-coverage-mapper` - when traceability to PRD, stories, or AC is the main deliverable162- `reporting-bugs` - when the task has shifted from planning to documenting a defect163- `auditing-accessibility` - when coverage needs a deeper accessibility pass instead of smoke checks164165## Definition of Done166167This skill is complete when:168169- the requested artifact type is clear170- missing information is either answered or listed as assumptions171- high-risk flows have deeper coverage than low-risk flows172- each case or scenario has a stable ID173- the output can be executed or handed off without extra explanation