Because any complex code will have bugs, development teams create a staging area and process for testing, to identify problems and clean them up before release.
Why staging?
Most companies make use of at least three environments, each with a distinct use and distinct type of user access. Staging sits in the middle and provides a safe place to iron out the kinks before code reaches the end-user.
Development: Often referred to as dev, only engineers access the development environment. Here they do the bulk of their work.
Staging: When it’s ready for testing, a copy of the application is put in the staging environment where it’s not publicly accessible and may be tested thoroughly. Testing may be done by developers, other employees, and/or professional testers.
Production: Sometimes called prod, the production environment is what users have access to. It’s where the live product lives. Once the app has been thoroughly tested and is truly fit to release, the development team will push it live.
Testing
There are a number of different varieties of testing, each looking for different types of problems. Some of the most common are:
Functional Testing – The goal here is to ensure the software works as expected. This may be done manually or in some cases in an automated fashion. For complex apps, testers would be given a script of use cases or processes to try, steps to run through.
Regression Testing – Software can be extremely complex, with interrelated functions and pieces of code. Regression testing confirms that recent code changes have not adversely affected existing features.
Performance Testing – This analyzes the speed and stability of the system.
Bugs
What happens when problems are found in testing? These problems are called bugs, and the challenge is to find them! Testers log bugs in a prescribed format requested by the development team. This may include providing information on the machine the tester was using (Mac or PC? OS version?), a description of the action taken that resulted in the bug, as well as a screenshot. Sometimes, the testers will be required to note the urgency of the fix. If not, the developers will determine this themselves.
Fixes
Back in the production environment, a developer will attempt to replicate the bug. Then he or she will work on solving the problem. Different levels of solutions include the hotfix (a single set of code to solve this particular bug immediately), a patch (which may be a slightly longer turnaround), and a service pack (a major set of fixes or enhancements). It should be noted that fixes are thoroughly tested before applying in the production environment.
The testing methodology can be tedious when the team is close to release, but it’s essential. Once the software has gone through this process and is fully up to snuff, the dev team will release it, a process referred to as pushing to prod. That’s a big moment!