Join Newsletter

Property Base Your State Machine (Combo Workshop)

YOW! Lambda Jam 2019 - 15 May

PREPARATION - A clone or copy of this repository https://github.com/qfpl/state-machine-testing-course/ and completion of the initial setup steps contained therein.

Types are great, but in most languages we use, they can't cover everything.
Testing tries to fill that gap. Property-based testing generates bizarre
examples and finds minimal reproductions that break your tests - a significant
improvement over writing test cases by hand. But what if you have a thorny
stateful system to test?

State Machine Testing extends property-based testing to randomly test stateful
systems. The actions performed against the system are modeled as commands, and
the usual property-based test machinery, generates test cases, and shrinks
failing tests to their minimal counter-examples.

In this workshop we will build on the earlier talk and begin building up a state-machine test suite for a small imperative system.

Sean Chalmers

Functional Programming Engineer

Data61 / CSIRO

Likes riding motorcycles, crossfit, software that works, and writing documentation. Hates not having errors as values, not being able to use lenses, and writing bios. Also a closet game developer w...

Jack Kelly

Functional Programming Software Engineer

Queensland FP Lab, Data61

Jack is a Haskell enthusiast, lapsed tall-ship sailor and recent addition to the Queensland FP Lab. He has tutored functional programming at universities and for industrial programmers, and loves s...

Workshop Details

Target Audience
People wanting a hands-on introduction to using property-based state-machine testing
Level
Intermediate
Duration
1 hour 30min

Learning Outcomes

  • Gain a basic understanding of property-based state-machine testing
  • Have implemented several state-machine tests using the Haskell `hedgehog` testing library
  • Understand its importance as an extremely powerful testing tool
  • Be excited enough that they want to apply it to their own projects
  • Gain awareness that:
    • Haskell isn't the only language that has this capability
    • Even in Haskell, `hedgehog` isn't the only library that can do this

Prerequisites

  • Intermediate Haskell knowledge is required.
  • Knowledge of property-based (but not state-machine) testing would be beneficial
  • A clone or copy of this repository https://github.com/qfpl/state-machine-testing-course/ and completion of the initial setup steps contained therein.