Files
magnus919_agent-skills/qa-methodology/references/risk-based-testing.md
T
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> ff69b0982f feat(qa-methodology): add 3 new traditional QA references
Add risk-based-testing.md (P×I formula, 5×5 matrix, workshop guidance,
risk register, reassessment triggers, cost-of-failure, estimation
heuristic), exploratory-testing.md (SBTM, charter format, T/B/B metrics,
SFDIPOT, HICCUPPS, tours, bug advocacy), and test-design-techniques.md
(EP, BVA 2/3-value, decision tables, state transition, pairwise/PICT,
error guessing, when-to-use-which table with heuristic level-mapping).

Mutual cross-links with test-strategy.md; consistent P0–P3 priority
tiers. All 12 traditional refs now meet cumulative bars: worked examples,
citations, gotcha warnings, link resolution, composition links, and
accessibility+web-accessibility coverage.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 17:48:37 -04:00

163 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Risk-Based Testing
Prioritize test effort by risk. Load when deciding where to invest limited testing time, building a risk register, or running a risk assessment workshop. For the broader strategy context (pyramid shape, shift-left/right), see [test-strategy.md](./test-strategy.md).
## Risk = Probability × Impact
Every test decision is a risk decision made implicitly. Make it explicit:
```
Risk Score = Probability (15) × Impact (15)
```
| Score Range | Zone | Action |
|-------------|------|--------|
| 2025 | **Critical** (P0) | Test exhaustively; every path, every edge case |
| 1219 | **High** (P1) | Test all happy paths + known failure modes |
| 611 | **Medium** (P2) | Test happy paths + common failure modes |
| 15 | **Low** (P3) | Smoke test only; defer detailed testing |
These priority tiers (P0P3) align with the coverage tiers in [test-strategy.md](./test-strategy.md). A P0 risk item demands P0-level coverage; a P3 risk item justifies smoke-only testing.
## 5×5 Risk Matrix
| P \ I | 1 — Negligible | 2 — Minor | 3 — Moderate | 4 — Major | 5 — Catastrophic |
|-------|----------------|-----------|--------------|-----------|-------------------|
| **5 — Almost Certain** | 5 (P3) | 10 (P2) | 15 (P1) | 20 (P0) | 25 (P0) |
| **4 — Likely** | 4 (P3) | 8 (P2) | 12 (P1) | 16 (P0) | 20 (P0) |
| **3 — Possible** | 3 (P3) | 6 (P2) | 9 (P2) | 12 (P1) | 15 (P1) |
| **2 — Unlikely** | 2 (P3) | 4 (P3) | 6 (P2) | 8 (P2) | 10 (P2) |
| **1 — Rare** | 1 (P3) | 2 (P3) | 3 (P3) | 4 (P3) | 5 (P3) |
### Scoring Guidance
| Rating | Probability Anchor | Impact Anchor |
|--------|--------------------|---------------|
| 5 | Will fail in production within a quarter (or has already) | Data loss, security breach, revenue stoppage |
| 4 | Expected to fail within a year | Major feature outage, SLA breach |
| 3 | Could fail; uncertain | Degraded experience, workaround exists |
| 2 | Unlikely given current controls | Cosmetic, minor inconvenience |
| 1 | Extremely unlikely; well-understood code | No user-visible impact |
## Risk Assessment Workshop
Run a structured workshop to score risks collaboratively. Solo scoring introduces individual bias; group calibration produces defensible priorities.
### Participants
- QA lead (facilitator)
- Engineering leads for affected areas
- Product manager (impact calibration)
- Operations / SRE representative (production context)
### Agenda (90 minutes)
| Time | Activity |
|------|----------|
| 015 min | Identify risk items: what could go wrong? (brainstorm from change log, incident history, architecture) |
| 1550 min | Score each item: probability (group vote, median), impact (product calibrates) |
| 5065 min | Rank and assign priority tiers (P0P3) from the matrix |
| 6580 min | Define mitigations: what tests, who owns them, by when |
| 8090 min | Agree reassessment triggers and next review date |
### Calibration Rule
If probability votes span > 2 points, the facilitator asks the highest and lowest voter to state their evidence. Re-vote once. Record dissent in the register.
## Risk Register Structure
| Column | Description | Example |
|--------|-------------|---------|
| ID | Unique identifier | RISK-012 |
| Risk Description | What could go wrong | Payment gateway timeout during peak |
| Component | Affected system area | Checkout service |
| Probability (15) | Likelihood of occurrence | 4 |
| Impact (15) | Severity if it occurs | 5 |
| Score | P × I | 20 |
| Priority Tier | P0P3 (from matrix) | P0 |
| Mitigation / Test Plan | What testing addresses this | Load test at 2× peak; chaos inject timeout |
| Owner | Who implements the mitigation | QA-2 |
| Status | Open / Mitigating / Closed | Mitigating |
| Last Reviewed | Date of last reassessment | 2025-07-15 |
| Reassessment Trigger | What event re-opens this | Payment provider API change |
## Reassessment Triggers
Risk is not static. Re-score the register when any trigger fires:
| Trigger | Rationale |
|---------|-----------|
| Production incident in the area | Actual failure updates probability upward |
| Architecture change (new dependency, refactor) | Changes both probability and impact landscape |
| New regulatory requirement | May raise impact (compliance penalty) |
| Major release or migration | New failure modes introduced |
| Quarterly calendar review | Prevents register staleness (default cadence) |
| Team change (key engineer leaves) | Knowledge gaps raise probability |
| Customer escalation | Business impact may have changed |
## Cost-of-Failure Reasoning
Risk-based testing investment is justified by the cost differential between catching a defect early vs late:
| Detection Phase | Relative Fix Cost | Risk-Based Justification |
|----------------|-------------------|--------------------------|
| Design / Spec review | 1× | Highest-leverage test: risk workshop catches design flaws |
| Unit / PR testing | 510× | P0/P1 items justify exhaustive unit coverage |
| Integration / Staging | 2050× | Contract and integration tests for cross-boundary risks |
| Production | 100×+ | Shift-right monitoring for residual P0 risk |
**Decision rule:** Allocate test effort proportional to risk score. A P0 item (score 2025) receives 35× the per-item test design budget of a P3 item (score 15).
## Test Estimation Heuristic
Estimate test effort from the risk register:
```
total_test_hours = Σ (risk_items_in_tier × hours_per_tier)
Hours per tier (default):
P0: 816 hours per risk item (exhaustive design + automation)
P1: 48 hours per risk item
P2: 24 hours per risk item
P3: 0.51 hour per risk item (smoke only)
```
**Adjustment factors:** multiply by 1.5× for legacy/unfamiliar code, 0.7× for well-automated areas with existing coverage.
### Worked Example
A release has 3 P0 risks, 5 P1 risks, 8 P2 risks, and 12 P3 risks:
| Tier | Items | Hours/Item | Subtotal |
|------|-------|-----------|----------|
| P0 | 3 | 12 | 36 |
| P1 | 5 | 6 | 30 |
| P2 | 8 | 3 | 24 |
| P3 | 12 | 0.75 | 9 |
| **Total** | **28** | — | **99 hours** |
With a 2-person QA team (80 hours/sprint), this release requires ~1.25 sprints of test design effort. Negotiate scope or add capacity for P0 items; P3 items can be deferred.
## Gotchas
> **Gotcha — Static register:** A risk register written once at project start and never updated is fiction. Reassess on triggers (above) and at minimum quarterly. A stale register misallocates effort toward risks that no longer exist.
> **Gotcha — Consensus theater:** If the workshop rubber-stamps the loudest voice's scores without evidence, the register is political, not analytical. Require evidence anchors for every score. Record dissent.
> **Gotcha — Full suite on every PR regardless of risk:** Running everything on every change wastes CI minutes and trains teams to ignore results. Use risk tiers to gate test selection (P0 always runs; P3 runs nightly).
## Exit Condition
You are done applying this reference when: (1) a risk register exists with scored items mapped to P0P3 tiers, (2) test allocation is proportional to risk scores, (3) reassessment triggers are defined with a calendar backstop, and (4) the estimation heuristic produces a capacity-checked plan.
## Composition Links
- Broader test strategy and pyramid shape: [test-strategy.md](./test-strategy.md)
- Regression suite tiering by risk: [regression-testing.md](./regression-testing.md)
- Quality gate design (blocking vs advisory per tier): [quality-gates-and-metrics.md](./quality-gates-and-metrics.md)
- Verification planning and evidence standards: [verification-methodology](../../verification-methodology/SKILL.md)
---
*Sources: ISO/IEC 25010 (systems and software quality requirements), ISTQB Foundation Level Syllabus 2023 (risk-based testing chapter), James Bach (context-driven testing, risk heuristics), Kaner/Bach/Pettichord "Lessons Learned in Software Testing" (Wiley, 2002), DORA State of DevOps Reports (cost-of-failure data).*