In the world of dynamic, asynchronous, real-time client-server applications, testing is hard. Fortunately, we already have the tools available to create full suites of acceptance, integration and unit tests, and use behaviour-driven design (BDD) methodologies to tease out a working implementation from the starting point of users' needs.