How to avoid the Grinch in the system this holiday season

For a period of a few days in November, fear and uncertainty reigned as thousands of American Airlines’ passengers waited to hear if their holiday flight would be cancelled due to a pilot scheduling snafu. No pilot, no flight. They blamed a ‘glitch in the system.’ But let’s face it, these types of defects end up draining the joy for everyone they touch—they really are a Grinch in the system.

While I don’t know what the exact problem in the system was, I can surmise that there was a code change that was not sufficiently tested that was released to production. This may have been a very minor change, but one that ended up having major consequences. As companies move to deliver new features and capabilities faster and more frequently to external and internal systems, it’s often hard for the testing side of the house to keep up.

With today’s complex, interdependent code bases, even a small iteration can impact multiple areas. There’s no time to design test cases, test code and release manually. But, how do you keep that Grinch out of your system then? Your testing and release regimen needs to adapt and become more agile with continuous testing.

Tip 1: Automate Requirements and Test Case Design

More often than not, software defects get released to production because of incomplete or ambiguous requirements. Particularly in agile development organizations—with fast sprints filled with disparate user stories, change requests and fixes—how can test organizations respond agilely with requirements for testing? Testers today typically are converting requirements into the right tests for the right systems manually. The potential for mistakes and misses is high.

Automating requirements and test case design enables you to quickly generate the smallest number of test cases for maximum coverage, removing the potential for defects to slip through. Model-based testing approaches make it easier to design, develop and maintain executable test cases and trace requirements through the entire development and testing lifecycle.

Tip 2: Automate Test Environment Readiness

You may have the right requirements and the right tests, but do you have the right data and services to fully test the code change? You don’t have days or weeks (or even hours!) to create the test data by hand or to wait on the availability of resources.

Test data management enables you to automatically create virtual copies of test data on-demand as relevant to the test case and change. Extensive data mining capability can enable you to quickly identify, locate and link data from multiple sources to your test cases as needed.

Service virtualization handles the simulation of unavailable systems. Quickly stand up test environments that were previously cost-prohibitive or inaccessible, and test your changes in an integrated, real environment.

Tip 3: Automate a Smart Testing Workflow

Continuous testing is not something relegated to a particular stage in your application development lifecycle. It’s testing a change in the most efficient way during the application lifecycle, enabling you to find issues as early as possible and accelerate your release. To do this, you need to instrument a continuous testing workflow where the promotion and feedback of all testing tasks are automated and testing is prioritized by risk profile of the code change.

You also need the visibility to track the code change through the pipeline with the data to make more informed decisions about releasing based on the quality profile of the code.

Don’t let the Grinch in the system impact your bottom line—or your customers’ experience. Learn more about the continuous testing and release practices you need to put into place with CA’s Continuous Delivery Solutions.