mirror of
https://github.com/bmadcode/BMAD-METHOD.git
synced 2025-12-29 16:14:59 +00:00
376 lines
9.8 KiB
Markdown
376 lines
9.8 KiB
Markdown
|
|
# Requirements Traceability Workflow
|
||
|
|
|
||
|
|
**Workflow ID:** `testarch-trace`
|
||
|
|
**Agent:** Test Architect (TEA)
|
||
|
|
**Command:** `bmad tea *trace`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
The **trace** workflow generates a comprehensive requirements-to-tests traceability matrix that maps acceptance criteria to implemented tests, identifies coverage gaps, and provides actionable recommendations for improving test coverage.
|
||
|
|
|
||
|
|
**Key Features:**
|
||
|
|
|
||
|
|
- Maps acceptance criteria to specific test cases across all levels (E2E, API, Component, Unit)
|
||
|
|
- Classifies coverage status (FULL, PARTIAL, NONE, UNIT-ONLY, INTEGRATION-ONLY)
|
||
|
|
- Prioritizes gaps by risk level (P0/P1/P2/P3)
|
||
|
|
- Generates CI/CD-ready YAML snippets for quality gates
|
||
|
|
- Detects duplicate coverage across test levels
|
||
|
|
- Verifies test quality (assertions, structure, performance)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## When to Use This Workflow
|
||
|
|
|
||
|
|
Use `*trace` when you need to:
|
||
|
|
|
||
|
|
- ✅ Validate that all acceptance criteria have test coverage
|
||
|
|
- ✅ Identify coverage gaps before release or PR merge
|
||
|
|
- ✅ Generate traceability documentation for compliance or audits
|
||
|
|
- ✅ Ensure critical paths (P0/P1) are fully tested
|
||
|
|
- ✅ Detect duplicate coverage across test levels
|
||
|
|
- ✅ Assess test quality across your suite
|
||
|
|
- ✅ Create gate-ready metrics for CI/CD pipelines
|
||
|
|
|
||
|
|
**Typical Timing:**
|
||
|
|
|
||
|
|
- After tests are implemented (post-ATDD or post-development)
|
||
|
|
- Before merging a PR (validate P0/P1 coverage)
|
||
|
|
- Before release (validate full coverage)
|
||
|
|
- During sprint retrospectives (assess test quality)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Prerequisites
|
||
|
|
|
||
|
|
**Required:**
|
||
|
|
|
||
|
|
- Acceptance criteria (from story file OR inline)
|
||
|
|
- Implemented test suite (or acknowledged gaps)
|
||
|
|
|
||
|
|
**Recommended:**
|
||
|
|
|
||
|
|
- `test-design.md` - Risk assessment and test priorities
|
||
|
|
- `tech-spec.md` - Technical implementation details
|
||
|
|
- Test framework configuration (playwright.config.ts, jest.config.js)
|
||
|
|
|
||
|
|
**Halt Conditions:**
|
||
|
|
|
||
|
|
- Story lacks any tests AND gaps are not acknowledged → Run `*atdd` first
|
||
|
|
- Acceptance criteria are completely missing → Provide criteria or story file
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Usage
|
||
|
|
|
||
|
|
### Basic Usage (BMad Mode)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
bmad tea *trace
|
||
|
|
```
|
||
|
|
|
||
|
|
The workflow will:
|
||
|
|
|
||
|
|
1. Read story file from `bmad/output/story-X.X.md`
|
||
|
|
2. Extract acceptance criteria
|
||
|
|
3. Auto-discover tests for this story
|
||
|
|
4. Generate traceability matrix
|
||
|
|
5. Save to `bmad/output/traceability-matrix.md`
|
||
|
|
|
||
|
|
### Standalone Mode (No Story File)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
bmad tea *trace --acceptance-criteria "AC-1: User can login with email..."
|
||
|
|
```
|
||
|
|
|
||
|
|
### Custom Configuration
|
||
|
|
|
||
|
|
```bash
|
||
|
|
bmad tea *trace \
|
||
|
|
--story-file "bmad/output/story-1.3.md" \
|
||
|
|
--output-file "docs/qa/trace-1.3.md" \
|
||
|
|
--min-p0-coverage 100 \
|
||
|
|
--min-p1-coverage 90
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Workflow Steps
|
||
|
|
|
||
|
|
1. **Load Context** - Read story, test design, tech spec, knowledge base
|
||
|
|
2. **Discover Tests** - Auto-find tests related to story (by ID, describe blocks, file paths)
|
||
|
|
3. **Map Criteria** - Link acceptance criteria to specific test cases
|
||
|
|
4. **Analyze Gaps** - Identify missing coverage and prioritize by risk
|
||
|
|
5. **Verify Quality** - Check test quality (assertions, structure, performance)
|
||
|
|
6. **Generate Deliverables** - Create traceability matrix, gate YAML, coverage badge
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Outputs
|
||
|
|
|
||
|
|
### Traceability Matrix (`traceability-matrix.md`)
|
||
|
|
|
||
|
|
Comprehensive markdown file with:
|
||
|
|
|
||
|
|
- Coverage summary table (by priority)
|
||
|
|
- Detailed criterion-to-test mapping
|
||
|
|
- Gap analysis with recommendations
|
||
|
|
- Quality assessment for each test
|
||
|
|
- Gate YAML snippet
|
||
|
|
|
||
|
|
### Gate YAML Snippet
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
traceability:
|
||
|
|
story_id: '1.3'
|
||
|
|
coverage:
|
||
|
|
overall: 85%
|
||
|
|
p0: 100%
|
||
|
|
p1: 90%
|
||
|
|
gaps:
|
||
|
|
critical: 0
|
||
|
|
high: 1
|
||
|
|
status: 'PASS'
|
||
|
|
```
|
||
|
|
|
||
|
|
### Updated Story File (Optional)
|
||
|
|
|
||
|
|
Adds "Traceability" section to story markdown with:
|
||
|
|
|
||
|
|
- Link to traceability matrix
|
||
|
|
- Coverage summary
|
||
|
|
- Gate status
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Coverage Classifications
|
||
|
|
|
||
|
|
- **FULL** ✅ - All scenarios validated at appropriate level(s)
|
||
|
|
- **PARTIAL** ⚠️ - Some coverage but missing edge cases or levels
|
||
|
|
- **NONE** ❌ - No test coverage at any level
|
||
|
|
- **UNIT-ONLY** ⚠️ - Only unit tests (missing integration/E2E validation)
|
||
|
|
- **INTEGRATION-ONLY** ⚠️ - Only API/Component tests (missing unit confidence)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Quality Gates
|
||
|
|
|
||
|
|
| Priority | Coverage Requirement | Severity | Action |
|
||
|
|
| -------- | -------------------- | -------- | ------------------ |
|
||
|
|
| P0 | 100% | BLOCKER | Do not release |
|
||
|
|
| P1 | 90% | HIGH | Block PR merge |
|
||
|
|
| P2 | 80% (recommended) | MEDIUM | Address in nightly |
|
||
|
|
| P3 | No requirement | LOW | Optional |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Configuration
|
||
|
|
|
||
|
|
### workflow.yaml Variables
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
variables:
|
||
|
|
# Target specification
|
||
|
|
story_file: '' # Path to story markdown
|
||
|
|
acceptance_criteria: '' # Inline criteria if no story
|
||
|
|
|
||
|
|
# Test discovery
|
||
|
|
test_dir: '{project-root}/tests'
|
||
|
|
auto_discover_tests: true
|
||
|
|
|
||
|
|
# Traceability configuration
|
||
|
|
coverage_levels: 'e2e,api,component,unit'
|
||
|
|
map_by_test_id: true
|
||
|
|
map_by_describe: true
|
||
|
|
map_by_filename: true
|
||
|
|
|
||
|
|
# Gap analysis
|
||
|
|
prioritize_by_risk: true
|
||
|
|
suggest_missing_tests: true
|
||
|
|
check_duplicate_coverage: true
|
||
|
|
|
||
|
|
# Output configuration
|
||
|
|
output_file: '{output_folder}/traceability-matrix.md'
|
||
|
|
generate_gate_yaml: true
|
||
|
|
generate_coverage_badge: true
|
||
|
|
update_story_file: true
|
||
|
|
|
||
|
|
# Quality gates
|
||
|
|
min_p0_coverage: 100
|
||
|
|
min_p1_coverage: 90
|
||
|
|
min_overall_coverage: 80
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Knowledge Base Integration
|
||
|
|
|
||
|
|
This workflow automatically loads relevant knowledge fragments:
|
||
|
|
|
||
|
|
- `traceability.md` - Requirements mapping patterns
|
||
|
|
- `test-priorities.md` - P0/P1/P2/P3 risk framework
|
||
|
|
- `risk-governance.md` - Risk-based testing approach
|
||
|
|
- `test-quality.md` - Definition of Done for tests
|
||
|
|
- `selective-testing.md` - Duplicate coverage patterns
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Examples
|
||
|
|
|
||
|
|
### Example 1: Full Coverage Validation
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Validate P0/P1 coverage before PR merge
|
||
|
|
bmad tea *trace --story-file "bmad/output/story-1.3.md"
|
||
|
|
```
|
||
|
|
|
||
|
|
**Output:**
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
# Traceability Matrix - Story 1.3
|
||
|
|
|
||
|
|
## Coverage Summary
|
||
|
|
|
||
|
|
| Priority | Total | FULL | Coverage % | Status |
|
||
|
|
| -------- | ----- | ---- | ---------- | ------- |
|
||
|
|
| P0 | 3 | 3 | 100% | ✅ PASS |
|
||
|
|
| P1 | 5 | 5 | 100% | ✅ PASS |
|
||
|
|
|
||
|
|
Gate Status: PASS ✅
|
||
|
|
```
|
||
|
|
|
||
|
|
### Example 2: Gap Identification
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Find coverage gaps for existing feature
|
||
|
|
bmad tea *trace --target-feature "user-authentication"
|
||
|
|
```
|
||
|
|
|
||
|
|
**Output:**
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
## Gap Analysis
|
||
|
|
|
||
|
|
### Critical Gaps (BLOCKER)
|
||
|
|
|
||
|
|
- None ✅
|
||
|
|
|
||
|
|
### High Priority Gaps (PR BLOCKER)
|
||
|
|
|
||
|
|
1. **AC-3: Password reset email edge cases**
|
||
|
|
- Recommend: Add 1.3-API-001 (email service integration)
|
||
|
|
- Impact: Users may not recover accounts in error scenarios
|
||
|
|
```
|
||
|
|
|
||
|
|
### Example 3: Duplicate Coverage Detection
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check for redundant tests
|
||
|
|
bmad tea *trace --check-duplicate-coverage true
|
||
|
|
```
|
||
|
|
|
||
|
|
**Output:**
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
## Duplicate Coverage Detected
|
||
|
|
|
||
|
|
⚠️ AC-1 (login validation) is tested at multiple levels:
|
||
|
|
|
||
|
|
- 1.3-E2E-001 (full user journey) ✅ Appropriate
|
||
|
|
- 1.3-UNIT-001 (business logic) ✅ Appropriate
|
||
|
|
- 1.3-COMPONENT-001 (form validation) ⚠️ Redundant with UNIT-001
|
||
|
|
|
||
|
|
Recommendation: Remove 1.3-COMPONENT-001 or consolidate with UNIT-001
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
### "No tests found for this story"
|
||
|
|
|
||
|
|
- Run `*atdd` workflow first to generate failing acceptance tests
|
||
|
|
- Check test file naming conventions (may not match story ID pattern)
|
||
|
|
- Verify test directory path is correct (`test_dir` variable)
|
||
|
|
|
||
|
|
### "Cannot determine coverage status"
|
||
|
|
|
||
|
|
- Tests may lack explicit mapping (no test IDs, unclear describe blocks)
|
||
|
|
- Add test IDs: `{STORY_ID}-{LEVEL}-{SEQ}` (e.g., `1.3-E2E-001`)
|
||
|
|
- Use Given-When-Then narrative in test descriptions
|
||
|
|
|
||
|
|
### "P0 coverage below 100%"
|
||
|
|
|
||
|
|
- This is a **BLOCKER** - do not release
|
||
|
|
- Identify missing P0 tests in gap analysis
|
||
|
|
- Run `*atdd` workflow to generate missing tests
|
||
|
|
- Verify P0 classification is correct with stakeholders
|
||
|
|
|
||
|
|
### "Duplicate coverage detected"
|
||
|
|
|
||
|
|
- Review `selective-testing.md` knowledge fragment
|
||
|
|
- Determine if overlap is acceptable (defense in depth) or wasteful
|
||
|
|
- Consolidate tests at appropriate level (logic → unit, journey → E2E)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Integration with Other Workflows
|
||
|
|
|
||
|
|
- **testarch-test-design** → `*trace` - Define priorities, then trace coverage
|
||
|
|
- **testarch-atdd** → `*trace` - Generate tests, then validate coverage
|
||
|
|
- `*trace` → **testarch-automate** - Identify gaps, then automate regression
|
||
|
|
- `*trace` → **testarch-gate** - Generate metrics, then apply quality gates
|
||
|
|
- `*trace` → **testarch-test-review** - Flag quality issues, then review tests
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Best Practices
|
||
|
|
|
||
|
|
1. **Run Trace After Test Implementation**
|
||
|
|
- Don't run `*trace` before tests exist (run `*atdd` first)
|
||
|
|
- Trace is most valuable after initial test suite is written
|
||
|
|
|
||
|
|
2. **Prioritize by Risk**
|
||
|
|
- P0 gaps are BLOCKERS (must fix before release)
|
||
|
|
- P1 gaps are HIGH priority (block PR merge)
|
||
|
|
- P3 gaps are acceptable (fix if time permits)
|
||
|
|
|
||
|
|
3. **Explicit Mapping**
|
||
|
|
- Use test IDs (`1.3-E2E-001`) for clear traceability
|
||
|
|
- Reference criteria in describe blocks
|
||
|
|
- Use Given-When-Then narrative
|
||
|
|
|
||
|
|
4. **Avoid Duplicate Coverage**
|
||
|
|
- Test each behavior at appropriate level only
|
||
|
|
- Unit tests for logic, E2E for journeys
|
||
|
|
- Only overlap for defense in depth on critical paths
|
||
|
|
|
||
|
|
5. **Generate Gate-Ready Artifacts**
|
||
|
|
- Enable `generate_gate_yaml` for CI/CD integration
|
||
|
|
- Use YAML snippets in pipeline quality gates
|
||
|
|
- Export metrics for dashboard visualization
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Related Commands
|
||
|
|
|
||
|
|
- `bmad tea *test-design` - Define test priorities and risk assessment
|
||
|
|
- `bmad tea *atdd` - Generate failing acceptance tests for gaps
|
||
|
|
- `bmad tea *automate` - Expand regression suite based on gaps
|
||
|
|
- `bmad tea *gate` - Apply quality gates using traceability metrics
|
||
|
|
- `bmad tea *test-review` - Review test quality issues flagged by trace
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Resources
|
||
|
|
|
||
|
|
- [Instructions](./instructions.md) - Detailed workflow steps
|
||
|
|
- [Checklist](./checklist.md) - Validation checklist
|
||
|
|
- [Template](./trace-template.md) - Traceability matrix template
|
||
|
|
- [Knowledge Base](../../testarch/knowledge/) - Testing best practices
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
<!-- Powered by BMAD-CORE™ -->
|