Functional languages like Scala can reduce the complexity of writing high-concurrency, high-throughput systems, but growing software with TDD in Scala presents challenges unfamiliar to those of us who spend most of our time in the JavaScript, Java and .NET worlds. Learn how to avoid the pitfalls of testing a functional language and walk away with some new techniques that you can apply to development in other languages, even if you have never written software using Scala before.

Suppose your team has decided to use Scala for a performance-critical component in your backend system that will need to scale to millions of concurrent users. A couple of days into the project you are finding that in Scala, there are few easy wins, and as the codebase grows, your confidence in it shrinks. You are comfortable with ATDD, TDD and emergent architecture in the development ecosystems of .NET and Java, but are unsure of the best way to introduce those disciplines to your team along with the conventions of Scala.

Together, we will explore the various testing DSLs available in Scala for elegantly specifying your intent and cultivating your design through tests. We will examine which frameworks to use for testing interactions with an existing Actor-based library, and how to drive the development with tests for a system that relies on reactive programming.

We will start with an empty programming canvas, and by the end of this session, attendees will have been immersed in the process of writing a fully-functional Dropbox client that incorporates the ScalaTest, Scalaz, Akka and Spray libraries.

The techniques are taught in the context of Scala but can be applied to other Actor-based frameworks in functional languages like Erlang or Haskell.

Additional Resources

About the Speaker(s)

No bio currently available.