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.
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...
- Target Audience
- People wanting a hands-on introduction to using property-based state-machine testing
- 1 hour 30min
- 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
- 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.