Getting Feedback from Test-Driven Development and Testing in Production
Summary
Ola Hast and Asgaut Mjølne Söderbom presented their approach to continuous delivery at QCon London, emphasizing a strategy that relies heavily on unit and integration tests, eschewing traditional end-to-end tests. Their methodology integrates Test-Driven Development (TDD), pair programming, and robust design principles to facilitate frequent, small deployments. They advocate for "testing in production" to obtain high-quality feedback, mitigating risks through feature toggles. This decade-long practice has led to a system where test environments are largely bypassed, and fast feedback loops from both tests and production drive continuous improvement and design refinement. They highlight TDD primarily as a design tool, with testing benefits being a positive side effect.
Key takeaway
For software engineering teams aiming to accelerate continuous delivery and improve code quality, you should consider shifting your focus from extensive end-to-end testing and dedicated test environments. Instead, embrace a strategy centered on Test-Driven Development, pair programming, and "testing in production" with feature toggles. This approach provides faster, higher-quality feedback, enabling quicker iteration and more resilient systems, ultimately driving better design decisions.
Key insights
Prioritize fast feedback loops and robust design over extensive test environments and end-to-end tests.
Principles
- Trust unit and integration tests.
- Test in production for best feedback.
- TDD is a design tool.
Method
Implement TDD with pair/mob programming, deploy small changes frequently with feature toggles, and use production for primary feedback, minimizing reliance on staging environments.
In practice
- Use feature toggles for new features.
- Deploy small code changes often.
- Focus on unit and integration tests.
Topics
- Test-Driven Development
- Testing in Production
- Pair Programming
- Continuous Delivery
- Software Design
Best for: Software Engineer, MLOps Engineer, DevOps Engineer
Related on AIssential
Editorial summary, takeaway, and curation by AIssential. Original article published by InfoQ.