DevOps and Legacy Systems
Improving legacy systems through automated testing as part of a DevOps/Agile initiative reduces risk and improves the speed of feature delivery.
Join the DZone community and get the full member experience.Join For Free
Legacy systems do not have to be the anchor that hold a company back from aggressively competing in today’s high-speed markets. Moving to an automated testing strategy can make the difference in maintaining a competitive advantage.
The emphasis of Agile, as demonstrated in the Agile Manifesto, is on a set of values pertaining to how we treat each other as human beings within the context of delivering software, which has value to other our clients. Respect, integrity, collaboration, and communication are virtues that result in superior outcomes for all concerned. DevOps capitalizes on those values and focuses on the continuous delivery of value to production environments. It moves the ball forward from “potentially shippable” to “shipped” software.
In DZone’s Guide to Continuous Delivery, I was encouraged to see the importance of quality emphasized to be as important as the speed of delivery. In the article by Andrew Phillips, three points are elaborated. They are:
- Continuous Delivery is about shipping software better, not just more quickly.
- As the scope/size of changes in the pipelines get smaller (and the pipeline runs more frequently), validating existing behavior becomes at least as important as verifying the new features.
- We need to go beyond automated functional testing and add stress and performance testing into our pipeline to validate the behavior of an application at scale.
Phillips is clear in saying:
“Pretty much every Continuous Delivery initiative that gets off the ground quickly realizes that automated testing — and, above and beyond that, early automated testing — is essential to building trust and confidence in the delivery pipeline.”
Why is that?
There are several reasons why automated testing is essential to continuously delivering value to the customer. The first is that automated tests provide an executable specification of the requirements of the application feature being developed. We know we have written the right code, not just because it compiles, but because it does what the test specifies it will do. This early feedback can be at the unit/module level, the integration level, the end-to-end functional level (which is often used as acceptance tests from the user standpoint), and the load and performance level.
If the desired direction for the delivery team is putting new features into production quickly and with high quality, then testing must be automated and a complete set of tests must be created from the very beginning of the development/delivery cycle. What about legacy systems?
With legacy systems, new features can be fully tested at the unit/module level, but there are often challenges with testing legacy code, which is impacted by these new features. Retrofitting legacy systems is addressed in a white paper by Jenny Stuart entitled,“Retrofitting Legacy Systems with Unit Tests.” In it, she discusses such topics as:
- Reasons to retrofit.
- How to decide the approach to building out unit testing.
- Selecting strategies for incrementally building out coverage.
- Creating the necessary infrastructure.
- Investing in resources.
- Select unit-testing tools.
- Integrate unit tests with the build system.
- Train staff how to perform automated unit testing.
- Incrementally improve system testability.
- Incrementally refactor the system.
These are all important factors in improving legacy system testability and in moving to a Continuous Delivery model. The practical benefits of improving legacy systems through automated testing as part of a DevOps/Agile initiative include reducing risk and improving the speed of feature delivery.
Read the original article.
This blog post is brought to you by SolutionsIQ, the largest pure-play Agile consultancy in the industry. We have the people, passion and expertise to make Agile at any scale a reality. If you're looking for more of the latest, greatest Agile content, check out our resource library chock full of webinars, case studies, white papers, podcasts and more!
Opinions expressed by DZone contributors are their own.