BACKGROUND IMAGE: iSTOCK/GETTY IMAGES
Continuous quality is a systematic approach to finding and fixing software defects during all phases of the software development cycle. CQ reduces the risk of security vulnerabilities and software defects (bugs) by helping developers find and fix problems as early as possible in the development cycle. Continuous quality is part of a continuous integration (CI) / continuous delivery (CD) process.
With the rise and popularity of mobile apps, application development -- and that includes quality assurance (QA) roles -- must operate at Agile velocity. DevOps and CI/CD are responses to this new need for speed. And constant quality is just the next step to ensure mobile application development, among other development projects, can operate a pace that keeps up with the demands of the consumers.
Continuous quality updates the old siloed waterfall approach by making software quality reviews an integral part of the continuous delivery pipeline. Achieving continuous quality means having QA engineers work in close collaboration with developers and IT ops admins so that QA can review new code as soon as it is written, and handle quality problems within any stage of the software development lifecycle as soon as they are discovered.
Achieving continuous quality
CQ requires an application to be designed and implemented according to policies that enforce prompt validation. Policy enforcement should be automated as much as possible so that it happens almost transparently. This frees developers up to focus on application logic.
Policies should address both manual and automated processes. Automating as much as possible frees up developers to focus on logic and functionality.
To achieve continuous quality companies can employ a number of strategies. Test-driven development and code scanning are useful techniques, as is automated testing, which leads
to faster test results. Production-environment monitoring, automated alerting and log analytics tools can help, too, by providing continuous insight into the state of applications after they have been deployed. The ultimate goal of continuous quality is not only to ensure quality before an application has launched but to ensure it's working properly through each update and at all times.
Other steps that can be part of continuous quality include:
- Static analysis involves examining the code without executing the program.
- Peer reviews seek to identify functional defects during development when they are fastest, easiest, and least costly to identify and resolve.
- Unit testing involves the smallest testable parts of an application, called units, being individually and independently scrutinized for proper operation. This should be automated as much as possible to help locate software defects promptly after the code is written.
- Regression testing should be driven by an automated infrastructure so that the test suite runs on its own each night -- after the build -- and immediately alert the team if modifications introduced have an unexpected or negative impact to the existing functionality.
Continuous quality strategies
In a DevOps environment, every developer, operations manager and security officer is responsible for improving software code quality. Because the QA process starts from the moment the first developer on a team begins to write code and continues throughout the life of the software, all stakeholders must be united around a common set of quality standards, best practices, metrics and processes that are periodically reviewed and updated.
Software defects drastically increase the cost of software development. Finding and fixing a software problem after delivery is often 100 times more expensive than finding and fixing it during the design and requirements phase. It is imperative that teams incorporate quality into all phases of software development and automate that process as much as possible to save time, locate defects early in the process and prevent work from having to be done again.
Implementing policies that enforce immediate validation lead to high-quality, updated software in the hands of the user more quickly.
Evolution of continuous quality
CQ has its roots in continuous quality improvement (CQI), a lean manufacturing strategy for creating the highest quality product in the shortest period of time at the lowest cost possible.
Traditionally, the QA operations staff was siloed off from software development and IT Ops workflows. QA testers would review software releases and updates to ensure the product meets met usability, performance and reliability standards at the end of the systems development lifecycle (SDLC). But QA worked separately from developers and admins, usually on a different schedule.
This arrangement -- QA siloed from other software engineers -- can even be the case in Agile software development organizations that embrace DevOps. Because continuous quality is not yet an essential part of the DevOps identity, QA operations -- even in Agile enterprises -- can be stuck in the waterfall model, testing and approving code is large batches and not in conjunction with developers as code comes through the pipeline.
Continuous quality improvement is a recurring theme in all quality management literature and international standards, including ISO 9001.The core principle is that quality improvement is not a one-time effort; it is an ongoing process that lasts for the life of an enterprise.