Quality Engineering in Agile and DevOps
Early in the software engineering journey, there were primarily developers. Developers had a wide array of accountabilities: designing, coding, testing, deploying, maintaining, and more. Quality was inherently built in and championed by the triad of the customer, the business, and the developers.
As we scaled, we segmented these responsibilities across roles, which came with both benefits and challenges. For example, ensuring that quality is advocated for at every step along the lifecycle, from ideation to deployment, can be tough.
One easy response is, “Quality is everyone’s job”—after all, whole-team accountability is a key tenet of agile. But what does this really mean in practice? What approaches and roles help us embrace a culture of whole-team accountability for quality?
Quality engineer, quality advocate, quality champion, and quality evangelist are roles that I think better represent what we need across teams as our agile and DevOps practices continue to mature. Ultimately, a high-performing agile team defines, implements, and manages quality practices in all aspects of their work themselves. For teams that need some assistance in getting this culture and these practices in place, an enablement role—with skills and experience around building quality in—is required.
While testing is an important part of developing and delivering a quality product, quality goes far beyond testing to ensure that a product meets the client or business needs. Beyond the testing role, we also need team members who are accountable for the broader quality scope, ensuring that quality methods, practices, processes, tools, technology, audits, and measures and metrics are in place.
In agile and DevOps, we’d like to instill a quality engineering attitude and culture in every team member. Quality engineering in software development and delivery is the management, development, operation, and maintenance of IT systems and architectures, with a high quality standard.
Broadening our thinking from merely testing to quality engineering includes:
- Collaborating with clients, customers, and the business to understand their product and service quality criteria
- An attitude, culture, and approach of checking at every step, from ideation to production operation
- Not only developing great testing skills, but also understanding and implementing quality skills and practices
- Defining and implementing quality management approaches within teams and across teams of teams
Quality engineering responsibilities may include a range of contributions throughout the software engineering process, such as defining and implementing quality methods for product development and delivery, contributing to product- and service-level quality goals and objectives, software design, code reviews, code refactoring, story and acceptance criteria reviews, quantifying nonfunctional requirements, defining the quality measurement system, implementing automated quality gates within the DevOps pipeline, putting feedback systems in place for customer experience and production operations, and, of course, unit, integration, story, exploratory, and acceptance testing.
The key point is that in agile and DevOps, the goal is to design quality in, establish a quality engineering mindset, and ensure that everyone on the team has the required skills to design, implement, and maintain this quality management system. As with most changes, culture is the first step.
This article was originally published on March 4, 2020, on TechWellInsights.com.
Coveros' Executive Vice President of Training Mike Sowers has more than twenty-five years of practical experience as a global leader of internationally distributed test teams across multiple industries. Mike is a senior leader, skilled in working with both large and small organizations to improve their software development, testing, and delivery approaches. He has worked with companies—including Fidelity Investments, PepsiCo, FedEx, Southwest Airlines, Wells Fargo, ADP, and Lockheed—to improve development approaches, increase software quality, reduce time to market, and decrease costs. With his passion for helping teams deliver software faster, better, and cheaper, Mike has mentored and coached senior software leaders, small teams, and direct contributors worldwide.