Test-First Construction of Distributed Systems
With the power provided by Erlang/OTP, developing complex distributed
systems is easier than ever. However, verifying the correctness of
these complex systems remains a challenge. This talk will present an
approach to testing that I have used at Basho which leverage’s QuviQ’s
QuickCheck. I will present how to build a system model in QuickCheck to
test an early-stage idea against random orderings of client events and
server state transitions. Then, how the model can be converted into the
actual intended product code. And finally, how unit tests and system
tests can be extracted from the original model, with the system tests
leveraging a QuickCheck harness that deploys and runs command sequences
against a cluster of multiple Erlang VMs. I will also present
preliminary details about integrating the Concuerror tool into this
approach, as well as thoughts on generating Coq proof scripts from the
original Erlang model.
Talk objectives: This talk presents a practical approach to using property-based testing to gain confidence in a complex distributed system, from early stage prototyping to final implementation. A developer attending this talk will learn how to use property-based testing as a tool during early state prototyping, as well as understand how to extend the underlying test model into a final implementation along with integration tests that verify that the implementation matches the model used during prototyping/exploratory research.
Target audience: This talk is aimed at existing Erlang developers who understand first hand the challenges of verifying and trusting complex systems and are interested in new approaches to this problem. This talk also demonstrates how the abstractions used by Erlang/OTP simplify reasoning about complex systems, and may therefore serve as motivation
for those new to Erlang or who are still contemplating using Erlang in their organization.
Joseph Blomstedt Distributed Systems Enthusiast and Platform Engineer @ Basho
Joseph Blomstedt lives in Seattle, WA and is a Software Engineer at
Basho Technologies, as well as a PhD candidate at the University of
Colorado at Boulder. At Basho, Joe works predominately on riak_core, the
underlying clustering and distribution system powering Riak, as well as
investigates new approaches to distributed consistency.