Day 12 of 60
·
Unit, integration, contract
Integration testing
Bugs hide at the seams, the queue you forgot to drain, the timezone the third-party API doesn't share. Integration tests find them while CI is still warm.
ProblemBugs at the seams between modules, DB calls, queues, third-party APIs.
How it works
Tests that exercise multiple modules through a real or near-real environment. Test the contract, not the internals. Often the highest defect-yield layer per maintenance hour.
What it catches
Boundary defects, wrong query, missing transaction, schema mismatch, retry loops, timeouts. Catches 30–50% of bugs that unit tests miss.
Tools
Testcontainers · OSS pytest + Docker Compose · OSS WireMock · OSS
Verdict by project size
Small
Rec
Medium
Must
Large
Must
Extra-large
Must
Cost
| Project size | Setup | Maint / mo | Tool / mo | CI / run |
|---|---|---|---|---|
| Small <10k LOC | 1d | 2h | $0 | +2m |
| Medium 10–100k LOC | 3d | 15h | $0 | +5m |
| Large 100k–1M LOC | 10d | 60h | $0 | +15m |
| Extra-large >1M LOC | 30d | 200h | $0 | +40m |
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
Code Test
Per pull request · Runs in CI on every PR; gates merge.
Who owns it
Developer
Authoring + the inner loop
Collaborates with: QA / Test Engineer
Reference implementations
-
Testcontainers examples
Real dependency integration tests using disposable Docker-backed services.
-
Spring PetClinic
Well-known application with integration-style tests around web and database boundaries.
-
Testcontainers Java examples
Disposable database, broker, and service tests for JVM applications.
Quick check
Integration tests are highest-yield where?
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.