The Three Phases of the Deployment Testing Cycle
Testing a software project before and after deploying it on production is not that difficult. But too often, major bugs appear on production server after the deployment process. To avoid situations in which your production environment is threatened by these bugs, you should use a streamlined deployment and testing flow.
Generally speaking, this flow consists of three phases: pre-deploy, deploy and post-deploy.
During the Pre-Deploy testing phase, both the development team and the QA engineer should be tasked with the following items:
- Ask developers to make Production and Stage environment backups.
- Ask developers to copy database from Production to Stage.
- Announce a Code Freeze for the entire development team.
- Retest new features and bug fixes.
- Perform general smoke testing using checklists.
- Report all bugs, categorizing them with a consistent metric for urgency.
- Test urgent bug fixes and engage in regression testing of this functionality.
- When Stage is tested and has no major and/or minor bugs (depending on the project), — announce deployment.
When the QA engineer announces the Code Freeze, developers cannot push, commit, or deploy anything. But they can still continue working on their local environment, so no time is wasted. When the Code Freeze is cancelled, developers can push, commit, and deploy their work to Stage.
After finishing the pre-deploy testing cycle, the manager has to approve the deploy process before the developer who is responsible for this process puts it into motion. Having one developer be responsible for deploys is always beneficial, as it avoids misunderstandings like incorrectly merged branches.
After the deployment is done, QA begins the Post-Deploy phase, which consists of the following tasks:
- Retesting new features and bug fixes.
- Perform general smoke testing using checklists.
- Report all bugs, categorizing them with a consistent metric for urgency.
- Urgent bug fixes should first be deployed on the Stage environment. Here, QA can test them, and engage in regression testing before deploying them on production. Then, the testing cycle — including bug fix testing and regression testing — should be repeated.
- When production is tested and has no issues, — deployment is complete.
- Cancel Code Freeze, or wait for client feedback as needed before cancelling Code Freeze.
If for any reason issues appear during the deployment process, you should quickly troubleshoot them. Here are some examples of possible problems and their solutions:
- If production is severely broken after deploy, — use a backup to quickly restore it.
- If developers violated Code Freeze, — they need to roll back all the changes.
- To quickly roll back any new features, developers should use separate branches for different features.
- To avoid timing troubles, — never make deploys late in on Friday evenings.
Testing your software is a crucial part of the deployment cycle. By running through tests before, during, and after deployment, you can improve the quality of your software and ensure a better product.
Master of Code is an Agile software development firm that specializes in crafting world-class web and mobile software products. We’d love to hear your feedback and best practices when it come to how your team tests software. Plus, we are always here to help if there’s anything we can do to help.