State Machine Testing
WordPressのバグをこれで見つけたらしい
特に並行実行することで起こるバグ
めちゃくちゃ多い状態を持つテストは大変だが、コレならできる
無限の操作のテストを、無限の操作を記述せずにテストできる
e.g. RPGのテスト
Model an application’s state as a data type.
Model the inputs that can change the system’s state as data types.
Specify how each model input can be executed against the system.
Specify how to update the model state given outputs from the system.
Write properties to test that the system behaviour and state match the model.