DevOps has enabled software developers to achieve faster time to market and wider customer reach. But what’s the point of delivering software faster if you don’t have quality? As the saying goes, “Quality is not an afterthought.” So what does it take to achieve Continuous Quality? Let’s examine five key areas required to achieve continuous quality in a DevOps organization.
Follow Lean and Agile processes to develop software.
Probably the only way to adapt to a continuously changing business environment is to build your software and applications using lean or Agile processes. Implement a Kanban or Scrum iterative model. These processes are designed to help keep up with change without having to sacrifice the quality of software you’re building. Define metrics like sprint velocity, defect rate, test execution productivity, and features delivered per release to measure your performance against a DevOps quality metrics model.
Use continuous integration with TDD and BDD development practices.
The original idea of DevOps called for higher quality software, not just the ability to deliver faster. Test-driven and behavior-driven development practices promote the idea of shared understanding across the organization. This practice will bring a common understanding of requirements among stakeholders, resulting in fewer build-and-test iterations, thus improving software quality. Combine this practice with continuous integration to quickly identify any bugs in the units developed. Continuous integration helps developers focus on their code by providing instant feedback on unit tests.
Implement continuous testing and lifecycle test automation.
In a typical DevOps set up, teams can deploy software to production anytime with the continuous delivery and continuous deployment tools and procedures. To keep up with the continuous development, continuous delivery, and continuous deployments, software testing must be continuous as well. Continuous testing is a part of the delivery pipeline and will provide instant feedback on the business risks. It uses automation to perform static code analysis and change-impact analysis, accomplishing more in each iteration. Ensure that a fully automated test process is in place, including the non-functional aspects of testing, such as performance, security, test environment setup, and data provisioning.
Two success factors are required to achieve continuous testing: Test data management, which ensures production like data is available for testing, and service virtualization, which reduces environment access issues.
To produce software at the same rate with higher quality, introduce test automation at every phase of the development lifecycle. Automate all unit tests, functional tests, system tests, integration tests, and user-acceptance tests. Even get the build verification and smoke tests automated for maximum efficiency and quality.
Set up continuous monitoring.
Quality can only be managed if you have an insight into the production environment incidents and the user experience metrics as and when they happen. To get instant visibility to the production metrics, you will need to have a continuous monitoring solution in place that can detect compliance and risk issues in the operational environment. There are myriad tools available to perform this function, like New Relic, Nagios, and AWS Cloud Watch. They provide crucial information that will help ensure service uptime and optimal performance.
Define metrics and quality indicators for all applications in scope.
DevOps success depends on how you define it. Define quality checks and introduce them at every stage of the lifecycle. Define and implement metrics to manage QA efficiency. These might include:
|Lifecycle Phase||Metrics to Define|
|Test planning, Test Strategy and Sprints||Sprint performance, velocity, productivity|
|Development, Code, Build||Unit-test coverage, bugs detected, static code analysis parameters|
|Test, functional, non-functional||Test execution productivity, percentage automation, defect leakage, severity of defects|
|Software delivery, Release||Release quality, features delivered per release|
|Business KPIs||Number of releases per year, CSAT, reduction in defects, customer experience index|
DevOps is not just about speed and delivery; it’s more about quality and meeting business expectations. Quality needs to be defined at the beginning and should be continuously measured throughout the lifecycle to fully realize business outcomes. Core business needs should be validated and represented in the quality checks. Otherwise, it doesn’t really matter how and when you deliver your software.