DevOps through the vision of a QA
The popular term DevOps is presented as a union of “departments” that has been promoting a set of processes and methods which lead to new thinking about communication and collaboration between them.
The main feature of the DevOps is to strongly advocate automation and monitoring in all stages of software development, integration, testing, release and management of infrastructure. DevOps aims to provide, shorter development cycles, increased deployment frequency, more secure releases, in close alignment with business objectives
DevOps will have one hand in the infrastructure and the other in development and, in some cases, they may also have a hand in the area of quality assurance (QA). It’s more of combining infra, dev, and quality.
In short, a DevOps must act as an agent of change, integrating development and operations. For that, it is necessary to invest in knowledge and constant updating.
Let’s discuss more about DevOps:
It’s more about shared responsibilities and about building the stuff together. So to be a DevOps enabled team, there should be a cultural shift which enables the whole team to work together as a single entity. In fact, the whole team should be involved. In one of my previous organizations, we QA’s do the Production Deployments. It was QA’s responsibility to release the product to production. After that, we monitored logs from Kibana, Sentry, Datadog, etc to see whether there are any new errors/previous errors are resolved or not in the latest release.
DevOps is about the way of working together, communication, collaboration & cooperation across multidisciplinary teams.
How you define DevOps in Organization
Moving to DevOps is a change process and you need to handle the change management. I would like to share the questions/thoughts my last CTO shared when we decided to shift to DevOps: “What are we going to do?” “Why should we do it that way?” “What benefits will we get out of it?”. Without proper understanding of these it will remain as a blindspot for the team members.
It is easier to introduce DevOps when that introduction is divided into smaller parts, alternating between cultural changes and technical changes. Instead of a big change, there will be a small cultural change, followed by a small technical change, followed by another cultural change, and so on. That way, teams will never feel that everything has suddenly changed. Instead, they will feel that changes have occurred more at a natural pace.
The key is collaboration between these teams which has four main axes: Culture, Automation, Evaluation and Sharing.
Culture: collaboration / end of divisions / healthy relationship / behavior change;
Automation: deployment / control / monitoring / configuration management;
Evaluation: metrics / measurements / performance / logs;
Sharing: feedback / good communication.
This improvement in the relationship and collaboration increases efficiency and reduces the production risks associated with frequent changes.
In short, DevOps must act as an agent of change, integrating development and operations. For that, it is necessary to invest in knowledge and constant updating.
Role of QA in DevOps enabled Team:
Continuous Testing is the key point in a DevOps enabled Team. QA should be aware of what tests to be executed after each feature changes. After the code commits, the automated tests should be executed in the CI pipeline and there should be proper metrics to track the results. Here, we should have proper monitoring to detect errors during early stages which results in lesser damage.
QA should be working closer with the Dev & Ops team to set up an automated build and deploy processes. These are the people in charge of creating a test environment for automated executions which plays a vital role in integrating automated tests with Dev cycle in continuous integration.
In the CI phase, automation adds value by building the automation framework and automated scripts for features.. And obviously, the missed parts by automation will be covered by manual smoke/ad-hoc tests on the particular build/commit. Here, there shouldn’t be a discretion between manual and automated testing, both play key roles.
The principle of continuous testing refers to better collaboration of QA with Devs & Ops throughout the DevOps lifecycle. Along with that, it’s our responsibility (QA) to verify that the correct coverage is achieved based on the risk profile or other model-based strategies.