Statechum is a general-purpose tool for state
machine inference and test generation. It comes with Erlang front-end to
make it possible to "learn" state-transition diagrams from Erlang
software, using both exported functions and OTP calls.
Given a series of traces (such as those obtained from logs), Statechum
attempts to infer a state machine compatible with those traces. This
amounts to finding out where loops are but is heuristical in nature
because there is usually not enough traces to provide a solid foundation
for such decisions. This is where testing is helpful: every time a
learner makes a hypothesis, it generates a series of tests to confirm
it. Where a hypothesis proves to be wrong, the learner takes this into
account and generates a new one. The generated tests complement the
original traces. At the end of the learning process, one ends up with a
state machine and a series of tests.
In the tutorial I'll present the tool using an example and will show
both its learning capability and the support for comparison of state
machines where a "diff" between two models is computed.