By Iya Datikashvili, director
Want to build quality software in a rapid, continuous and repeatable manner? Then it’s time to adopt DevOps. The DevOps software development practice brings formerly siloed teams within an organisation together to work as part of an integrated team that does just that – builds quality software in a rapid, continuous, and repeatable manner. This new mode of delivery requires Quality Assurance (QA) engineers to shift their mode of work to keep up with the fast-paced, innovative, and automated world of DevOps. This is a big undertaking and starts with having a strong understanding of the role QA engineers will play within the DevOps team.
The reality is that testers in the DevOps world will play a much wider role in the software delivery process with far more varied tasks, compared to a traditional waterfall or agile environments. The QA function needs to become the enablers of DevOps, by embedding processes that reduce testing cycles and improve software quality throughout the software development lifecycle (SDLC).
Embedding QA practices throughout the SDLC
The DevOps practice removes the notion that Quality Assurance is a separate function in the overall development lifecycle with its own set of roles and responsibilities. It necessitates that the integrated team syncs up and works together throughout the SDLC to achieve common goals.
With DevOps, QA is integrated within the cross-functional team and is involved with every aspect of software delivery, from requirements-gathering and system design, to the packaging and releasing of the software. QA is no longer a discreet component of the SDLC chain solely focused on finding defects. Instead, its work is spread throughout the SDLC with quality practices embedded within each phase of software delivery. This is a major shift which makes the role of QA more critical than ever before.
One of the biggest changes with DevOps is that QA becomes involved in the entire release planning process and takes equal ownership to develop a single release plan that aligns the team’s work streams. The dynamics of release planning changes from Dev complete and QA complete, to sprint complete, where the sprint is only considered complete once all of the tasks within the sprint are successfully tested.
Expanding test coverage beyond functional testing
DevOps changes the traditional idea that QA primarily performs functional testing, and expands the QA test scope to include operational behaviours by examining each requirement for completeness. QA must start addressing the questions: ‘are we building the right feature?’ and ‘are we building it correctly?’ For example, in addition to the functional aspect of a requirement, QA will also examine how that requirement could affect system performance, or be monitored in production. It will then design the appropriate cases to test that behaviour. This means QA will play an integral part in ensuring system reliability, stability and maintainability, and will incorporate the necessary test coverage from the onset of the project.
In addition, QA will be involved in defining and executing the non-functional tests alongside Dev and Operations teams. This is a departure from traditional QA practices where non-functional testing would typically be out of QA’s scope.
Automating the delivery pipeline and building a robust automation framework
With DevOps, QA will need to push the automation boundaries from just functional regression testing to automating everything that will facilitate code passing more quickly through the pipeline. The QA team must look to automate as many processes as deemed feasible, including test case generation, test data set creations, test case execution, test environment verifications, and software releases. All pre-testing tasks, clean-ups, and post-testing tasks, should be automated and aligned with the Continuous Integration (CI) cycle.
Any changes related to software or system configuration should flow through a single pipeline that ends with QA testing. Automation should also apply to all non-functional tests such as performance, stress, and failover and recovery. Additionally, the automation framework should be flexible, easy to maintain, and allow for integration directly into the development workflow.
The DevOps value proposition lies in its ability to improve the overall service delivery of a product to the end user by integrating cross-functional teams (IT, Operations, QA, and Business Analysts) into a collaborative delivery team with common goals. As part of the DevOps team, QA will be involved in every aspect of the DevOps SDLC and practices, both from a business and technical aspect. In the DevOps world, QA engineers will undoubtedly need to adapt to new and challenging practices. However, once they have been through the transformation, they will have gained the necessary skillsets and disciplines to grow and excel their careers.