alex_aldo - Fotolia
As modern app infrastructure grows in complexity, developers face the daunting task to ensure that new releases don't break old software. While it's tempting to build and test software that emphasizes the latest versions of databases, browsers, networks and enterprise software, many people use older versions.
To avoid software compatibility issues, teams must develop a solid architectural plan, prepare thorough release notes and perform customer outreach. Review the software architecture to identify potential problems before users see them. While software compatibility testing -- and backward compatibility testing, in particular -- might seem antithetical to a development culture oriented toward quickly shipping new features, fast releases and quality don't have to be mutually exclusive.
Not all software compatibility issues carry the same severity, said Theresa Lanowitz, lead analyst at Voke Inc. And they don't all look the same. Incompatibilities that involve legacy enterprise software and customizations can be more difficult to detect and rectify than ones that affect browsers, connectors and OSes. Strategize accordingly.
Do you need API versioning?
Software must maintain compatibility with everything it relies on to work: various versions of ERP systems, databases, class libraries, development tools and APIs. WhiteSource, an open source security platform, discovered this the hard way. The company added a user keys feature to its platform to control access for APIs and other tools but quickly realized that it wasn't compatible with older, still popular versions of the product. To make the keys compatible with the older software versions, WhiteSource had to create a whole new set of APIs.
"If you make a bad decision in the past, it can be hard to correct moving forward," said David Habusha, VP of product at WhiteSource. "You can always add new features, but it's really hard to change what you already have."
WhiteSource now uses API versioning to reduce software compatibility issues. Each platform version has an API version specified to work with it, which ensures that new versions of the API won't break users' existing software.
Ensure customization compatibility
No two users' systems are alike; each one has customizations and configuration variations.
To take all possible setups into account, Aras, an end-to-end industrial digital platform software provider, created a modeling engine that sits behind an API in its service delivery layer. As part of its offering, Aras upgrades its customers' software upon request, including all user or third-party customizations. The modeling engine keeps track of customization, which helps Aras' software compatibility testing efforts, said Mark Reisig, the company's director of product marketing.
Craft a QA plan, with regression testing
To address software compatibility challenges, enforce an effective testing strategy. The plan should account for how an application interacts with business-critical software. "This business-critical software will also be around for a long, long time," Lanowitz said, so it can't be ignored.
Put a plan in place to ensure backward compatibility before any development work begins. Aras tests software compatibility with each release to ensure that users can upgrade legacy systems to newer versions. Aras' QA team tests standard features, and the development team has a definition of done, which helps it handle bugs as they pop up.
Furthermore, an organization should implement strong, automated regression tests to ensure it'll find out when a new feature breaks older software. Aras uses major and minor automated regression tests, which it credits with keeping upgrades timely.