Produces the per-feature / per-release risk-matrix artifact itself: a structured intake (feature, category, impact 1-5 by likelihood 1-5, score), mitigations with owners and due dates, supporting both lightweight (impact by likelihood) and heavyweight (FMEA / Cost of Exposure) methods per RBT canon, output as a Markdown / spreadsheet the team reviews each sprint. Use when building the matrix artifact; to facilitate the live risk-storming meeting use risk-storming-facilitator, to calibrate scores across raters use risk-matrix-calibration, and to map the resulting risks onto test coverage use risk-coverage-mapper.
75
94%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Per rbt-wiki:
"Risk-based testing (RBT) is 'a type of software testing that functions as an organizational principle used to prioritize the tests of features and functions in software, based on the risk of failure.'"
The risk matrix is the artifact that drives RBT decisions. Without it, prioritization is gut-feel; with it, the team has a defensible record of "why we tested this and not that."
The worked example below runs a checkout release through the full flow.
Per rbt-wiki, two approaches:
| Approach | Method | When |
|---|---|---|
| Lightweight | Impact × Likelihood, simple high/medium/low | Default; most teams. |
| Heavyweight | FMEA / Cost of Exposure / QFD / FTA | Regulated industries; safety-critical; insurance. |
Most teams should start lightweight - heavyweight methods need specialized expertise.
# Risk matrix - `<feature/release>`
**Date:** YYYY-MM-DD **Owner:** _______________ **Reviewers:** _______________
## Risks
| ID | Risk | Category | Impact (1-5) | Likelihood (1-5) | Score | Mitigation | Owner | Due |
|-----|-----------------------------------------------|------------|-------------:|-----------------:|------:|-------------------------------------|-------|-----|
| R-1 | Promo discount math wrong (off-by-cent) | Business | 5 | 3 | 15 | Add property-based tests on rounding | Alice | 2026-05-15 |
| R-2 | Stripe webhook delivery failure not retried | Technical | 4 | 4 | 16 | Add retry + DLQ; add chaos test | Bob | 2026-05-12 |
| R-3 | EU tax calculation incorrect | Regulatory | 5 | 2 | 10 | UAT with finance team | Carol | 2026-05-20 |
| R-4 | Cart loses state on app restart | UX | 3 | 3 | 9 | Persistent cart in localStorage | Dave | 2026-05-10 |
## Heatmap
| Likelihood ↓ \ Impact → | 1 (low) | 2 | 3 | 4 | 5 (high) |
|--------------------------|---------|---|---|---|----------|
| 5 (very likely) | | | | | |
| 4 | | | | R-2 | |
| 3 | | | R-4 | | R-1 |
| 2 | | | | | R-3 |
| 1 | | | | | |
## Verdict
- **Critical (score >=15):** R-1 (15), R-2 (16). Block release until mitigated.
- **High (score 9-14):** R-3 (10), R-4 (9). Mitigate this sprint.
- **Medium (score 5-8):** (none).
- **Low (score 1-4):** (none).The 5×5 matrix yields scores 1-25; the team picks the threshold for "block release" (typically 15+).
Per rbt-wiki, risks span:
- Business/operational: System criticality and usage frequency
- Technical: Team distribution and complexity
- External: Regulatory requirements and stakeholder preferences
- E-business specific: Security vulnerabilities, performance failures, and integration defects
Tag every risk with one category. Patterns emerge over time - "all our top risks are integration" suggests an architectural review, not just more testing.
A populated matrix drives the test plan:
| Risk class | Recommended test types |
|---|---|
| Business logic | Unit + property-based + UAT |
| Technical | Integration + chaos + load |
| Regulatory | UAT with stakeholder + compliance review |
| UX | Manual exploratory + visual regression |
| Security | Threat model + SAST + DAST + pen test |
| Performance | Load + perf budget + canary |
| Integration | Contract testing + integration tests + canary |
The test plan reads off the matrix: top-N risks → test types per risk → estimated effort.
Input: the checkout-redesign release scope, lightweight methodology (Step 1).
Intake and score (Steps 2-3). Four risks surface, each tagged with a category and scored impact × likelihood:
| ID | Risk | Category | Impact | Likelihood | Score |
|---|---|---|---|---|---|
| R-1 | Promo discount math wrong (off-by-cent) | Business | 5 | 3 | 15 |
| R-2 | Stripe webhook delivery failure not retried | Technical | 4 | 4 | 16 |
| R-3 | EU tax calculation incorrect | Regulatory | 5 | 2 | 10 |
| R-4 | Cart loses state on app restart | UX | 3 | 3 | 9 |
Tier the verdict (Step 2). With a block threshold of 15: R-2 (16) and R-1 (15) block the release until mitigated; R-3 (10) and R-4 (9) are high and get mitigated this sprint.
Read the test plan off the matrix (Step 4). Each risk's category selects its test types:
Outcome. The two blocking risks (R-1, R-2) get owners and due dates before
sign-off; the matrix is committed to
docs/risk-matrices/2026-Q2-checkout-redesign.md and re-reviewed at the next
cadence point (Step 6).
For regulated or safety-critical products where lightweight scoring is insufficient, risk-based testing offers quantitative methods - FMEA (Risk Priority Number = severity × occurrence × detectability) and Cost of Exposure (annual financial risk vs mitigation cost) - per rbt-wiki. Both need specialized expertise; use them only when regulation or financial justification requires it. Full row structure, worked FMEA and Cost-of-Exposure tables, and a when-to-use guide are in references/heavyweight-risk-scoring.md.
| Cadence | Trigger |
|---|---|
| Per-feature | Before development starts |
| Per-release | Pre-release sign-off |
| Quarterly | Strategic risk review |
| Post-incident | Update the matrix with the surfaced risk |
The matrix is a living document - risks change as features ship, mitigations land, and incidents reveal new failure modes.
docs/risk-matrices/
├── 2026-Q2-checkout-redesign.md
├── 2026-Q2-stripe-integration.md
├── 2026-Q1-summary.md ← rollup
└── README.mdMarkdown files version-controlled in git. Reviews via PR; updates tracked over time.
| Anti-pattern | Why it fails | Fix |
|---|---|---|
| Risk matrix authored once, never updated | Becomes irrelevant; team stops trusting. | Per-feature + quarterly cadence (Step 6). |
| Subjective scoring without examples | Different reviewers score differently; matrix unreliable. | Document score rubric (e.g., "5 = customer money loss"). |
| All-business-category matrix | Misses technical / regulatory risks; gaps invisible. | Tag every risk with a category (Step 3). |
| Matrix without owner per row | "Mitigated" never happens. | Owner column required (Step 2). |
| Heavyweight FMEA on a small product | Over-engineering; team disables. | Lightweight default; FMEA only when regulation requires (Step 1). |
| Risk matrix in slides, not version-controlled | History lost; rollup impossible. | Markdown + git (Step 7). |
risk-storming-facilitator - sibling: facilitates the session that fills the matrix.test-strategy-author -
test strategy doc that references the matrix.