This covers how DevOps comes into the picture to improve Quality Assurance in Software Engineering. Recently, I covered Predictive Quality Assurance for Software Engineering and How to Determine Cost of Poor Quality in Software Engineering. This week, you’ll see how DevOps becomes the foundation for successful quality-first approaches.
Why DevOps for Quality Assurance
There are a lot of internal reasons companies seek DevOps practices, including faster delivery of software code and more nimble operations, but the true value comes down to improved quality that is noticeable by the customer.
Customer satisfaction is the differentiator in today’s market.
Effectiveness is the customer’s view: meeting customer requirements and creating ‘delight.’
Customers feel VARIATION, not averages.
Efficiency is management’s view: providing streamlined processes, minimizing internal costs.
Win by preventing fires, not fighting them.
So let’s bring both the customer and management view together and summarize the need for DevOps simply as: satisfy customers profitably.
What Results Does a Quality-Oriented DevOps Program Seek?
DevOps practices strive to deliver an end-to-end cultural focus on shared, customer-oriented objectives.
- Customer focus
- Data-based decision-making
- Impactful projects tied to business strategy
- Functional barriers overcome
- Sustained improvements
How do You Define Proactive Quality Assurance?
Proactive QA is a massive leap over the traditional Reactive QA model that exists in most organization. It’s a major cultural shift led by executive initiatives.
The leap from Proactive to Predictive QA is very minor in comparison, and is much more about data, analytics, and becoming a statistics-driven organization.
DevOps is a key enabler of the shift to Proactive QA.
Here are a few hallmarks of the Proactive QA model:
- Quality is a business strategy
- Quality leads to culture change
- Customer-centric method – starts and ends with customers
- Proactive approach to problem solving and process improvement
- Structured methodology applies to any process with defects, regardless of functional area
- Essence of the method is data-based decision-making
- Focus is on reducing variation and sustaining positive change
- Success is defined by customers feeling the change
The Four Components of DevOps
DevOps brings the Development team and the Operations teams into a single group, unified under the hood of Quality. Based on the table above, it can be readily seen how DevOps is a necessary step for organizations to take in order to fuse the organization under a unified quality objective.
DevOps ultimate creates continuous monitoring of the Dev-Test-Production pipeline. Here are the four key components:
1. Iterative Cycles
- Agile development
- Continuous process
- Cycles inform each other
2. Progressive Scale
- Crawl, walk, run
- Don’t get buried
- Evaluate levels of risk
3. Early Identification
- No surprises
- Inspect and adapt
- Minimize critical risks
4. Real-Time Alters and Updates
- Constant improvement
- Right people involved
- Frequent updates
Continuous Integration and Continuous Deployment under DevOps
In terms of how DevOps is actually executed, a couple of additional topics are important to understand: continuous integration and continuous deployment.
Continuous integration allows the development team to rapidly integrate snippets of code, gaining real-time feedback on the results. This practice allows development to respond to operations (and customer) feedback without the typical delays.
Continuous delivery then allows the rapid code changes to be integrated into Production, minimizing delays felt by customers. Features are rapidly, seamlessly, and continuously delivered to customers. The software solution can evolve iteratively, receive feedback, and adjust quickly.
Rather than developing huge releases in isolation, releasing to the public, and then finding your software does not really meet expectations or work for a broad set of users, DevOps enables the ability to be much more in sync with customers and operations.
While there are a lot of internal reasons to pursue DevOps, Continuous Integration, and Continuous Delivery, the most important reason is customers. Customers keep companies alive and customers demand quality. DevOps and its associated disciplines are the cornerstone of a quality-oriented company and software-engineering organization.