When applying SCRUM, one of the goals of each sprint is to deliver a working product. A next step is to get this working product within the production environment. An approach could be to use continuous delivery. But what are the benefits of continuous delivery? Within this blog post I will share a couple of reasons to take a further look in continuous delivery.
What is continuous delivery?
Continuous delivery is a design practice which is used in software development to improve the software delivery. The product backlog should reflect the business needs based on what customers want. User stories with the highest priority should be on top and are done first. When features are done you don’t want these to collect dust on the shelf. These should be delivered as quickly as possible to the customer. When having a higher frequency in delivering the software the new functionality will reach the customer more quickly. This allows you to collect feedback and improve your product. The benefits of continuous delivery are:
- Speed: Delivering new functionality or resolve bugs quickly to the end user which should fulfill the business needs.
- Quality: By delivering your software quicker the change impact is reduced and allows you to get quicker feedback
- Focus: With focusing only the features that are delivered during the sprint the impact is less if you apply a couple of sprints combined. This allows the team to focus on a minimal set features which also results in less stress.
Functional and unit testing
To achieve continuous delivery testing your product becomes crucial. With applying unit testing in combination with functional testing you should cover the most features of your product. Code coverage does not always confirm that it is tested properly. Focus on the most important parts of your code. With functional testing create happyflows which should cover the basic flows of your product. For example, begin with the setup and configuration and after this the basic actions within the product. It is important to validate the outcome from the functional tests. Improving the unit and functional testing should be an ongoing process but start with the basics. Based on the reported bugs you could create a new unit and functional tests so this bug cannot occur again.
By automating this your product is automatically tested and this allows the product owner or acceptance team to focus on the delivered features or resolved bugs.
It is a team effort to achieve continuous delivery. When your organization has separate departments for testing this can interrupt the flow of the software release cycle. A way to improve this is to mix development and testing in one team. When testing within the same team allows a developer to quickly discuss a rejected user story. This will improve communication and miss communication is reduced.
Delivering the software
Depending on the type of software, delivering on a high frequency can be challenging. When the application is running in a self hosted environment you are in control of applying changes. With traditional software automatic updates allows you to deliver the software to your customer. In managed environments this will be disabled. It is important to notify the customer why you are releasing on this high frequency so they see the benefits.
If you have any comments or question please leave them below.