LMAX Exchange relies heavily on automated testing in a wide range of forms. This is a catalog of posts on Symphonious and from other LMAX folk about the tools and techniques we use to make testing effective and maintainable.
Testing Everything, Everywhere
- Abstraction by DSL
How our DSL introduces abstraction to make it easier to maintain tests as the system changes.
One of the key abstractions the DSL uses to provide isolation, using memorable aliases as placeholders for longer, unique names.
- Replacements in DSL
A simple but very effective little pattern to work with output that references something we normally use an alias for.
- Abstracting Acceptance Tests
Early thoughts on the DSL and acceptance test approach just after I joined LMAX.
- Making Test Output Useful
Some useful techniques we use to ensure the log output from our tests is meaningful and understandable.
Team & Culture
- Testing into Production and Back Again
Sam Adams gives an overview of continuous delivery practices at LMAX. He demonstrates the variety of testing they have built in, how good test isolation has enabled them to extend their functional tests into live monitoring of production, and how a commitment to incremental delivery, quality and automation have created a sustainable environment for producing great software fast.
- Testing Without Examples
Tom Johnson describes a number of techniques we use to ensure some property is true of our systems under all circumstances.
Open Source Libraries
The full range of projects LMAX Exchange has open sourced is available on the LMAX Exchange on Github. Listed below are the testing related ones.
The re-usable part of our DSL, parsing and validating parameters.
A tiny library that makes selenium/WebDriver selectors much nicer.
Testing library for FIX, designed to make it easy to generate FIX messages that are invalid in specific ways.
Run JUnit tests in parallel within ant. Not used at LMAX anymore since we migrated to Buck but still very useful for anyone using ant.