Where testing happens.
WHAT ENVIRONMENTS TYPICALLY EXIST
Local development Shared development or integration Testing or staging Production
WHAT EACH IS FOR
- Local: rapid iteration
- Integration: components together
- Staging: verification against production-like conditions
- Production: the real thing
WHAT MAKES ENVIRONMENTS UNRELIABLE
Configuration differing from production Data differing Versions differing between components Shared use causing interference
WHY SHARED ENVIRONMENTS CAUSE TROUBLE
One person's testing affects another's results.
WHAT SOLVES IT
Environments created per branch or per test run, disposed afterwards.
WHAT MAKES THAT PRACTICAL
Infrastructure defined in code, and containers.
WHAT TO KEEP IDENTICAL TO PRODUCTION
Configuration mechanism Versions of dependencies Data volume, approximately Security settings
WHY SECURITY SETTINGS SPECIFICALLY
Testing with them relaxed hides problems that appear on release.
WHAT TO DOCUMENT
What each environment is, who owns it, and what it contains.
WHAT TO AUTOMATE
Creation and teardown.
WHAT TO MONITOR
Environment availability, since blocked testing is expensive.