Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Staging vs Testing server for PHP

What is the difference between a staging and testing server ?

like image 303
johnlemon Avatar asked Mar 24 '11 06:03

johnlemon


People also ask

Is staging same as testing?

While a staging environment allows teams to replicate real testing conditions, tests will still need to be run beforehand to test its individual components to make sure that it all works well together to satisfy quality assurance requirements.

What is the difference between staging and QA?

The staging environment is where multiple developers work and test individual units or components of the software. QA environment is where the build is deployed so that QA engineers can test the existing functionality, log the bugs and retest the fixed bugs, and perform code reviews.

What is the difference between staging server and production server?

The staging server is the last step before the application is ready for deployment to a production server. In many environments, a final approval process follows staging to make sure that all interested parties sign off before the application goes into production.

What is the main benefit of a staging server?

A staging site's main purpose is to ensure that all new changes deployed from previous environments are working as intended before they hit the live website. By using a staging site and testing everything before deploying to a live website, you will be able to eliminate bugs and issues, so they never affect the user.


3 Answers

For me, a staging environment is one kind of testing environment.

The main point of the staging environment (servers, software and all) is that it's supposed to be quite close to the production environment :

  • same versions of software
  • same running daemons
  • same kind of physical servers
  • if using several servers in production, then have more than one server in staging -- to test load-balancing, for instance.
  • some real data (maybe a subset of your production data)

Basically, the staging environment should allow one to check if the application works in a production-like situation.


As for "testing" environments, I usually use this word for more than one kind of environments :

  • development machines : in a way, it's a testing platform, as developers have to unit-test their developments
  • automated-testing servers, with continuous integration
  • staging environment

Note that the first two environments will generally have more debugging /profiling / analysis tools that what you'll have on your production (and, so, staging) servers.

like image 64
Pascal MARTIN Avatar answered Nov 09 '22 04:11

Pascal MARTIN


A testing server will differ from the live environment in a number of ways. It may be configured to display a lot of error information with error_reporting set to report all or most errors and display_errors on. It will probably also have some kind of debugging module like XDebug installed.

The staging server is a machine that is configured to be much closer to the live environment. It will have display errors turned off and won't have any debugging modules installed.

The reason for doing this is that code has a nasty habit of working great on the test/development environment and then spectacularly failing to work when it goes live. If this happens when you deploy your code it can knock your website off line until you find and resolve the issue. The staging server is a way of trying to keep such disruptions to a minimum.

like image 30
GordonM Avatar answered Nov 09 '22 06:11

GordonM


  • Dev: Development (Developer works)
  • Test: Testing (Tester/QA works)
  • Staging: User Acceptance Test/Load Test/Performance Test
  • Production: Live
like image 35
Abdullah Jobayer Avatar answered Nov 09 '22 04:11

Abdullah Jobayer