Continuous Integration and Delivery Process Ensures Quality Software
By Vijay Sathya, Lead Software Developer
ShawSpectrum™ is Shaw Systems’ enterprise-level, integrated suite of software products for loan and lease servicing and collections and recovery processing. Its browser-based GUI comprises hundreds of screens including online functions available for mobile devices. Shaw software developers work in a large and complex development environment that has many moving parts. The challenge is to coordinate all the parts so that they work well together at all times, and when they don’t work correctly, those parts need to be identified and corrected quickly. We’ve implemented a Continuous Integration and Delivery process that has conquered this challenge and enabled us to deliver high quality, full functionality, and on-time delivery. The process involves total automation in build, deployment, and testing, supplemented with manual testing as appropriate:
- Developers use automated build and testing before committing code to our central repository.
- Software changes are integrated every hour.
- We automatically deploy and test to ensure that new changes do not negatively impact any part of the software, utilizing in excess of 250,000 test scripts.
- Performance is assured by test data exceeding one million accounts.
- The latest working software is always available to our analysts, testers, and developers to verify, test, and enhance in a real-time environment.
- This highly automated process provides a high level of confidence that Spectrum meets quality expectations after every change, regardless of size, and the product is ready for delivery at the end of each day.
Every hour, software stored in a central repository is rebuilt and tested to ensure that Spectrum passes certain minimum smoke test conditions. We’ve built an infrastructure consisting of a series of servers forming a continuous delivery pipeline with stages consisting of Commit, Smoke, Regression, Latest Nightly, Performance, User Acceptance, and Delivery through which Spectrum is moved automatically. Our development team gets instant feedback through the results of testing. These results are published on a central monitor as well as through emails.
- Commit: The new code is introduced into the Continuous Delivery Pipeline.
- Smoke: 5,000 total assertions across different product lines are run using tests developed in FitNesse and JUnit. These tests ensure the correct working of basic functions.
- Regression: 250,000 FitNesse based assertions test various business scenarios using both online, end of day, and other modules. These integration tests ensure that the most recent changes do not break any business functions which were working before.
- Latest Nightly: This stage tests online screens using nearly eight thousand Selenium-based scripts to ensure that our online screens are functioning correctly. It is also used as a data load for manual testing by our testers to test online and batch functionality.
- Performance: We run JMeter-based scripts against a database containing more than one million account holders to simulate concurrent users and measure online screens’ response time. The entire End Of Day batch is run as scheduled to ensure that the performance of batch is not impacted by recent check-ins.
- User Acceptance Test: This stage is used to test application server-specific services and manually test the application.
- Delivery: The delivery manager can view the results of an installer at various stages in the delivery pipeline, select it, and bundle the installer with license as part of delivery.
The Continuous Delivery Pipeline is an important part of Shaw Systems’ strategy to achieve timely delivery of highly reliable and quality software to our clients. Do you have questions about Spectrum? Please contact Senior Account Executive Mike Moore at firstname.lastname@example.org.