DevOps and Quality: Bridging the Gap for Continuous Delivery Excellence
Development Operations (DevOps) is an integral part of every software application team. Part of their responsibility is ensuring that environments are functioning according to specifications and that the proper code is deployed to those environments. They also monitor the environments and troubleshoot issues that arise. As a result, DevOps often collaborates closely with Quality departments. As more organizations strive for improved test automation, the integration between DevOps and Quality Assurance has become increasingly critical.
Let me put my “way back” hat on again and talk about the olden days of DevOps. Before the advent of virtual and cloud environments, system administrators maintained a server room. Their job was to keep the servers running and maintain the communication pathways. The code was copied directly from a developer's computer onto the server. The code was compiled and run, often yielding various results. Sometimes the code wouldn’t run at all. Other times, the code version was incorrect or didn’t match the database. Usually, the task of making it all work was assigned to a specialist who knew all the past problems and how to fix them. Once the code was deployed and running, quality testers would go to the environment and manually test it. It was a long and arduous process, and if an issue was found, it meant that the entire process would need to be repeated after a fix was discovered.
Needless to say, the old process was inefficient.
Now, code can be deployed automatically based on events such as code merging. Automated tests can be run as part of the deployment. Server and code monitoring systems can alert relevant people to any issue and even generate bugs and reports with diagnostic information that makes mitigation easier. Code can be packaged up as easily transferred containers that install and run correctly.
Efficiency has been achieved, but with it comes a new challenge: ensuring quality transparency.
In the software development industry, it is easy to automate yourself out of a job. If something keeps going off without a hitch, then the perception is often, “Well, why do we need these people anymore?” I understand the business idea behind this, but to achieve a higher quality standard for your organization, it requires a significant amount of work to implement these systems, and they need to be adequately maintained.
Quality is about consistency. Environments, code, and so on, all require that the variables do not “gum up the works.” Automation can fail, and having someone on staff who knows what to do is vital. While you no longer need the leading expert in their field, you still need capable individuals who understand what needs to be done. For proper Continuous Integration and Continuous Deployment (CI/CD), a solid framework of systems and practices is required. If someone on the team doesn’t follow these best practices, a system undergoes breaking changes, or automated tests are not updated to the latest version, then the entire framework can falter or even fail.
If something is consistent, it is predictable. If something is predictable, quality can be measured accurately. This vastly increases the reliability and dependability of your organization's products and services.