It’s not hard to notice how many aspects of life have become tied to software. Two years ago, Marc Andreessen shared his now-famous manifesto, “Why Software Is Eating The World.” Dismissing the idea of a software bubble, Andreessen pointed to companies – from Amazon to Netflix to Skype – that had displaced traditional businesses by making software the central focus of what they were offering.
“With lower start-up costs and a vastly expanded market for online services, the result is a global economy that for the first time will be fully digitally wired – the dream of every cyber-visionary of the early 1990s, finally delivered, a full generation later,” he wrote.
Today, that statement rings even truer, with software invading everything from refrigerators to cars. In particular, mobile applications for tasks such as banking have seen exponential growth and adoption. In a recent column for Network World, quality assurance veteran Lorinda Brandon pointed to the way peoples’ increasing dependence on software for day-to-day tasks has placed new emphasis on the reliability of applications.
“Few people take the time to process how software has revolutionized so many of their activities and what would happen if that software stopped working,” Brandon wrote. She later added, “With more people relying on software to power critical needs like navigation systems in planes, trains and automobiles or doctor-patient systems within hospitals and healthcare facilities, how do we make sure those systems work on Day 1 and continue to work on Day 100?”
Coupled with the increased reliance on software is the increased emphasis on speed of deployment, Brandon added. In particular, the availability of APIs makes it easier to quickly build and deploy new applications – but it also puts added pressure on the testing process.
How testing might evolve
New development methodologies are radically changing the way testing occurs, Brandon explained. Agile approaches make deployments much more frequent and require those performing tests or code reviews to anticipate how features that are only partially built may end up working. Mobile also creates quality assurance challenges, since their functionality often depends so much on factors such as network connectivity and device settings that can’t be anticipated. But with the proliferation of mobile apps, the margin for error here, too, is low.
In some cases, companies are opting to forgo testing altogether and revise their code after it’s released, as errors arise. Brandon cautioned against this type of practice, noting that it can have costly business effects if incorrectly applied.
“While this gets your code to your users faster, you need to decide whether your application fits a business model that can incur this level of risk,” she wrote.
With accelerated development schedules and user expectations increasing all the time, businesses will almost definitely have to reconsider their testing approaches and find the right blend between speed and quality. Tools such as static analysis software can help tackle this problem by introducing more testing and quality controls into the development process. Static analysis is particularly effective as part of an agile or continuous development shop, as it allows developers to review the quality of their code while writing it.
Faster release schedules might also require some of the testing responsibility to be shifted to the developers themselves, with techniques such as peer code review offering a first line of defense against potential errors and with code analysis tools on alert for application security issues. Particularly in cases such as those mobile applications in which testing capabilities are limited, tightening up code is a critical first line of defense in ensuring the app works successfully. Brandon is right: Testing approaches are changing, and companies need to consider what tools they have to ensure quality remains consistent even as they accelerate their release schedules.
Software news brought to you by Klocwork Inc., dedicated to helping software developers create better code with every keystroke.