Rehearsal rooms for software

A theatre company does not learn a new production in front of a paying audience. It uses rehearsal rooms, technical rehearsals, and dress rehearsals before opening night. Software teams separate their work for the same reason.

Common environments include:

  • Local or development: The source code and running app are usually on a developer’s computer. Some teams use a remote workspace on a server instead.
  • Test: A shared copy for automated or manual checks while software changes, usually with test data rather than real customer data. Builds may change often, test data may be reset, and testers can try unusual cases such as failed payments.
  • Staging: A copy designed to resemble the live system for final checks of a planned release. Teams check connected services, data changes, and important user journeys here.
  • Production: The live system that users can access.

Some teams use a separate user acceptance testing (UAT) environment for business review. The names and exact setup vary between teams.

Where these environments run

A developer often runs the app on their own computer. To give others access, a team can put it on a server: a computer that hosts software for other people to use. Organisations may own servers on their premises or use a hosting provider. Shared test, staging, and production environments typically run there.

Similar does not mean identical

Each environment can have its own configuration, database, and connections to other services. The team may use test and staging versions while users use production. Staging resembles production, but often has less traffic, different data, and test versions of connected services. So a feature can work in staging, or on a developer’s computer, yet fail in production. The team then investigates what differs between those environments. Passing checks in staging reduces risk but does not guarantee success; teams should check the live service again after deployment.

Keeping environments separate allows experimentation while protecting users and live data. An isolated test system may be called a sandbox. Check which environment a bug report, screenshot, or link comes from: a fix visible in staging may not yet have reached users.