Living in a state of accord.


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

UI Tests


  • Abstraction by DSL
    How our DSL introduces abstraction to make it easier to maintain tests as the system changes.
  • Aliases
    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.

Static Analysis


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.

  • Simple-DSL
    The re-usable part of our DSL, parsing and validating parameters.
  • elementspec
    A tiny library that makes selenium/WebDriver selectors much nicer.
  • nanofix
    Testing library for FIX, designed to make it easy to generate FIX messages that are invalid in specific ways.
  • parallel-junit
    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.