Another reason why testing is so important!
The technical errors that have recently befallen Knight Capital, BATS and Nasdaq causing chaos to the markets are not the result of complexity or fragmented markets, but the result of basic technology 101 issues, SEC chairperson Mary Schapiro said today during the agency’s market technology roundtable.
During the SEC discussion, Dr Nancy Leveson, professor of aeronautics and astronautics and engineering systems, MIT, argued that software errors will always happen. The financial industry, like the aviation industry, needs solutions beyond technology – which must include strong regulation.
“ Most industries have government agencies overseeing with an iron hand. The aircraft industry knows people will stop flying if planes start falling out of the sky. You cannot build an unsinkable ship or unfailable software. If you engage in hubris and wishful thinking, you will have to suffer the consequences,” Leveson said.
Still, GETCO CTO Jonathan Ross argued that in order to avoid technical glitches, firms must follow several testing best practices: These include having independently designed systems, he said.
“ To the extent possible, systems should be independent from other systems to limit the potential for an error or failure to cascade to other systems,” he said, adding that any changes to systems must be small, incremental and frequent to reduce the magnitude of any errors and make it easier to mitigate the impact of such errors if they do occur.
Ross also suggested using layered, redundant risk measures, with multiple, overlapping levels of preventive or protective risk controls that each look at a system independently.
GETCO has a formal process for testing its software, Ross noted. This includes a testing lab, testing protocols that developers follow, and change management processes, he wrote in a statement for the SEC.
“Development and testing should reinforce each other; continuous building and testing gives developers a strong feedback loop,” he said.
In the development cycle, common approaches to software testing firms should follow include unit testing – or tests of discrete, generally small, specific and functional, components of the system.
Best practices should also include regression testing, or tests built specifically to address a bug previously identified and to prevent the reintroduction of that bug and integration testing, or system tests designed to test the interaction of applications with each other or outside parties.