Designing Test Data
Vendor skill (source: jaktestowac-awesome-copilot-for-testers). Imported 2026-05-31.
Use this skill when the team needs better inputs, not just more tests.
It helps turn vague "use some sample data" habits into deliberate datasets that exercise happy paths, failures, boundaries, and real workflow states.
When to Use
- prepare test data before manual execution starts
- create stable fixtures for automation work
- design edge-case inputs from field constraints
- generate role-aware or state-aware data combinations
- replace improvised sample values with a reusable data catalog
Data Design Rules
- Derive from constraints, not vibes - lengths, formats, ranges, relationships, and states drive good data.
- Happy path is not enough - pair realistic valid data with deliberate invalid and awkward values.
- Synthetic first - use safe, non-sensitive values unless the user explicitly provides approved test data.
- Dependencies must be visible - if a dataset requires setup, state it clearly.
- Time and state matter - dates, expirations, roles, and lifecycle states often create the real edge cases.
Workflow
Phase 0: Frame the target
Clarify the data goal:
- manual execution support
- automation fixture design
- boundary testing
- negative validation
- role or state combinations
Identify the core entities involved.
Phase 1: Map the constraints
For each entity or field, capture what matters:
- required vs optional
- type and format
- minimum, maximum, and off-by-one limits
- allowed values or enums
- uniqueness or relationship rules
- lifecycle state or permission dependencies
If constraints are not fully known, list assumptions instead of fabricating precision.
Phase 2: Build the data categories
Generate values across these buckets where relevant:
- Typical valid data - realistic and reusable
- Boundary values - min, max, zero, empty, whitespace, off-by-one
- Invalid format data - malformed, wrong type, disallowed characters
- Role and state combinations - guest, user, admin, active, suspended, expired, pending
- Temporal data - past, future, leap day, expiry edge, timezone-sensitive values
- Stress or awkward data - long strings, Unicode, duplicate keys, near-collision values
Phase 3: Package the dataset
Use ./resources/test-data-catalog-template.md when possible.
The output should make clear:
- what the record is for
- how to use it
- any setup dependencies
- whether it is better suited for manual or automated use
Phase 4: Add handling notes
Before finishing, call out:
- seeding requirements
- cleanup expectations
- masking or privacy concerns
- values that should never be used outside safe test environments
Common Failure Modes
- only generating happy-path data
- ignoring entity relationships or setup dependencies
- using realistic-looking but sensitive data carelessly
- forgetting state or role permutations
- writing data tables with no explanation of why each set exists
Resource Map
./resources/test-data-catalog-template.md - structure for grouped test data packs and setup notes
Related Skills
designing-functional-tests - when the data pack should map directly to scenarios or cases
api-playwright-test-developer - when the dataset needs to become automation fixtures or API payloads
reporting-bugs - when broken data handling should be captured as a defect
verifying-acceptance-criteria - when data assumptions affect readiness verdicts
Definition of Done
This skill is complete when:
- core entities and constraints are visible
- data is grouped by purpose rather than dumped randomly
- edge cases are included intentionally
- dependencies and cleanup notes are explicit
- the final dataset is ready for real QA use
1---2name: designing-test-data3description: Designs realistic, boundary-heavy, and role-aware test data packs for manual and automated testing. Use when a feature needs deliberate inputs and fixtures before execution, when edge-case values keep being improvised, or when automation needs stable example data with setup notes.4---56# Designing Test Data78> _Vendor skill (source: jaktestowac-awesome-copilot-for-testers). Imported 2026-05-31._910Use this skill when the team needs better inputs, not just more tests.11It helps turn vague "use some sample data" habits into deliberate datasets that exercise happy paths, failures, boundaries, and real workflow states.1213## When to Use1415- prepare test data before manual execution starts16- create stable fixtures for automation work17- design edge-case inputs from field constraints18- generate role-aware or state-aware data combinations19- replace improvised sample values with a reusable data catalog2021## Data Design Rules2223- **Derive from constraints, not vibes** - lengths, formats, ranges, relationships, and states drive good data.24- **Happy path is not enough** - pair realistic valid data with deliberate invalid and awkward values.25- **Synthetic first** - use safe, non-sensitive values unless the user explicitly provides approved test data.26- **Dependencies must be visible** - if a dataset requires setup, state it clearly.27- **Time and state matter** - dates, expirations, roles, and lifecycle states often create the real edge cases.2829## Workflow3031### Phase 0: Frame the target3233Clarify the data goal:3435- manual execution support36- automation fixture design37- boundary testing38- negative validation39- role or state combinations4041Identify the core entities involved.4243### Phase 1: Map the constraints4445For each entity or field, capture what matters:4647- required vs optional48- type and format49- minimum, maximum, and off-by-one limits50- allowed values or enums51- uniqueness or relationship rules52- lifecycle state or permission dependencies5354If constraints are not fully known, list assumptions instead of fabricating precision.5556### Phase 2: Build the data categories5758Generate values across these buckets where relevant:5960- **Typical valid data** - realistic and reusable61- **Boundary values** - min, max, zero, empty, whitespace, off-by-one62- **Invalid format data** - malformed, wrong type, disallowed characters63- **Role and state combinations** - guest, user, admin, active, suspended, expired, pending64- **Temporal data** - past, future, leap day, expiry edge, timezone-sensitive values65- **Stress or awkward data** - long strings, Unicode, duplicate keys, near-collision values6667### Phase 3: Package the dataset6869Use `./resources/test-data-catalog-template.md` when possible.7071The output should make clear:7273- what the record is for74- how to use it75- any setup dependencies76- whether it is better suited for manual or automated use7778### Phase 4: Add handling notes7980Before finishing, call out:8182- seeding requirements83- cleanup expectations84- masking or privacy concerns85- values that should never be used outside safe test environments8687## Common Failure Modes8889- only generating happy-path data90- ignoring entity relationships or setup dependencies91- using realistic-looking but sensitive data carelessly92- forgetting state or role permutations93- writing data tables with no explanation of why each set exists9495## Resource Map9697- `./resources/test-data-catalog-template.md` - structure for grouped test data packs and setup notes9899## Related Skills100101- `designing-functional-tests` - when the data pack should map directly to scenarios or cases102- `api-playwright-test-developer` - when the dataset needs to become automation fixtures or API payloads103- `reporting-bugs` - when broken data handling should be captured as a defect104- `verifying-acceptance-criteria` - when data assumptions affect readiness verdicts105106## Definition of Done107108This skill is complete when:109110- core entities and constraints are visible111- data is grouped by purpose rather than dumped randomly112- edge cases are included intentionally113- dependencies and cleanup notes are explicit114- the final dataset is ready for real QA use