Improving Software Quality with Continuous Integration and Continuous Delivery
We all know that quality can’t be injected into software at the end of project. There are several aspects that directly related to the quality of software and speed of delivery including but not limited to: team – it’s composition and size, collaboration, pragmatic and clean unit tests, automated functional acceptance tests – preferably based on executable specifications, system tests – like performance and load testing. Everything chained together with fast, easy to use and reliable pipeline with continuous integration and one button deployment and smoke tests.
There are plenty of tools available to perform each of this tasks, so there is no excuse not to perform and automate those tasks. This is the foundation of software quality.
Test should be considered as deliverables, with the same importance as production code. How else can you prove that software is working without tests?
Pipeline is another critical components in software quality and delivery. Pipeline links together different components, environment and tools into agile tool chain where everything automated and trackable. There are several tools available to build continuous delivery pipeline, from high end commercial products to open source.
Every presentation below reflect or introduce new concepts or tool to help developers to build great, quality products.
1. John Ferguson Smart, consultant and book author is talking about web and acceptance tests. Interesting is his open source The Thucydides package. It makes writing acceptance, web based test easier with a framework that facilitates writing maintainable tests code. Page pattern, Selenium and easyB – BDD framework for JVM, all integrated together. Very interesting project for Java teams.
2. Etsy does it right and they vocal about it. Great engineering culture, commitment to quality, automation, communication and collaboration allow them to deploy software several times a day and be one of the best development shop in New York. In this story, LB Denker, self-proclaimed Anthropologist of Developer Operations, talk about Etsy commitment to quality.
3. Continuous Delivery presentation by Alex Fontaine. In simple terms Alex cover topics of build process, database updates, feature toggling instead of branching, blue green deployment and different packaging. From the presentation I also learned about memcached-session-manager
and Flyway – The agile database migration framework for Java . It is worth 70 minutes of your time.
4. Continuous Integration in the Mobile World. InfoQ session by Godfrey Nolan, where he discusses using CI for iOS and Android apps, headless emulators, tools for unit and functional testing, and mobile app deployment.
5. Developer Productivity Report – Part 4: Deployment Pipeline. This research shows that most Production Update processes are done manually, something that was a bit expected (sadly). More specifically, the majority of those surveyed said that their processes for deploying applications to the production environment are generally not automated to any significant degree.