A common problem in technology shows up when it’s time to test a newly built product or service. How do you test it in a way that guarantees it won’t fail when it matters most? Is there a way to test a system and be sure you’re seeing how it will behave in the real world?
No test replaces the real world (and real users), but there are well-known techniques that soften the impact of failures and catch them before they reach users. One of them is using one or more test environments when building systems.
This practice is well established in software engineering and rests on three principles:
- Purpose: each environment has its own purpose, audience, failure severity, acceptance criteria and, above all, its own access levels.
- Isolation: different environments must not be able to talk to each other or share data (think of each environment as a separate “experiment”).
- Reproducibility: the team must be able to deliver services the same way in any environment, so every environment needs the same capabilities.
Following these principles, we can define the three environments every large-scale development effort depends on:
- Development: where developers have full freedom to try changes and features and validate their work.
- Staging: where quality assurance comes in. Every change, addition or removal goes through a rigorous process to make sure it does what’s expected.
- Production: once changes land here, they’re delivered to end users, and any bug or failure has a real impact on customers.
As in many fields, the challenge starts when you try to put the theory into practice. One standard that sets out how to apply this, among other information technology best practices, is ISO/IEC 27002.
With years of applying these practices to large-scale projects, LMIT Consulting’s engineers can help implement and transform your processes and systems to match current industry practice. Get in touch now


