Day 44 of 60
·
Process, code review & AI-assisted
Test impact analysis / selective execution
When CI is too slow, engineers batch changes, skip checks, or wait an hour. Selective execution preserves the loop everything else depends on.
ProblemCI grows past the point where engineers trust it, so they batch changes, skip checks, or wait hours for feedback.
How it works
Map changed files to affected tests using dependency graphs, historical coverage, build-system knowledge, or flaky-test quarantine. Run the smallest safe suite on PRs and the full suite on merge or nightly.
What it catches
Slow-feedback failures, skipped CI, accidental test-suite blind spots after refactors. It preserves quality by keeping the validation loop fast enough to use.
Tools
Bazel · OSS Nx affected · OSS Turborepo · OSS Launchable · SaaS Gradle Enterprise · SaaS
Verdict by project size
Small
Skip
Medium
Opt
Large
Rec
Extra-large
Must
Cost
| Project size | Setup | Maint / mo | Tool / mo | CI / run |
|---|---|---|---|---|
| Small <10k LOC | 0h | 0h | $0 | , |
| Medium 10–100k LOC | 2d | 4h | $0 | -5m |
| Large 100k–1M LOC | 10d | 20h | $1k | -30m |
| Extra-large >1M LOC | 40d | 120h | $10k | -120m |
Setup = engineer-days to first useful run ·
Maint = engineer-hours / month at steady state ·
Tool = out-of-pocket $ / month ·
CI = minutes added (or saved) per pipeline run
Lifecycle & ownership
When in lifecycle
Build Test
Per pull request · Runs in CI on every PR; gates merge.
Who owns it
Tech Lead / EM
DORA, post-mortems, ADRs
Collaborates with: Developer, SRE / DevOps / Platform, QA / Test Engineer
Reference implementations
-
Nx affected
Selective execution model that runs only tasks impacted by a change.
-
Bazel query how-to
Dependency graph querying foundation for selective builds and tests.
-
Turborepo pruning
Monorepo pruning pattern for running only work affected by a target package.
Quick check
Test impact analysis preserves quality by…
One question. Pick the best answer. Your streak is saved locally on this device.
Save the lesson
Download SVG ↓Screenshot for a 1:1, drop it in Slack, or download the SVG.