FREE LESSON · Applications & software architecture · 3 OF 4
Software Testing, Monitoring and Debugging
Evidence across the lifecycle — Tests, telemetry, and debugging
Different evidence catches different uncertainty.
Unit tests isolate rules; integration tests check boundaries; end-to-end tests exercise a thin critical path; property tests explore invariant-preserving input spaces. In production, logs describe events, metrics summarize populations, and traces connect one request across components. None is a substitute for a clear hypothesis.
Test before release for known risks; observe after release for the reality you failed to imagine.
Debug from the earliest wrong fact
Reproduce the user-visible symptom, attach a correlation identifier, and compare expected versus actual state at each boundary. Find the first representation that is wrong, not the loudest downstream exception. Form a hypothesis, predict another observable consequence, and intervene narrowly.
A stack trace tells you where code noticed a problem, not necessarily where the problem began.