Search code examples
production-environmentacceptance-testingtest-environmentsacceptance

Do we need separate environments for testing and acceptance (staging)


We will be migrating from our old servers to new ones and now the question has come up: should we keep 3 servers:

  • testing
  • acceptance (also known as staging)
  • production

Or should we lump the first together, and just get two servers. The software we deploy is not very complicated, it's small stand-alone programs that move and process various data-files at scheduled intervals.

In the year+ i have been working here I was never in the situation I actually required separate testing and acceptance environments. Usually the programs have been unit tested and integration tested (on a separate build-server) before they go for a final test on the acceptance environment.

However at my previous place of work I do remember missing the additional server. We would be doing final tests before the release but this would then mean we could not test or showcase a branch with new features. Such a situation is less likely at my current place of work because our team is very small: 1 dev and 2 testers.

So under what circumstances should we have more then one server for testing and acceptance? I'm thinking:

  • When the software you are making only fully functions on the server and running it locally is impossible or of limited value
  • When the team is large enough for different people to work on different versions of the same product
  • When testing takes up all the resources on one server.

Am i missing something in this list?


Solution

  • What was the reason for having both environments in the first place?

    Reasons for having both environments could also be:

    • You are required to keep an environment running the same version as Production, so you can investigate/reproduce production issues - and thus have a potential pipeline for testing hotfixes.
    • Maybe one of the environments are dedicated for e.g. performance tests or whatever.
    • Or perhaps your end users need a place where they can be educated, while not disturbing ongoing development and testing.

    That was my 10 cents.