qa-skills 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +168 -0
- package/bin/cli.js +42 -0
- package/dist/agents/registry.d.ts +5 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +101 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/types.d.ts +9 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/dependencies.d.ts +21 -0
- package/dist/dependencies.d.ts.map +1 -0
- package/dist/dependencies.js +125 -0
- package/dist/dependencies.js.map +1 -0
- package/dist/installer.d.ts +25 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +437 -0
- package/dist/installer.js.map +1 -0
- package/dist/scaffold.d.ts +27 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +182 -0
- package/dist/scaffold.js.map +1 -0
- package/package.json +40 -0
- package/skills/qa-accessibility-test-writer/SKILL.md +127 -0
- package/skills/qa-accessibility-test-writer/references/axe-core-patterns.md +349 -0
- package/skills/qa-accessibility-test-writer/references/best-practices.md +184 -0
- package/skills/qa-accessibility-test-writer/references/wcag-tests.md +331 -0
- package/skills/qa-api-contract-curator/SKILL.md +104 -0
- package/skills/qa-api-contract-curator/references/breaking-changes.md +363 -0
- package/skills/qa-api-contract-curator/references/openapi-structure.md +404 -0
- package/skills/qa-browser-data-collector/SKILL.md +132 -0
- package/skills/qa-browser-data-collector/references/data-collection-checklist.md +91 -0
- package/skills/qa-browser-data-collector/references/playwright-mcp-patterns.md +113 -0
- package/skills/qa-bug-ticket-creator/SKILL.md +148 -0
- package/skills/qa-bug-ticket-creator/references/bug-report-format.md +149 -0
- package/skills/qa-bug-ticket-creator/references/severity-guide.md +81 -0
- package/skills/qa-bug-ticket-creator/templates/bug-ticket-template.md +39 -0
- package/skills/qa-changelog-analyzer/SKILL.md +134 -0
- package/skills/qa-changelog-analyzer/references/git-analysis-patterns.md +138 -0
- package/skills/qa-changelog-analyzer/references/impact-mapping.md +120 -0
- package/skills/qa-clickup-integration/SKILL.md +166 -0
- package/skills/qa-clickup-integration/references/api-patterns.md +102 -0
- package/skills/qa-clickup-integration/references/field-mapping.md +71 -0
- package/skills/qa-codeceptjs-writer/SKILL.md +136 -0
- package/skills/qa-codeceptjs-writer/references/best-practices.md +207 -0
- package/skills/qa-codeceptjs-writer/references/config.md +255 -0
- package/skills/qa-codeceptjs-writer/references/patterns.md +285 -0
- package/skills/qa-coverage-analyzer/SKILL.md +166 -0
- package/skills/qa-coverage-analyzer/references/best-practices.md +142 -0
- package/skills/qa-coverage-analyzer/references/coverage-dimensions.md +155 -0
- package/skills/qa-coverage-analyzer/references/tools.md +204 -0
- package/skills/qa-cypress-writer/SKILL.md +134 -0
- package/skills/qa-cypress-writer/references/assertions.md +121 -0
- package/skills/qa-cypress-writer/references/best-practices.md +82 -0
- package/skills/qa-cypress-writer/references/config.md +121 -0
- package/skills/qa-cypress-writer/references/patterns.md +170 -0
- package/skills/qa-data-factory/SKILL.md +126 -0
- package/skills/qa-data-factory/references/factory-patterns.md +164 -0
- package/skills/qa-data-factory/references/faker-guide.md +131 -0
- package/skills/qa-diagram-generator/SKILL.md +125 -0
- package/skills/qa-diagram-generator/references/c4-model.md +53 -0
- package/skills/qa-diagram-generator/references/charts.md +58 -0
- package/skills/qa-diagram-generator/references/class-diagram.md +85 -0
- package/skills/qa-diagram-generator/references/er-diagram.md +69 -0
- package/skills/qa-diagram-generator/references/flowchart.md +92 -0
- package/skills/qa-diagram-generator/references/from-screenshot.md +45 -0
- package/skills/qa-diagram-generator/references/gantt.md +49 -0
- package/skills/qa-diagram-generator/references/journey.md +50 -0
- package/skills/qa-diagram-generator/references/mindmap.md +75 -0
- package/skills/qa-diagram-generator/references/sequence.md +69 -0
- package/skills/qa-diagram-generator/references/state-diagram.md +56 -0
- package/skills/qa-discovery-interview/SKILL.md +182 -0
- package/skills/qa-discovery-interview/references/completeness-checklist.md +53 -0
- package/skills/qa-discovery-interview/references/conflict-patterns.md +101 -0
- package/skills/qa-discovery-interview/references/qa-categories.md +147 -0
- package/skills/qa-discovery-interview/templates/qa-brief-template.md +168 -0
- package/skills/qa-environment-checker/SKILL.md +142 -0
- package/skills/qa-environment-checker/references/dependency-matrix.md +101 -0
- package/skills/qa-environment-checker/references/health-checks.md +209 -0
- package/skills/qa-environment-checker/templates/env-readiness-template.md +64 -0
- package/skills/qa-flaky-detector/SKILL.md +153 -0
- package/skills/qa-flaky-detector/references/ci-analysis.md +140 -0
- package/skills/qa-flaky-detector/references/flaky-patterns.md +247 -0
- package/skills/qa-github-issues-enhanced/SKILL.md +175 -0
- package/skills/qa-github-issues-enhanced/references/issue-templates.md +425 -0
- package/skills/qa-github-issues-enhanced/references/label-taxonomy.md +130 -0
- package/skills/qa-github-issues-enhanced/references/workflow-patterns.md +188 -0
- package/skills/qa-httpx-writer/SKILL.md +138 -0
- package/skills/qa-httpx-writer/references/assertions.md +195 -0
- package/skills/qa-httpx-writer/references/best-practices.md +140 -0
- package/skills/qa-httpx-writer/references/config.md +212 -0
- package/skills/qa-httpx-writer/references/patterns.md +262 -0
- package/skills/qa-jest-writer/SKILL.md +131 -0
- package/skills/qa-jest-writer/references/assertions.md +125 -0
- package/skills/qa-jest-writer/references/best-practices.md +136 -0
- package/skills/qa-jest-writer/references/config.md +134 -0
- package/skills/qa-jest-writer/references/patterns.md +172 -0
- package/skills/qa-jira-integration/SKILL.md +135 -0
- package/skills/qa-jira-integration/references/api-patterns.md +143 -0
- package/skills/qa-jira-integration/references/field-mapping.md +79 -0
- package/skills/qa-jira-integration/references/xray-integration.md +85 -0
- package/skills/qa-jmeter-writer/SKILL.md +171 -0
- package/skills/qa-jmeter-writer/references/best-practices.md +157 -0
- package/skills/qa-jmeter-writer/references/config.md +204 -0
- package/skills/qa-jmeter-writer/references/patterns.md +242 -0
- package/skills/qa-junit5-writer/SKILL.md +157 -0
- package/skills/qa-junit5-writer/references/assertions.md +118 -0
- package/skills/qa-junit5-writer/references/config.md +97 -0
- package/skills/qa-junit5-writer/references/patterns.md +162 -0
- package/skills/qa-k6-writer/SKILL.md +155 -0
- package/skills/qa-k6-writer/references/best-practices.md +236 -0
- package/skills/qa-k6-writer/references/config.md +219 -0
- package/skills/qa-k6-writer/references/patterns.md +304 -0
- package/skills/qa-linear-integration/SKILL.md +137 -0
- package/skills/qa-linear-integration/references/api-patterns.md +249 -0
- package/skills/qa-linear-integration/references/field-mapping.md +121 -0
- package/skills/qa-locust-writer/SKILL.md +151 -0
- package/skills/qa-locust-writer/references/best-practices.md +126 -0
- package/skills/qa-locust-writer/references/config.md +170 -0
- package/skills/qa-locust-writer/references/patterns.md +235 -0
- package/skills/qa-manual-test-designer/SKILL.md +145 -0
- package/skills/qa-manual-test-designer/references/exploratory-charters.md +138 -0
- package/skills/qa-manual-test-designer/references/personas.md +146 -0
- package/skills/qa-manual-test-designer/templates/exploratory-charter-template.md +47 -0
- package/skills/qa-manual-test-designer/templates/test-case-template.md +31 -0
- package/skills/qa-mobile-test-writer/SKILL.md +144 -0
- package/skills/qa-mobile-test-writer/references/best-practices.md +214 -0
- package/skills/qa-mobile-test-writer/references/config.md +309 -0
- package/skills/qa-mobile-test-writer/references/patterns.md +304 -0
- package/skills/qa-nfr-analyst/SKILL.md +177 -0
- package/skills/qa-nfr-analyst/references/iso-25010-model.md +159 -0
- package/skills/qa-nfr-analyst/references/owasp-wstg-baseline.md +202 -0
- package/skills/qa-nfr-analyst/references/wcag-checklist.md +184 -0
- package/skills/qa-nfr-analyst/templates/owasp-checklist-template.md +89 -0
- package/skills/qa-nfr-analyst/templates/wcag-checklist-template.md +48 -0
- package/skills/qa-orchestrator/SKILL.md +132 -0
- package/skills/qa-orchestrator/references/handoff-chains.md +105 -0
- package/skills/qa-orchestrator/references/pipeline-modes.md +115 -0
- package/skills/qa-orchestrator/references/scheduler-rules.md +84 -0
- package/skills/qa-pact-writer/SKILL.md +133 -0
- package/skills/qa-pact-writer/references/best-practices.md +100 -0
- package/skills/qa-pact-writer/references/config.md +135 -0
- package/skills/qa-pact-writer/references/patterns.md +161 -0
- package/skills/qa-plan-creator/SKILL.md +139 -0
- package/skills/qa-plan-creator/references/introduction-plan.md +43 -0
- package/skills/qa-plan-creator/references/migration-plan.md +44 -0
- package/skills/qa-plan-creator/references/onboarding-plan.md +46 -0
- package/skills/qa-plan-creator/references/performance-plan.md +44 -0
- package/skills/qa-plan-creator/references/regression-plan.md +45 -0
- package/skills/qa-plan-creator/references/release-plan.md +45 -0
- package/skills/qa-plan-creator/references/sprint-plan.md +44 -0
- package/skills/qa-plan-creator/references/test-plan.md +59 -0
- package/skills/qa-plan-creator/references/uat-plan.md +43 -0
- package/skills/qa-plan-creator/templates/checklist-template.md +36 -0
- package/skills/qa-plan-creator/templates/regression-checklist-template.md +49 -0
- package/skills/qa-plan-creator/templates/release-checklist-template.md +46 -0
- package/skills/qa-plan-creator/templates/test-plan-template.md +74 -0
- package/skills/qa-playwright-py-writer/SKILL.md +156 -0
- package/skills/qa-playwright-py-writer/references/best-practices.md +194 -0
- package/skills/qa-playwright-py-writer/references/config.md +195 -0
- package/skills/qa-playwright-py-writer/references/patterns.md +212 -0
- package/skills/qa-playwright-ts-writer/SKILL.md +151 -0
- package/skills/qa-playwright-ts-writer/references/assertions.md +109 -0
- package/skills/qa-playwright-ts-writer/references/best-practices.md +191 -0
- package/skills/qa-playwright-ts-writer/references/config.md +144 -0
- package/skills/qa-playwright-ts-writer/references/patterns.md +171 -0
- package/skills/qa-pytest-writer/SKILL.md +145 -0
- package/skills/qa-pytest-writer/references/assertions.md +149 -0
- package/skills/qa-pytest-writer/references/best-practices.md +97 -0
- package/skills/qa-pytest-writer/references/config.md +176 -0
- package/skills/qa-pytest-writer/references/patterns.md +251 -0
- package/skills/qa-qase-integration/SKILL.md +149 -0
- package/skills/qa-qase-integration/references/api-reference.md +354 -0
- package/skills/qa-qase-integration/references/ci-integration.md +196 -0
- package/skills/qa-qase-integration/references/field-mapping.md +157 -0
- package/skills/qa-requirements-generator/SKILL.md +152 -0
- package/skills/qa-requirements-generator/references/iso-29148-structure.md +153 -0
- package/skills/qa-requirements-generator/references/requirement-patterns.md +278 -0
- package/skills/qa-rest-assured-writer/SKILL.md +137 -0
- package/skills/qa-rest-assured-writer/references/best-practices.md +50 -0
- package/skills/qa-rest-assured-writer/references/config.md +124 -0
- package/skills/qa-rest-assured-writer/references/patterns.md +192 -0
- package/skills/qa-risk-analyzer/SKILL.md +158 -0
- package/skills/qa-risk-analyzer/references/impact-analysis.md +133 -0
- package/skills/qa-risk-analyzer/references/risk-factors.md +123 -0
- package/skills/qa-robot-framework-writer/SKILL.md +147 -0
- package/skills/qa-robot-framework-writer/references/best-practices.md +249 -0
- package/skills/qa-robot-framework-writer/references/config.md +204 -0
- package/skills/qa-robot-framework-writer/references/libraries.md +273 -0
- package/skills/qa-robot-framework-writer/references/patterns.md +216 -0
- package/skills/qa-security-test-writer/SKILL.md +123 -0
- package/skills/qa-security-test-writer/references/best-practices.md +155 -0
- package/skills/qa-security-test-writer/references/owasp-top10.md +331 -0
- package/skills/qa-security-test-writer/references/zap-config.md +258 -0
- package/skills/qa-selenium-java-writer/SKILL.md +143 -0
- package/skills/qa-selenium-java-writer/references/best-practices.md +59 -0
- package/skills/qa-selenium-java-writer/references/config.md +143 -0
- package/skills/qa-selenium-java-writer/references/patterns.md +170 -0
- package/skills/qa-selenium-py-writer/SKILL.md +150 -0
- package/skills/qa-selenium-py-writer/references/best-practices.md +175 -0
- package/skills/qa-selenium-py-writer/references/config.md +224 -0
- package/skills/qa-selenium-py-writer/references/patterns.md +255 -0
- package/skills/qa-shortcut-integration/SKILL.md +143 -0
- package/skills/qa-shortcut-integration/references/api-patterns.md +126 -0
- package/skills/qa-shortcut-integration/references/field-mapping.md +66 -0
- package/skills/qa-spec-auditor/SKILL.md +162 -0
- package/skills/qa-spec-auditor/references/audit-checklist.md +144 -0
- package/skills/qa-spec-auditor/references/drift-patterns.md +207 -0
- package/skills/qa-spec-writer/SKILL.md +143 -0
- package/skills/qa-spec-writer/references/gherkin-guide.md +253 -0
- package/skills/qa-spec-writer/references/specification-patterns.md +274 -0
- package/skills/qa-spring-test-writer/SKILL.md +170 -0
- package/skills/qa-spring-test-writer/references/best-practices.md +57 -0
- package/skills/qa-spring-test-writer/references/config.md +179 -0
- package/skills/qa-spring-test-writer/references/patterns.md +235 -0
- package/skills/qa-supertest-writer/SKILL.md +150 -0
- package/skills/qa-supertest-writer/references/assertions.md +192 -0
- package/skills/qa-supertest-writer/references/best-practices.md +102 -0
- package/skills/qa-supertest-writer/references/config.md +166 -0
- package/skills/qa-supertest-writer/references/patterns.md +242 -0
- package/skills/qa-task-creator/SKILL.md +142 -0
- package/skills/qa-task-creator/references/linking-patterns.md +127 -0
- package/skills/qa-task-creator/references/task-types.md +169 -0
- package/skills/qa-task-creator/templates/task-template.md +24 -0
- package/skills/qa-test-doc-compiler/SKILL.md +114 -0
- package/skills/qa-test-doc-compiler/references/agile-tailoring.md +220 -0
- package/skills/qa-test-doc-compiler/references/iso-29119-3-documents.md +302 -0
- package/skills/qa-test-healer/SKILL.md +101 -0
- package/skills/qa-test-healer/references/diagnosis-patterns.md +142 -0
- package/skills/qa-test-healer/references/fix-strategies.md +177 -0
- package/skills/qa-test-reporter/SKILL.md +130 -0
- package/skills/qa-test-reporter/references/best-practices.md +162 -0
- package/skills/qa-test-reporter/references/iso-29119-reports.md +236 -0
- package/skills/qa-test-reporter/references/report-formats.md +287 -0
- package/skills/qa-test-reviewer/SKILL.md +142 -0
- package/skills/qa-test-reviewer/references/anti-patterns.md +268 -0
- package/skills/qa-test-reviewer/references/review-checklist.md +93 -0
- package/skills/qa-test-strategy/SKILL.md +133 -0
- package/skills/qa-test-strategy/references/entry-exit-criteria.md +176 -0
- package/skills/qa-test-strategy/references/risk-matrix.md +102 -0
- package/skills/qa-test-strategy/references/testing-types.md +143 -0
- package/skills/qa-testcase-from-docs/SKILL.md +161 -0
- package/skills/qa-testcase-from-docs/references/test-case-format.md +196 -0
- package/skills/qa-testcase-from-docs/references/test-design-techniques.md +126 -0
- package/skills/qa-testcase-from-docs/templates/test-case-template.md +31 -0
- package/skills/qa-testcase-from-ui/SKILL.md +109 -0
- package/skills/qa-testcase-from-ui/references/ui-element-patterns.md +126 -0
- package/skills/qa-testcase-from-ui/references/visual-analysis-guide.md +146 -0
- package/skills/qa-testcase-from-ui/templates/test-case-template.md +31 -0
- package/skills/qa-visual-regression-writer/SKILL.md +175 -0
- package/skills/qa-visual-regression-writer/references/best-practices.md +154 -0
- package/skills/qa-visual-regression-writer/references/config.md +220 -0
- package/skills/qa-visual-regression-writer/references/patterns.md +213 -0
- package/skills/qa-vitest-writer/SKILL.md +141 -0
- package/skills/qa-vitest-writer/references/assertions.md +105 -0
- package/skills/qa-vitest-writer/references/best-practices.md +62 -0
- package/skills/qa-vitest-writer/references/config.md +127 -0
- package/skills/qa-vitest-writer/references/patterns.md +141 -0
- package/skills/qa-webdriverio-writer/SKILL.md +145 -0
- package/skills/qa-webdriverio-writer/references/best-practices.md +176 -0
- package/skills/qa-webdriverio-writer/references/config.md +240 -0
- package/skills/qa-webdriverio-writer/references/patterns.md +269 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-test-reviewer
|
|
3
|
+
description: Code review for test files analyzing structure, assertions, coverage, anti-patterns, and providing a code-smell catalog with before/after improvement examples.
|
|
4
|
+
output_dir: reports/reviews
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# QA Test Reviewer
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Perform code review on test files to assess quality, identify anti-patterns, and recommend improvements. Analyzes test structure, assertion quality, coverage alignment, naming conventions, and mocking correctness. Produces a structured review report with severity ratings and suggested fixes.
|
|
12
|
+
|
|
13
|
+
## Trigger Phrases
|
|
14
|
+
|
|
15
|
+
- "Review my test code" / "Code review for tests"
|
|
16
|
+
- "Analyze test quality" / "Test code quality review"
|
|
17
|
+
- "Find test anti-patterns" / "Test code smells"
|
|
18
|
+
- "Review [test file] for best practices"
|
|
19
|
+
- "Improve test assertions" / "Fix test structure"
|
|
20
|
+
- "Test coverage alignment check"
|
|
21
|
+
- "DRY vs DAMP in tests"
|
|
22
|
+
|
|
23
|
+
## Review Criteria
|
|
24
|
+
|
|
25
|
+
| Criterion | What to Check |
|
|
26
|
+
|-----------|---------------|
|
|
27
|
+
| **Test structure** | describe/it nesting, setup/teardown placement, logical grouping |
|
|
28
|
+
| **Assertion quality** | Specific vs vague assertions; one logical assertion per test |
|
|
29
|
+
| **Coverage alignment** | Test ↔ requirement traceability; tests map to intended behavior |
|
|
30
|
+
| **Anti-patterns** | Hardcoded data, shared state, sleep waits, implementation coupling |
|
|
31
|
+
| **Naming conventions** | Descriptive test names; consistent style (should/expect format) |
|
|
32
|
+
| **DRY vs DAMP** | Shared setup where appropriate; readable tests over excessive abstraction |
|
|
33
|
+
| **Mocking correctness** | Mocks verify behavior; no over-mocking; correct setup/teardown |
|
|
34
|
+
|
|
35
|
+
See `references/anti-patterns.md` for the full catalog with before/after examples.
|
|
36
|
+
|
|
37
|
+
## Code Smell Catalog
|
|
38
|
+
|
|
39
|
+
| Smell | Description | See |
|
|
40
|
+
|-------|-------------|-----|
|
|
41
|
+
| **Magic numbers in tests** | Unexplained literals (timeouts, IDs, counts) | `references/anti-patterns.md` |
|
|
42
|
+
| **Copy-paste test duplication** | Nearly identical tests; should use parametrize/fixtures | `references/anti-patterns.md` |
|
|
43
|
+
| **Assertion-free tests** | Tests that run code but never assert | `references/anti-patterns.md` |
|
|
44
|
+
| **Over-mocking** | Mocking everything; tests verify mocks, not behavior | `references/anti-patterns.md` |
|
|
45
|
+
| **Test logic (if/for in tests)** | Conditional logic inside tests; tests should be deterministic | `references/anti-patterns.md` |
|
|
46
|
+
| **Ignored tests without explanation** | skip/xfail/todo with no reason | `references/anti-patterns.md` |
|
|
47
|
+
| **Hardcoded URLs/selectors** | Brittle strings; should use constants or config | `references/anti-patterns.md` |
|
|
48
|
+
|
|
49
|
+
Each smell includes before/after examples in `references/anti-patterns.md`.
|
|
50
|
+
|
|
51
|
+
## Output Format
|
|
52
|
+
|
|
53
|
+
### Review Report Template
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
# Test Review Report: [file/module name]
|
|
57
|
+
|
|
58
|
+
## Summary
|
|
59
|
+
- **Files reviewed:** [count]
|
|
60
|
+
- **Issues found:** [count] (Critical: X, High: Y, Medium: Z, Low: W)
|
|
61
|
+
- **Overall assessment:** Pass / Needs improvement / Fail
|
|
62
|
+
|
|
63
|
+
## Issues
|
|
64
|
+
|
|
65
|
+
### [Severity] [Issue title]
|
|
66
|
+
**Location:** [file:line]
|
|
67
|
+
**Smell:** [from catalog]
|
|
68
|
+
**Description:** [what's wrong]
|
|
69
|
+
**Suggested fix:**
|
|
70
|
+
[before/after code or instructions]
|
|
71
|
+
|
|
72
|
+
## Recommendations
|
|
73
|
+
1. [Priority action]
|
|
74
|
+
2. [Secondary action]
|
|
75
|
+
|
|
76
|
+
## References
|
|
77
|
+
- Anti-patterns: references/anti-patterns.md
|
|
78
|
+
- Checklist: references/review-checklist.md
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Severity Levels
|
|
82
|
+
|
|
83
|
+
| Level | When to use |
|
|
84
|
+
|-------|-------------|
|
|
85
|
+
| **Critical** | Tests are broken, misleading, or will cause false confidence |
|
|
86
|
+
| **High** | Significant maintainability or reliability issues |
|
|
87
|
+
| **Medium** | Best-practice violations; improves quality |
|
|
88
|
+
| **Low** | Style or minor improvements |
|
|
89
|
+
|
|
90
|
+
## Workflow
|
|
91
|
+
|
|
92
|
+
1. **Receive test files** — User provides path(s) or content
|
|
93
|
+
2. **Apply review checklist** — Use `references/review-checklist.md` systematically
|
|
94
|
+
3. **Identify smells** — Map findings to `references/anti-patterns.md` catalog
|
|
95
|
+
4. **Assign severity** — Critical/High/Medium/Low per impact
|
|
96
|
+
5. **Suggest fixes** — Provide before/after examples where applicable
|
|
97
|
+
6. **Produce report** — Structured output per template above
|
|
98
|
+
|
|
99
|
+
## Scope
|
|
100
|
+
|
|
101
|
+
**Can do (autonomous):**
|
|
102
|
+
- Review test files for structure, assertions, anti-patterns
|
|
103
|
+
- Produce review report with severity and suggested fixes
|
|
104
|
+
- Reference anti-patterns catalog and review checklist
|
|
105
|
+
- Suggest refactors with before/after examples
|
|
106
|
+
|
|
107
|
+
**Cannot do (requires confirmation):**
|
|
108
|
+
- Apply fixes directly to test code (review only; user applies)
|
|
109
|
+
- Change test framework or migrate tests
|
|
110
|
+
- Override organizational coding standards
|
|
111
|
+
|
|
112
|
+
**Will not do (out of scope):**
|
|
113
|
+
- Modify production/application code
|
|
114
|
+
- Execute tests or generate coverage (consume existing reports)
|
|
115
|
+
- Implement fixes; this skill reviews and recommends only
|
|
116
|
+
|
|
117
|
+
## References
|
|
118
|
+
|
|
119
|
+
| Topic | File |
|
|
120
|
+
|-------|------|
|
|
121
|
+
| Anti-patterns catalog with before/after examples | `references/anti-patterns.md` |
|
|
122
|
+
| Comprehensive test review checklist | `references/review-checklist.md` |
|
|
123
|
+
|
|
124
|
+
## Quality Checklist
|
|
125
|
+
|
|
126
|
+
- [ ] All review criteria from checklist applied
|
|
127
|
+
- [ ] Issues mapped to code smell catalog where applicable
|
|
128
|
+
- [ ] Severity assigned per impact (Critical/High/Medium/Low)
|
|
129
|
+
- [ ] Suggested fixes include before/after when helpful
|
|
130
|
+
- [ ] Report follows template format
|
|
131
|
+
- [ ] No hardcoded secrets in examples
|
|
132
|
+
- [ ] Traceability preserved (test case IDs, requirement links)
|
|
133
|
+
|
|
134
|
+
## Troubleshooting
|
|
135
|
+
|
|
136
|
+
| Symptom | Likely Cause | Fix |
|
|
137
|
+
|---------|--------------|-----|
|
|
138
|
+
| Report too verbose | Every minor issue listed | Focus on High/Critical; group Low by category |
|
|
139
|
+
| Before/after unclear | Example too abstract | Use concrete code from reviewed file |
|
|
140
|
+
| Checklist incomplete | Missing framework-specific checks | See review-checklist.md for Jest/pytest/Playwright sections |
|
|
141
|
+
| Severity inconsistent | Subjective judgment | Use severity table; Critical = broken/misleading |
|
|
142
|
+
| User wants fixes applied | Skill is review-only | Clarify scope; offer to generate patch as separate step |
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# Test Anti-Patterns Catalog
|
|
2
|
+
|
|
3
|
+
Before/after examples for common test code smells. Use this catalog when reviewing tests.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Magic Numbers in Tests
|
|
8
|
+
|
|
9
|
+
**Smell:** Unexplained literals (timeouts, IDs, counts) make tests brittle and hard to understand.
|
|
10
|
+
|
|
11
|
+
### Before
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
it('loads user data', async () => {
|
|
15
|
+
await page.waitForSelector('.user-card', { timeout: 5000 });
|
|
16
|
+
expect(await page.$$('.user-item')).toHaveLength(10);
|
|
17
|
+
});
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```python
|
|
21
|
+
def test_pagination():
|
|
22
|
+
response = client.get('/users?page=1&per_page=25')
|
|
23
|
+
assert len(response.json()['items']) == 25
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### After
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
const USER_LOAD_TIMEOUT_MS = 5000;
|
|
30
|
+
const EXPECTED_DEFAULT_PAGE_SIZE = 10;
|
|
31
|
+
|
|
32
|
+
it('loads user data', async () => {
|
|
33
|
+
await page.waitForSelector('.user-card', { timeout: USER_LOAD_TIMEOUT_MS });
|
|
34
|
+
expect(await page.$$('.user-item')).toHaveLength(EXPECTED_DEFAULT_PAGE_SIZE);
|
|
35
|
+
});
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
DEFAULT_PAGE_SIZE = 25
|
|
40
|
+
|
|
41
|
+
def test_pagination():
|
|
42
|
+
response = client.get(f'/users?page=1&per_page={DEFAULT_PAGE_SIZE}')
|
|
43
|
+
assert len(response.json()['items']) == DEFAULT_PAGE_SIZE
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 2. Copy-Paste Test Duplication
|
|
49
|
+
|
|
50
|
+
**Smell:** Nearly identical tests; should use parametrize or shared fixtures.
|
|
51
|
+
|
|
52
|
+
### Before
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
it('validates email format for gmail', () => {
|
|
56
|
+
expect(validateEmail('user@gmail.com')).toBe(true);
|
|
57
|
+
});
|
|
58
|
+
it('validates email format for outlook', () => {
|
|
59
|
+
expect(validateEmail('user@outlook.com')).toBe(true);
|
|
60
|
+
});
|
|
61
|
+
it('validates email format for yahoo', () => {
|
|
62
|
+
expect(validateEmail('user@yahoo.com')).toBe(true);
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
def test_email_gmail():
|
|
68
|
+
assert validate_email('user@gmail.com') is True
|
|
69
|
+
|
|
70
|
+
def test_email_outlook():
|
|
71
|
+
assert validate_email('user@outlook.com') is True
|
|
72
|
+
|
|
73
|
+
def test_email_yahoo():
|
|
74
|
+
assert validate_email('user@yahoo.com') is True
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### After
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
const validEmails = ['user@gmail.com', 'user@outlook.com', 'user@yahoo.com'];
|
|
81
|
+
validEmails.forEach((email) => {
|
|
82
|
+
it(`validates email format: ${email}`, () => {
|
|
83
|
+
expect(validateEmail(email)).toBe(true);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
// Or use test.each in Jest/Vitest
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
@pytest.mark.parametrize('email', ['user@gmail.com', 'user@outlook.com', 'user@yahoo.com'])
|
|
91
|
+
def test_valid_email_formats(email):
|
|
92
|
+
assert validate_email(email) is True
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 3. Assertion-Free Tests
|
|
98
|
+
|
|
99
|
+
**Smell:** Tests that run code but never assert; they pass even when behavior is wrong.
|
|
100
|
+
|
|
101
|
+
### Before
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
it('saves user to database', async () => {
|
|
105
|
+
await userService.create({ name: 'Alice', email: 'alice@test.com' });
|
|
106
|
+
});
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
def test_create_user():
|
|
111
|
+
user_service.create(name='Alice', email='alice@test.com')
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### After
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
it('saves user to database', async () => {
|
|
118
|
+
const user = await userService.create({ name: 'Alice', email: 'alice@test.com' });
|
|
119
|
+
expect(user.id).toBeDefined();
|
|
120
|
+
expect(user.name).toBe('Alice');
|
|
121
|
+
const saved = await db.users.findById(user.id);
|
|
122
|
+
expect(saved).toEqual(user);
|
|
123
|
+
});
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
def test_create_user():
|
|
128
|
+
user = user_service.create(name='Alice', email='alice@test.com')
|
|
129
|
+
assert user.id is not None
|
|
130
|
+
assert user.name == 'Alice'
|
|
131
|
+
saved = db.users.find_by_id(user.id)
|
|
132
|
+
assert saved == user
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 4. Over-Mocking
|
|
138
|
+
|
|
139
|
+
**Smell:** Mocking everything; tests verify mocks, not real behavior.
|
|
140
|
+
|
|
141
|
+
### Before
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
it('fetches user', async () => {
|
|
145
|
+
const mockFetch = jest.fn().mockResolvedValue({ id: 1, name: 'Alice' });
|
|
146
|
+
(global as any).fetch = mockFetch;
|
|
147
|
+
const user = await userService.getUser(1);
|
|
148
|
+
expect(mockFetch).toHaveBeenCalledWith('/api/users/1');
|
|
149
|
+
expect(user.name).toBe('Alice'); // from mock, not real logic
|
|
150
|
+
});
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### After
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
it('fetches user from API', async () => {
|
|
157
|
+
const mockResponse = { id: 1, name: 'Alice' };
|
|
158
|
+
server.use(http.get('/api/users/:id', () => HttpResponse.json(mockResponse)));
|
|
159
|
+
const user = await userService.getUser(1);
|
|
160
|
+
expect(user.name).toBe('Alice');
|
|
161
|
+
expect(user.id).toBe(1);
|
|
162
|
+
});
|
|
163
|
+
// Or: test integration with real API in integration suite; mock only external deps
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## 5. Test Logic (if/for in Tests)
|
|
169
|
+
|
|
170
|
+
**Smell:** Conditional logic inside tests; tests should be deterministic and simple.
|
|
171
|
+
|
|
172
|
+
### Before
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
it('handles multiple users', () => {
|
|
176
|
+
const users = getUsers();
|
|
177
|
+
for (const u of users) {
|
|
178
|
+
if (u.role === 'admin') {
|
|
179
|
+
expect(u.permissions).toContain('delete');
|
|
180
|
+
} else {
|
|
181
|
+
expect(u.permissions).not.toContain('delete');
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### After
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
it('admin users have delete permission', () => {
|
|
191
|
+
const admin = getUsers().find(u => u.role === 'admin');
|
|
192
|
+
expect(admin?.permissions).toContain('delete');
|
|
193
|
+
});
|
|
194
|
+
it('non-admin users lack delete permission', () => {
|
|
195
|
+
const regular = getUsers().find(u => u.role !== 'admin');
|
|
196
|
+
expect(regular?.permissions).not.toContain('delete');
|
|
197
|
+
});
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 6. Ignored Tests Without Explanation
|
|
203
|
+
|
|
204
|
+
**Smell:** skip/xfail/todo with no reason; tests get forgotten.
|
|
205
|
+
|
|
206
|
+
### Before
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
it.skip('flaky test', () => { /* ... */ });
|
|
210
|
+
it.todo('something');
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
```python
|
|
214
|
+
@pytest.mark.skip
|
|
215
|
+
def test_something():
|
|
216
|
+
pass
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### After
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
it.skip('flaky: API returns 500 intermittently; ticket QA-123', () => { /* ... */ });
|
|
223
|
+
it.todo('add test for bulk delete when API is ready');
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
```python
|
|
227
|
+
@pytest.mark.skip(reason='Flaky: API returns 500 intermittently; ticket QA-123')
|
|
228
|
+
def test_something():
|
|
229
|
+
pass
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 7. Hardcoded URLs/Selectors
|
|
235
|
+
|
|
236
|
+
**Smell:** Brittle strings; should use constants or config.
|
|
237
|
+
|
|
238
|
+
### Before
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
await page.goto('https://staging.example.com/login');
|
|
242
|
+
await page.click('#root > div > form > button[type="submit"]');
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
```python
|
|
246
|
+
driver.get('https://staging.example.com/login')
|
|
247
|
+
driver.find_element(By.CSS_SELECTOR, '#root > div > form > button[type="submit"]').click()
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### After
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
const BASE_URL = process.env.TEST_BASE_URL || 'https://staging.example.com';
|
|
254
|
+
const SELECTORS = {
|
|
255
|
+
loginSubmit: 'button[type="submit"]',
|
|
256
|
+
// or use data-testid: '[data-testid="login-submit"]'
|
|
257
|
+
};
|
|
258
|
+
await page.goto(`${BASE_URL}/login`);
|
|
259
|
+
await page.click(SELECTORS.loginSubmit);
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
```python
|
|
263
|
+
BASE_URL = os.environ.get('TEST_BASE_URL', 'https://staging.example.com')
|
|
264
|
+
LOGIN_SUBMIT = '[data-testid="login-submit"]'
|
|
265
|
+
|
|
266
|
+
driver.get(f'{BASE_URL}/login')
|
|
267
|
+
driver.find_element(By.CSS_SELECTOR, LOGIN_SUBMIT).click()
|
|
268
|
+
```
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Test Review Checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist systematically when reviewing test files.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Test Structure
|
|
8
|
+
|
|
9
|
+
- [ ] **describe/it nesting** — Logical grouping; max 3–4 levels deep
|
|
10
|
+
- [ ] **Setup/teardown** — beforeEach/afterEach or fixtures in correct scope
|
|
11
|
+
- [ ] **Test isolation** — Each test independent; no shared mutable state
|
|
12
|
+
- [ ] **Arrange-Act-Assert** — Clear three-phase structure
|
|
13
|
+
- [ ] **One logical assertion per test** — Single behavior under test
|
|
14
|
+
|
|
15
|
+
### Framework-Specific
|
|
16
|
+
|
|
17
|
+
| Framework | Structure |
|
|
18
|
+
|-----------|-----------|
|
|
19
|
+
| Jest/Vitest | describe → it; beforeEach/afterEach |
|
|
20
|
+
| pytest | class or module; fixtures with scope |
|
|
21
|
+
| Playwright | test() with test.describe; fixtures |
|
|
22
|
+
| Cypress | describe → it; beforeEach |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. Assertion Quality
|
|
27
|
+
|
|
28
|
+
- [ ] **Specific assertions** — `expect(x).toBe(y)` not `expect(!!x).toBe(true)` when possible
|
|
29
|
+
- [ ] **Meaningful failure messages** — Custom message when assertion is unclear
|
|
30
|
+
- [ ] **No assertion-free tests** — Every test asserts something
|
|
31
|
+
- [ ] **Correct matchers** — toEqual vs toBe; toContain vs toHaveLength
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 3. Coverage Alignment
|
|
36
|
+
|
|
37
|
+
- [ ] **Requirement traceability** — Test IDs or comments link to requirements
|
|
38
|
+
- [ ] **Behavior-focused** — Tests verify behavior, not implementation
|
|
39
|
+
- [ ] **Edge cases** — Boundaries, empty inputs, error paths covered
|
|
40
|
+
- [ ] **No redundant tests** — Same behavior not tested multiple times
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 4. Anti-Patterns
|
|
45
|
+
|
|
46
|
+
- [ ] **No magic numbers** — Constants for timeouts, counts, IDs
|
|
47
|
+
- [ ] **No copy-paste duplication** — Parametrize or fixtures
|
|
48
|
+
- [ ] **No sleep waits** — Explicit waits (waitForSelector, waitForResponse)
|
|
49
|
+
- [ ] **No hardcoded URLs/selectors** — Config or constants
|
|
50
|
+
- [ ] **No shared mutable state** — Each test gets fresh data
|
|
51
|
+
- [ ] **No implementation coupling** — Test public API, not internals
|
|
52
|
+
- [ ] **No test logic** — No if/for/switch inside tests
|
|
53
|
+
- [ ] **No ignored tests without reason** — skip/xfail/todo with explanation
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 5. Naming Conventions
|
|
58
|
+
|
|
59
|
+
- [ ] **Descriptive names** — "should display error when email is invalid"
|
|
60
|
+
- [ ] **Consistent style** — should/expect or given-when-then
|
|
61
|
+
- [ ] **No implementation details** — "clicks submit button" vs "calls onSubmit handler"
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 6. DRY vs DAMP
|
|
66
|
+
|
|
67
|
+
- [ ] **Shared setup** — Common fixtures for repeated setup
|
|
68
|
+
- [ ] **Readable over abstract** — DAMP when clarity matters
|
|
69
|
+
- [ ] **No over-abstraction** — Test helpers that obscure intent
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 7. Mocking
|
|
74
|
+
|
|
75
|
+
- [ ] **Mock only external deps** — APIs, DB, file system
|
|
76
|
+
- [ ] **Verify behavior, not calls** — Prefer outcome over call count when possible
|
|
77
|
+
- [ ] **Correct teardown** — Mocks restored after test
|
|
78
|
+
- [ ] **No over-mocking** — Test real code paths where feasible
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Severity Mapping
|
|
83
|
+
|
|
84
|
+
| Finding | Typical Severity |
|
|
85
|
+
|---------|------------------|
|
|
86
|
+
| Assertion-free test | Critical |
|
|
87
|
+
| Shared mutable state | Critical |
|
|
88
|
+
| sleep() in test | High |
|
|
89
|
+
| Magic numbers everywhere | Medium |
|
|
90
|
+
| Copy-paste duplication | Medium |
|
|
91
|
+
| Hardcoded URL | Medium |
|
|
92
|
+
| skip without reason | Low |
|
|
93
|
+
| Naming style inconsistency | Low |
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-test-strategy
|
|
3
|
+
description: Generate comprehensive test strategy documents covering scope, approach, testing types, environments, risk assessment, entry/exit criteria, and resource planning.
|
|
4
|
+
output_dir: docs/plans
|
|
5
|
+
dependencies:
|
|
6
|
+
recommended:
|
|
7
|
+
- qa-diagram-generator
|
|
8
|
+
- qa-risk-analyzer
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# QA Test Strategy
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Create comprehensive test strategy and test plan documents that define the overall approach to testing for a project or release. Aligns with ISO/IEC/IEEE 29119-3 and provides a strategic blueprint for all testing activities.
|
|
16
|
+
|
|
17
|
+
## Trigger Phrases
|
|
18
|
+
|
|
19
|
+
- "Create a test strategy for..."
|
|
20
|
+
- "Generate test strategy document"
|
|
21
|
+
- "Define testing approach for project"
|
|
22
|
+
- "Test plan with risk assessment"
|
|
23
|
+
- "Comprehensive QA strategy"
|
|
24
|
+
|
|
25
|
+
## Output Sections
|
|
26
|
+
|
|
27
|
+
Every test strategy document includes:
|
|
28
|
+
|
|
29
|
+
| Section | Content |
|
|
30
|
+
| ------- | ------- |
|
|
31
|
+
| **Test Scope & Objectives** | In-scope/out-of-scope, measurable goals, success criteria |
|
|
32
|
+
| **Testing Types Breakdown & Rationale** | Unit, integration, E2E, performance, security, accessibility, etc. — with rationale for each |
|
|
33
|
+
| **Environment Requirements** | Dev, staging, prod parity, data, tooling |
|
|
34
|
+
| **Risk Assessment Matrix** | Technical, business, process risks with probability/impact and mitigations |
|
|
35
|
+
| **Entry/Exit Criteria** | Conditions to start and complete testing at each level |
|
|
36
|
+
| **Resource & Timeline Estimation** | Roles, effort, schedule, dependencies |
|
|
37
|
+
| **Defect Management Process** | Triage, severity, workflow, escalation |
|
|
38
|
+
| **Definition of Done/Ready** | DoD for stories; DoR for sprint readiness |
|
|
39
|
+
| **Test Data Strategy** | Sources, masking, refresh, synthetic data |
|
|
40
|
+
| **CI/CD Integration Strategy** | Pipeline gates, automation triggers, reporting |
|
|
41
|
+
|
|
42
|
+
## Testing Pyramid Guidance
|
|
43
|
+
|
|
44
|
+
Apply the testing pyramid principle for balanced coverage:
|
|
45
|
+
|
|
46
|
+
| Layer | Ratio (typical) | Focus |
|
|
47
|
+
| ----- | ----------------- | ----- |
|
|
48
|
+
| **Unit** | 70% | Fast, isolated, high volume |
|
|
49
|
+
| **Integration** | 20% | Component interactions, APIs |
|
|
50
|
+
| **E2E** | 10% | Critical user journeys, smoke |
|
|
51
|
+
|
|
52
|
+
Reference `references/testing-types.md` for detailed type descriptions and when to apply each.
|
|
53
|
+
|
|
54
|
+
## Risk-Based Test Prioritization
|
|
55
|
+
|
|
56
|
+
1. **Identify risks** — Technical, business, process (see `references/risk-matrix.md`)
|
|
57
|
+
2. **Score** — Probability × Impact = Risk score
|
|
58
|
+
3. **Prioritize** — High-risk areas get more coverage and earlier testing
|
|
59
|
+
4. **Mitigate** — Allocate exploratory, security, performance tests to high-risk zones
|
|
60
|
+
|
|
61
|
+
## Integration with Other Skills
|
|
62
|
+
|
|
63
|
+
| Need | Skill | Usage |
|
|
64
|
+
| ---- | ----- | ----- |
|
|
65
|
+
| Gantt charts, timelines | qa-diagram-generator | `references/gantt.md` for schedule visualization |
|
|
66
|
+
| Mind maps, flowcharts | qa-diagram-generator | `references/mindmap.md`, `references/flowchart.md` for scope/process |
|
|
67
|
+
| Detailed sub-plans | qa-plan-creator | Test plan, sprint plan, regression plan, performance plan |
|
|
68
|
+
| NFR analysis | qa-nfr-analyst | Performance, security, usability requirements |
|
|
69
|
+
|
|
70
|
+
## Workflow
|
|
71
|
+
|
|
72
|
+
1. **Input:** Project context (scope, tech stack, timeline, constraints)
|
|
73
|
+
2. **Scope:** Define in/out boundaries and objectives
|
|
74
|
+
3. **Types:** Select testing types from `references/testing-types.md` with rationale
|
|
75
|
+
4. **Pyramid:** Apply unit > integration > E2E ratios
|
|
76
|
+
5. **Risk:** Populate risk matrix from `references/risk-matrix.md`
|
|
77
|
+
6. **Criteria:** Apply entry/exit from `references/entry-exit-criteria.md`
|
|
78
|
+
7. **Visuals:** Call qa-diagram-generator for Gantt, mind maps, flowcharts
|
|
79
|
+
8. **Sub-plans:** Call qa-plan-creator for detailed test/sprint/regression plans
|
|
80
|
+
9. **Output:** Complete test strategy document
|
|
81
|
+
|
|
82
|
+
## Scope
|
|
83
|
+
|
|
84
|
+
**Can do (autonomous):**
|
|
85
|
+
- Generate full test strategy documents from project context
|
|
86
|
+
- Populate all 10 output sections
|
|
87
|
+
- Apply testing pyramid ratios and risk-based prioritization
|
|
88
|
+
- Call qa-diagram-generator for Gantt, mind maps, flowcharts
|
|
89
|
+
- Call qa-plan-creator for detailed sub-plans
|
|
90
|
+
- Reference testing-types, risk-matrix, entry-exit-criteria
|
|
91
|
+
|
|
92
|
+
**Cannot do (requires confirmation):**
|
|
93
|
+
- Change project scope or release dates set by stakeholders
|
|
94
|
+
- Override organizational test policy or standards
|
|
95
|
+
- Assign resources without approval
|
|
96
|
+
|
|
97
|
+
**Will not do (out of scope):**
|
|
98
|
+
- Execute tests or automation
|
|
99
|
+
- Modify production code or environments
|
|
100
|
+
- Approve strategy (approval is stakeholder responsibility)
|
|
101
|
+
|
|
102
|
+
## Quality Checklist
|
|
103
|
+
|
|
104
|
+
- [ ] All 10 output sections present and populated
|
|
105
|
+
- [ ] Test scope clearly defines in/out boundaries
|
|
106
|
+
- [ ] Testing types include rationale (why each type)
|
|
107
|
+
- [ ] Pyramid ratios applied (unit > integration > E2E)
|
|
108
|
+
- [ ] Risk matrix populated with mitigations
|
|
109
|
+
- [ ] Entry/exit criteria are testable and level-specific
|
|
110
|
+
- [ ] Resource/timeline estimates are realistic
|
|
111
|
+
- [ ] Diagrams generated for schedule/scope (Gantt, mind map)
|
|
112
|
+
- [ ] References to qa-diagram-generator and qa-plan-creator correct
|
|
113
|
+
- [ ] No hardcoded secrets
|
|
114
|
+
|
|
115
|
+
## Troubleshooting
|
|
116
|
+
|
|
117
|
+
| Symptom | Likely Cause | Fix |
|
|
118
|
+
| ------- | ------------ | --- |
|
|
119
|
+
| Strategy too generic | Insufficient context | Ask for scope, tech stack, timeline, team size |
|
|
120
|
+
| Missing diagrams | qa-diagram-generator not invoked | Explicitly call for Gantt, mind map, flowchart |
|
|
121
|
+
| Wrong testing types | Project type unclear | Clarify web/mobile/API/embedded; use testing-types reference |
|
|
122
|
+
| Risk matrix empty | No risk input | Prompt for known risks; use risk-matrix template |
|
|
123
|
+
| Entry/exit vague | Subjective language | Use entry-exit-criteria reference; make criteria measurable |
|
|
124
|
+
| Pyramid inverted | E2E-heavy approach | Recommend rebalancing; explain pyramid rationale |
|
|
125
|
+
| Duplicate content | Overlap with qa-plan-creator | Strategy = high-level; plan = detailed; delegate sub-plans |
|
|
126
|
+
|
|
127
|
+
## Reference Files
|
|
128
|
+
|
|
129
|
+
| Topic | Reference |
|
|
130
|
+
| ----- | --------- |
|
|
131
|
+
| Testing types | `references/testing-types.md` |
|
|
132
|
+
| Risk assessment | `references/risk-matrix.md` |
|
|
133
|
+
| Entry/exit criteria | `references/entry-exit-criteria.md` |
|