A testing environment is composed of software and hardware. This is where the testing team performs the testing of a newly built software product. It consists of the physical structure that provides for the Server Operating system, client operating system, database server, front end running environment, or browser. Likewise, any other software components needed to make the software product function properly. This testing setup is to be built on both terms.
Types of Testing Environments
Development Environment
This is where the developers will write the code in. However, always remember the golden rule to never test in dev. The reason behind this is developers are continuously checking in code and, likewise, working on defects. They will do their unit tests, but as a software tester, you need a non-moving platform to verify if things are working as expecting.
Furthermore, you need to test in a production-like environment. Hence, the dev will not offer the data or the set up to perform this typically. In dev you also can have complexities with multiple projects being worked on in one environment. A lot of times this is managed through branching and merging the code. As developers are always checking in code and working on defects, it is expected that the environment will be stable but not as durable as any of the other settings.
Quality Assurance Environment
When the developer executes unit test cases, the code is transferred into QA for testing. Usually, there are a few environments for testing. You cannot test in DEV. The reason for this is, developers are always checking in code and working on defects. You need a non-moving platform to verify if things are working as expecting.
Sandbox
This is what it sounds like. It is a development playground to try new things out. It is not essential to you. And if you are using the sandbox in any way, it is vital to escalate in the QA department quickly.
Staging
As you move the code from one environment to another, you will use the staging environment. It is not likely that you will ever need to use the staging environment for software testing unless you are performing pre-production implementation testing in this environment.
Production
This is the external application where it is available to the client. In addition to this, no testing will take place in production before going live. Production does not have to be available to clients to be impacting the rest of the system. If the code is live, the integration impacts can be seen.
Disaster Recovery
Just as it sounds, this is a back up to production, so if any new code impacts prod, you can use this to perform a quick roll back to the previous version.
To Wrap Up
A software testing environment is important in the software development life cycle and in quality assurance. However, it is very crucial to understand what the limitations of the test environment are.