I'll echo the sentiments of StanGromer and Claudius . We however took it to an even larger level in our previous contract. We currently have 4 classic environments: Dev, Test, Stage and Production. We did this as we were doing a merger of two communities and wanted minimal disruption of stage and prod during the 6 month migration and redesign project. Here is how we worked through them.
- Development: only developers on this instance. They would do all their main work here including their Q&A and then copy/paste the changes into the test environment
- Test: The community team and others we assigned would test all the changes here and document any issues. The developers would then update and test the dev environment and pass fixes to the test environment for us to check again.
- Stage: once we gave final sign off on the test environment, all changes were copied and pasted into staging. We would then do shorted testing round to make sure everything appeared fine before pushing to production that same day if possible.
- Production: One more spot check after the push to ensure nothing went wrong
For the project it was ok but I'd say the Test environment was overkill. Keeping them all in sync has been a major issue as we and the devs often explore setting changes and issues on an environment and forget to revert. When we updated the community to Hermes this year we used only three of the environments and honestly, we are dropping back to stage/prod upon our renewal later this month. As we are planning the Aurora move next year it didn't make sense to pay for the extra environments.