In-Depth
Top 3 Trends in Developer Testing
How should developers cope with software eating the world?
By Avi Hein
Last year, Marc Andreessen, founder of Netscape and co-founder and partner of the venture capital firm Andreessen-Horowitz, published an influential op-ed in The Wall Street Journal that argued that software was eating the world.
In 2012, many of us started to see Andreessen's predictions come true. Some of us may have stopped reading printed books or sending snail mail. Perhaps our health records are now electronically stored in the cloud, with no need to decipher a doctor's chicken scratch anymore. Maybe we can't remember the last time we stepped foot in a bank or called our broker -- all our banking and investing is now done via the Web or mobile devices. Others, including many investors, saw the consequences of these predictions through negative occurrences.
A Look Back: 2012
2012 Development Trend #1: High-impact software bugs captured the public's attention
What is the cost of software eating the world? This year, the financial sector found out.
Knight Capital, an American global financial services firm, lost at least $440 million due to a glitch in their legacy software. NASDAQ OMX paid $62 million in a settlement compensating investors for the delay in trading Facebook shares during its IPO, caused by a "technical glitch." BATS Global Markets canceled their IPO due to a "software bug" in their trading platform. The consequences weren't just known among software developers -- mainstream media covered the topic at length and often on the front page.
If software is eating the world, how do we cope? Many organizations began to discover that one of the most important coping mechanisms for the explosion in software was unit testing.
2012 Development Trend #2: Popularity and awareness of unit testing increased
Most developers still do not unit test. Unit testing and test-driven development (TDD) are difficult to begin. The practice is still not taught in most computer science and engineering departments. (Though not yet mainstream, in 2012 the popularity and awareness of unit testing increased.)
According to Dror Helper, a former Typemock engineer and frequent lecturer about agile development and unit testing, more companies have come to the conclusion that without a basic unit testing suite, it is impossible to deliver quality products on time. When I asked about his thoughts for the past year, Kevlin Henney, a frequent speaker on software development and C++, said that in 2012 we saw "increased acceptance of unit testing as a normal programming activity, as opposed to a minority interest or fad."
The 2011 State of Agile Development survey sponsored by VersionOne and prepared by Analysis.Net Research (http://www.versionone.com/state_of_agile_development_survey/11/) reported that 60 percent of respondents currently use a unit testing tool and another 14 percent plan to use one. Additionally, 70 percent of respondents engage in unit testing and 38 percent engage in test-driven development. You can't embrace agile without embracing unit testing.
Unit testing gained an increase in awareness and popularity in the past year. In 2012, several new unit testing frameworks were released from companies such as Microsoft and Typemock (the company I work for) and there was an increase in the number of people searching for information on unit testing. For example, over the past 12 months, there was a 50 percent increase in people searching "unit testing C#" in Google. There was also increased demand for unit testing for Web and mobile development, with a 130 percent increase in searches for JavaScript unit testing and 120 percent increase in searches for unit testing in iOS.
2012 Development Trend #3: Automatic testing and continuous integration grew
Although quality assurance teams still exist, there is growing awareness of the need for all sorts of automated testing and continuous integration. Testing is not something to be left to a separate team to tinker with and manually test once the product is already programmed and deadlines are looming.
More than half (54 percent) of respondents to the survey noted that they are doing continuous integration. A quarter are doing automated acceptance testing. There is a greater appreciation that testing is also the role of software developers, with more positions seeking "test engineers." Additionally, organizations, particularly in regulated industries, are recommending development testing as a best practice. A Forrester report recommended that companies engage in development testing, and particularly automated with tools, connected into the build and release process. Clearly, this is a good thing.
A Look Forward: What to Expect in 2013
2013 Development Trend #1: Unit testing will go mainstream
Although unit testing is increasing, it is still not mainstream. The majority of developers still do not write unit tests or engage in any form of test-driven development. Many still view unit testing as a niche practice, which only the über-geek elite developers perform. Not every developer will be writing unit tests in 2013, but the coming year will bring mainstream credibility to this practice and the majority of developers will, at least, want to start unit testing.
New isolation frameworks from companies such as Typemock and Microsoft will lead to increased awareness and practice of unit testing. There are also new educational resources coming out in 2013, from commercial vendors, consultants, community efforts, and books, such as the second edition of Roy Osherove's The Art of Unit Testing.
2013 Development Trend #2: Agile adoption will hit a tipping point
Agile adoption will continue to increase and reach a tipping point. Although there still will be legacy waterfall shops, new development teams and environments will choose to go agile in 2013. Today, a plurality of developers prefers agile methodologies over a waterfall approach. If waterfall is not dead in 2013, it will be gasping for its last breath.
The growth of agile also makes the debate about the role of testing moot. Automated testing -- with developers and professional testers both taking part in testing during the development process -- is now a given. QA members are now part of scrum meetings, and developers know that they need to be engaging in development testing practices and not just leave quality to a separate testing team.
2013 Development Trend #3: Software disasters will occur more frequently and with more significant consequences
The past year saw software bugs that led to billion-dollar losses. As significant as this is to the global economy, the significance and importance of continuous software testing will be felt even more in the upcoming year. We may see a significant software disaster that shuts down a critical system -- perhaps health and safety infrastructure, utilities, defense, or financial systems.
In November, Hurricane Sandy showed us just how vulnerable our critical infrastructure is to a natural disaster, shutting down parts of the New York subway and forcing the evacuation of hospitals, leaving millions without power. In 2013, we will see a software version of Hurricane Sandy, shutting down major infrastructure and critical systems.
The consequences may even be fatal unless sufficient precautions are taken to protect our critical software infrastructures.
Conclusion
The past decade has seen major changes in the world of software. No one can predict the future, but it's clear that developers and organizations must prepare for the inevitable. Let's be sure software doesn't eat the world.
Avi Hein is the global marketing manager at Typemock. You can contact the author at avi@typemock.com.