By Iosif Itkin, CEO, Exactpro
• FrAgile process
• Crowd-sourced testing
• Formal methodologies
• Cognitive technology
When it comes to start-ups and web-industry, agile methods are favoured. They do not necessarily mean better products, but they can make software developers much happier. The outstanding keynote address of GTAC 2011, Google’s test automation conference, claimed that “test is dead”, and that FrAgile is the new agile. Reid Hoffman asserted that “if you are not embarrassed by the first version of your product, then you’ve launched too late”.
He went on stating that we need to test our ideas first before building the product right. The point is to have an established user community by the time your competitors get a well tested product. Extensive user pool is one of the key elements of crowd-testing.
The idea is simple – just deliver your product to the community and collect instant feedback on your software, both the upsides and downsides. To do it efficiently, one would have to rely on sophisticated code instrumentation and data collection. Otherwise it impedes you from thoroughly processing crowd-sourcing output and becomes an exercise in futility.
Is it feasible to use FrAgile process and Crowd-testing in finance? Can we afford an algo running amok burning money which could very well result in prosecution? Maybe we should take a different course of action. Perhaps, what we need is the very opposite of agile.
Is it not embarrassing that we have financial market crashes at the same time as spaceships explore the heliosphere? We can invest heavily into formal methods and expect financial software that is more reliable. Nevertheless, one has to keep in mind that in defiance of all of the formal methods, the New Horizons probe experienced a shutdown that made it lose contact with Earth for three days. Thus, expecting your systems to fail is the only way to enhance the quality of your software.
So, can we estimate the impact on the trading technology? Developing testing instruments and monitoring tools should have the same priority as developing the trading platform itself. It is possible to use agile methods and continuous integration if the system is designed with testability and risk control in mind. At the very least you can deploy, start, restart and configure it automatically. In addition, it is crucial to be able to shut the system down if necessary. Do not expect formal artefacts from the agile process. Instead, have a parallel stream to develop the necessary test harness. Software engineering in the test approach proposed by Google is very close to building software to test software.
We can implement formal verification, theorem proving, static analysis and other approaches, but the software will break anyway. What’s more, the absence of sufficient monitoring and kill switches is what turns a problem into a disaster.
For the sake of audit and regulatory requirements, we develop passive testing tools. Instead of generating messages themselves, they capture the traffic and store it for further analysis. Passive testing tools can collect all the evidence you need.
It is paramount to ensure that your trading system can co-exist with the tools. Passive testing tools can serve as both surveillance and client on-boarding systems. They can also be used for crowd-sourcing. If your test environment is open to others and you have a strong passive test capability you will be able to gain a lot of valuable feedback without even having to ask.
The Technology Services division of LSEG incorporates MillenniumIT, GATElab and Exactpro.
This gives the Group a unique set of software from all three companies at our disposal, which we can use to build test infrastructure for any system. Take testing of trading algos, for example. We can deploy one or several scalable matching engines to function as market simulators. We can utilise GATElab’s algopath or an Exactpro tool called Minirobots to act as market participants. They can both replay some data and at the same time mimic a realistic market impact. In addition, we can have latency and front-running proxies for better test diversity.
It is possible to take the next version of the algo and put it to the test. However, what is the point of running it once? Markets are not deterministic, neither are well-simulated markets. Every time tests are executed, there will be a slightly different result. For this reason, multiple replays are necessary to assess the quality and efficiency of the software.
- Efficient restart and testability to enable unattended test execution
- Machine-readable specifications to synchronise all the tools and formally iterate the possible tests
- Passive testing capabilities and, potentially, market surveillance to capture and store all the relevant metrics (both P&L and system related ones)
Hypothetically speaking, one can run an infinite amount of tests and execute a wide range of scenarios, except that we all have limited time as well as limited hardware. There are two more quality assurance trends, though, cognitive technology and mutation testing, that allow us selecting an efficient limited subset of tests from an infinite number of possibilities. They are used to find the optimal test scenario subset for a trading platform. They can also be utilised in enhancing the test set along the changes in the system under test and in the surrounding markets.
We’d love to hear your feedback on this article. Please click here