DevOps Model: The Role of Quality Assurance Redefined
DevOps Model: The Role of Quality Assurance Redefined
Quality assuarance professionals, take notice. Everything is about to change.
Join the DZone community and get the full member experience.Join For Free
You might have come across DevOps so often that it may seem to penetrate each and every organization slightly related to IT. But the reality is different, as always. The point is that this model is far more complicated to apply compared to Agile and other popular forms of SDLC because the role of each department undergoes significant changes.
You may also enjoy: Reinventing QA in the DevOps Era
What is DevOps?
Although many definitions are available, we think of DevOps as the space for keeping the software deployable regardless of the new features implemented. Most importantly, DevOps means that everyone — from Jr. Analyst to developer, QA engineer, project manager, and owner — takes equal responsibility and makes a contribution to product success.
The fundamental benefit of the model is a clear segmentation of roles that follows the principles of Continuous Integration and delivery (CI/CD).*
*Off-top for those unaware: CI/CD is a concept that enables effective merge of newly developed features into the main codebase. It fulfills the integration aspect by running different tests at each sprint stage and provides delivery aspect by deploying the committed code into the software available for the end-user.
Back to the roles. Although separated, DevOps is a strategy that embeds each just in time and keeps their activity during the whole product growth.
- Developers and Designers (Devs) build the software logic following user stories, create features that work and prove that via unit tests.
- Quality engineers (QEs) help maintain software quality, review the features, write acceptance/end-to-end tests, and approve the software correspondence to the requirements.
- Product owners (POs) and Business Analysts (BAs) cover the aspect of business value for the end-user, coming up with the user stories. Often, they have to coordinate and analyze the acceptance test results to check their relevance and implement changes in user story when necessary.
- Operations (Ops) takes care of the software released. They make sure it is available for the users. Thus, they work on the code logistics design to move developers' code to a production environment where people access the website/app.
DevOps and QA
In a pure DevOps world, QA is an enabler, not a gatekeeper. The model is all about blurring the boundaries between the roles of QA and development in project delivery. Meaning the part of software quality assurance goes in line with development and operations, creating a backup line for correct product functioning.
These are the areas to work on when implementing QA into a DevOps environment:
- Merging the teams. One of the critical aspects to consider is integrating the team of quality assurance with other technical specialists involved in the project. In such a way, QA becomes a strong enabler for ensuring product quality during the whole development lifecycle. Besides, such team structure allows detecting tangible aspects of the quality required from the final product.
- Metrics. Clear quality metrics are of absolute importance in DevOps. The core idea is to find the defects at the earliest stages and prevent serious hurdles on the way. At the same time, this helps to make the team focused on the requirements, stay tuned to any changes within. Besides, QA engineers keep an eye on important details which could have been missed due to miscommunication. The task of QA engineers here is to actively implement the requirements into the process and guide the dev team in the right direction.
- QA + Dev. This is all about communicating the goals of each team. The ever-debated topic of getting QA and developers cooperate acquires more significance in DevOps culture. Project managers know how complicated it might be to make QA specialists and programmers think in line. Yet DevOps requires constant quality maintenance, which is, checking the software for potential errors. This is the place where continuous integration and continuous testing evolve.
- QA + Ops. Since operations make the product available for the end-user, their cooperation with QA is also of prior importance. The user-oriented approach of QA engineers implies the software flow desirable and comfortable for people, justifying the construction efforts of the whole team.
- Parallel tests. When working under DevOps, companies ensure the QA team runs the tests continuously. However, there is a need to explore the ways QA pros perform the tests without extending the software delivery time. The IT-experts and authors at DZone claim the QA engineers have to fully standardize the testing environment, automate the process of test implementation. What's more, the effective parallel testing strategy requires enough resources, and this is also a point for the management board to think over before the process starts. Parallel check-ups of the software help QA engineers run test cases under different conditions and deliver more reliable results.
Why Continuous Testing Matters
Continuous testing (CT) and continuous delivery are the other two milestones of the DevOps culture. Test early and test often — that's how the key principle of continuous testing sounds. It implies the use of Agile-related methods to build a QA strategy. Although DevOps highly encourages automating the whole testing process, QA engineers still play an important role in providing testing solutions into the development. When effectively implemented, CT helps to detect risks, address them, and enhance product quality. That's a relatively new concept in the area of tech, yet QA engineers achieve CT process via automated test cases and support each development stage with instant feedback.
Notably, DevOps is an environment of highly coordinated cross-team functioning in the development chain. In a perfect scenario, with continuous testing and delivery, a developer configures deployments, and while a QA engineer configures automated test cases, developers add them to the QA repository. As such, the team takes collective responsibility for the software quality, together adheres to the deadlines.
The Roles Acquired
With the DevOps emphasis-on-automation approach, many think that traditional software quality assurance might be called into question. The transformed relations of development and operation stuff could be one of the reasons for that. There is also an opinion that independent software testing service providers with the QA engineers performing their prior function are slowly becoming outdated.
Sounds scary. What if we say QA engineers still have plenty of work to do in DevOps environment? The truth is that the reinvented role of operations (Ops) in the product development has a powerful impact on the role QA engineer must be ready to acquire.
Software QA as A Consultant
Seems like QA experts won't be working the same role anymore. For DevOps, a QA engineer would have to change their mindset and start helping businesses to grow instead of providing traditional testing services. Luckily, our experience shows most software testers can make this shift. QA consulting is one of the most effective shifts we've taken recently. Just because a structured audit provides an unbiased review of the software, and reveals potential changes, suggested ways to improve the project.
So instead of running tests and crafting the documentation, QA pros will have to transition to software quality expert consulting and help developers learn how to make their approach more quality-oriented.
Software QA as A Strategist
There always been an opportunity to embed QA expertise directly to development via Scrum. When the QA part is involved from the very beginning of each sprint, product growth takes a totally different path. To account for a crucial role of testing expertise and responsibility in the DevOps model, QA engineers should look for the new ways to add value in the software lifecycle. This means making high-level strategic decisions related to testing and software quality assurance. The point is that a QA engineer thinks about what end-users are doing and how they interact with the software. This is what a QA strategy often lacks. QA engineers might consult the team on how to mimic user-experience to determine what is required to meet users' needs. No more “passed/failed.”
Final: Any Challenges?
One of the major hurdles DevOps model implies is the process itself. A lot of tech specialists used to their responsibilities will have to redefine their roles. Moreover, to combine several teams takes effort and requires high-standard management and resources. That's why there are still companies resistant to DevOps culture.
It is a relatively young method, though. If you approach it with open mind and implement it step-by-step, you'll manage to bring the best parts together into a greater whole.
Opinions expressed by DZone contributors are their own.