Files
Claude-Code-Game-Studios/.claude/docs/templates/test-plan.md
Donchitos 168ac96c3a Add comprehensive QA and testing framework (52→56 skills)
Introduces a full shift-left QA pipeline with Story Type classification
as the backbone of the Definition of Done:

New skills:
- /test-setup: scaffold test framework + CI/CD per engine (Godot/Unity/Unreal)
- /qa-plan: generate sprint test plan classifying stories by type
- /smoke-check: critical path gate (PASS/PASS WITH WARNINGS/FAIL) before QA hand-off
- /team-qa: orchestrate qa-lead + qa-tester through full QA cycle

Story Type classification (Logic/Integration/Visual/Feel/UI/Config/Data):
- Logic and Integration: BLOCKING DoD gate — unit/integration test required
- Visual/Feel and UI: ADVISORY — screenshot + sign-off evidence required
- Config/Data: ADVISORY — smoke check pass sufficient

Updated skills: story-done (test evidence gate), story-readiness (Story Type
check), gate-check (test framework at Technical Setup, test evidence at
Polish/Release), create-epics-stories (Type field + Test Evidence section)

Updated agents: qa-lead (shift-left philosophy + evidence table),
qa-tester (automated test patterns for Godot/Unity/Unreal)

New templates: test-evidence.md (manual sign-off record), test-plan.md
(sprint-oriented QA plan replacing generic feature template)

Updated coding-standards.md: Testing Standards section with DoD table,
test rules, what NOT to automate, and engine-specific CI/CD commands

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 13:48:32 +11:00

145 lines
4.4 KiB
Markdown

# QA Plan: [Sprint/Feature Name]
> **Date**: [date]
> **Generated by**: /qa-plan
> **Scope**: [N stories across N systems]
> **Engine**: [engine name and version]
> **Sprint file**: [path to sprint plan]
---
## Story Coverage Summary
| Story | Type | Automated Test Required | Manual Verification Required |
|-------|------|------------------------|------------------------------|
| [story title] | Logic | Unit test — `tests/unit/[system]/` | None |
| [story title] | Integration | Integration test — `tests/integration/[system]/` | Smoke check |
| [story title] | Visual/Feel | None (not automatable) | Screenshot + lead sign-off |
| [story title] | UI | None (not automatable) | Manual step-through |
| [story title] | Config/Data | Data validation (optional) | Spot-check in-game values |
**Totals**: [N] Logic, [N] Integration, [N] Visual/Feel, [N] UI, [N] Config/Data
---
## Automated Tests Required
### [Story Title] — Logic
**Test file path**: `tests/unit/[system]/[story-slug]_test.[ext]`
**What to test**:
- [Formula or rule from GDD Formulas section — e.g., "damage = base * multiplier where multiplier ∈ [0.5, 3.0]"]
- [Each named state transition]
- [Each side effect that should / should not occur]
**Edge cases to cover**:
- Zero / minimum input values
- Maximum / boundary input values
- Invalid or null input
- [GDD-specified edge cases]
**Estimated test count**: ~[N] unit tests
---
### [Story Title] — Integration
**Test file path**: `tests/integration/[system]/[story-slug]_test.[ext]`
**What to test**:
- [Cross-system interaction — e.g., "applying buff updates CharacterStats and triggers UI refresh"]
- [Round-trip — e.g., "save → load restores all fields"]
---
## Manual QA Checklist
### [Story Title] — Visual/Feel
**Verification method**: Screenshot + [designer / art-lead] sign-off
**Evidence file**: `production/qa/evidence/[story-slug]-evidence.md`
**Who must sign off**: [designer / lead-programmer / art-lead]
- [ ] [Specific observable condition — e.g., "hit flash appears on frame of impact, not the frame after"]
- [ ] [Another falsifiable condition]
### [Story Title] — UI
**Verification method**: Manual step-through
**Evidence file**: `production/qa/evidence/[story-slug]-evidence.md`
- [ ] [Every acceptance criterion translated into a manual check item]
---
## Smoke Test Scope
Critical paths to verify before QA hand-off (run via `/smoke-check`):
1. Game launches to main menu without crash
2. New game / session can be started
3. [Primary mechanic introduced or changed this sprint]
4. [System with regression risk from this sprint's changes]
5. Save / load cycle completes without data loss (if save system exists)
6. Performance is within budget on target hardware
---
## Playtest Requirements
| Story | Playtest Goal | Min Sessions | Target Player Type |
|-------|--------------|--------------|-------------------|
| [story] | [What question must be answered?] | [N] | [new player / experienced / etc.] |
Sign-off requirement: Playtest notes → `production/session-logs/playtest-[sprint]-[story-slug].md`
If no playtest sessions required: *No playtest sessions required for this sprint.*
---
## Definition of Done — This Sprint
A story is DONE when ALL of the following are true:
- [ ] All acceptance criteria verified — automated test result OR documented manual evidence
- [ ] Test file exists for all Logic and Integration stories and passes
- [ ] Manual evidence document exists for all Visual/Feel and UI stories
- [ ] Smoke check passes (run `/smoke-check sprint` before QA hand-off)
- [ ] No regressions introduced — previous sprint's features still pass
- [ ] Code reviewed (via `/code-review` or documented peer review)
- [ ] Story file updated to `Status: Complete` via `/story-done`
**Stories requiring playtest sign-off before close**: [list, or "None"]
---
## Test Results
*Fill in after testing is complete.*
| Story | Automated | Manual | Result | Notes |
|-------|-----------|--------|--------|-------|
| [title] | PASS | — | PASS | |
| [title] | — | PASS | PASS | |
| [title] | FAIL | — | BLOCKED | [describe failure] |
---
## Bugs Found
| ID | Story | Severity | Description | Status |
|----|-------|----------|-------------|--------|
| BUG-001 | | S[1-4] | | Open |
---
## Sign-Off
- **QA Tester**: [name] — [date]
- **QA Lead**: [name] — [date]
- **Sprint Owner**: [name] — [date]
*Template: `.claude/docs/templates/test-plan.md`*
*Generated by: `/qa-plan` — do not edit this line*