James Aimonetti

Systems architect at 2600Hz

James Aimonetti has been building the Kazoo telephony platform for the last 8 years at 2600Hz and using Erlang since 2007. He sees no reason to stop any time soon!

The Kazoo platform provide telephony services for over 250,000 endpoints and growing!

Past Activities

James Aimonetti
Code BEAM SF 2019
28 Feb 2019
17.15 - 17.40

Property based testing in Kazoo

James will show how Kazoo is using PropEr to test important components of the Kazoo core libraries (and all the crazy bugs it found). James will also show a growing suite of tests for checking the APIs Kazoo exposes for developers using proper_statem to model Kazoo as a black box.

Kazoo has an AMQP-esque binding and routing engine for use internally. With Fred Herbert's help (way back in the day) the PropEr tests have found amazingly complex bugs in the implementation (see here, where James has put them as unit tests just to show their craziness). James will also share the timestamps (sometimes we went *years* before another bug was found) of those weird test cases.

Kazoo has a JSON library for interacting with JSON objects and a corresponding PropEr suite of tests. James will talk about the naive approach to generating JSON objects followed by a better generator that also allows the Kazoo team to control the depth of nested objects to feel confident they're testing complex objects.

The other highlight is the modelling of Kazoo and its API set via proper_statem tests, finding interleavings of API calls that lead to inconsistencies.


  • Introduce property-based testing with real examples
  • Introduce the idea of modelling the system and its APIs via the proper_statem behaviour


Developers interested in property-based testing. Examples will be in Erlang but the ideas should be approachable to any BEAM developers that can use PropEr.