Files
magnus919_agent-skills/qa-methodology/references/risk-based-testing.md
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

7.9 KiB
Raw Permalink Blame History

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.

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. 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.


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).