The Importance of Quality in Continuous Delivery
At Caseware, we have realized that releasing software more often means clients can provide feedback sooner. This enables us to satisfy the changing needs of the accounting and auditing practice.
We are engaged in redefining our software delivery processes by adopting the Agile methodology. Some of the processes we have adopted are KanBan and Scrum.
Agile approaches to software development, along with continuous integration and delivery, have changed the speed of the software life cycle. More companies have adopted shorter sprint cycles and have been deploying to production as frequently as several times a day.
What about quality? Does continuous delivery compromise the quality of the software that is being delivered?
You Want it When?
According to Merriam-Webster, the definition of continuous is, “uninterrupted extension in space, time or sequence.” Continuous delivery implies an uninterrupted flow, continuing without stopping. Teams deliver tested code changes so that it can be released at any time into production.
When development teams are operating in a constant feedback loop with customers, deliverables are kept in a release-ready state. This drives the cost of delivery down and provides significant business value.
For What It’s Worth
Decreasing the time required for implementing a new feature and bringing it into production is just one of the benefits of continuous delivery. For project teams that are following an Agile methodology, incorporating a Kanban delivery model fits well with continuous delivery. It focuses on bringing a single feature through the different phases into production. This allows faster feedback and lends itself to shorter cycles.
Better, Faster, Stronger
As the lyrics of the Daft Punk dance single imply, faster is also synonymous with better and stronger. To be faster, we must be better at repeating processes. Performing processes such as building and deploying in lower environments, before the actual production deployment, can reveal issues which can be resolved.
The Pace of Testing
What has the adoption of this continuous integration and delivery model done to the pace of testing?
Speeding up the development of software through continuous testing and delivery means we must speed up the testing as well. Manual testing takes a lot of time and can bottleneck even the most aggressive timelines. Automation testing is a requirement if we are to have confidence in the quality of the code.
Our Testing Manager is a firm believer in manual testing of all types. The value of a QA tester applying critical thinking during exploratory testing cannot be replaced. However, manual testing alone cannot keep up with the increasing demands of getting software to market. It is important to change the way we think about testing and incorporate testing coverage at each step of the delivery pipeline.
Commit and Test. Unit testing needs to be a part of the process. Developing a unit test should go hand-in-hand with the development of a feature. Testing is the responsibility of a Developer and a Tester.
Accepting the feature. Test against the acceptance criteria. For faster defect detection and resolution, create automated tests for the new feature. Incorporate these into the automated regression test suite to be run again during the exploratory testing step prior to deploying to production.
How does it perform? Automated load, performance, scalability and security testing on the integrated test environment will identify issues that affect users in production.
Exploratory testing, coupled with automated tests, provide broad test coverage. Since testing has occurred at each of the previous steps, QA can confidently explore the software, without the need of huge and laborious test cases which can take too much time to execute.
Deploying into production is merely installing into another environment and is low risk. Work towards automating deployments so that continuous integration + continuous deployment = continuous delivery.
But isn’t this a mini waterfall approach?
Wait time is the significant difference between this Agile delivery model and a waterfall method of development. Constant movement of code, simultaneous testing in the environment, and defect prevention rather than defect detection follow the agile way of delivery. Automate so that each step in the pipeline can be seamless and trouble-free.
Caseware is committed to delivering quality software. Continuous delivery is one of the best options for a product’s success. Optimizing the process of putting software into production can meet the business needs of getting the product to market in an efficient and effective way.