PropEr is an open-source tool for automated random testing of Erlang function properties from specifications. Its original focus was on testing pure functions. Nevertheless, projects implemented in Erlang typically consist of stateful code. In this thesis, we have extended PropEr with two library modules that support random model-based testing of stateful reactive systems. The model behaviour of the system under test should be defined in a callback module. Given this model, we test a stateful system by generating and performing sequences of calls to that system, while monitoring its actual responses to ensure the system behaves as expected. The first module, proper_statem, is designed to test generic servers and other systems with stateful interfaces, whose side-effects are specified via an abstract state machine. The same state machine specification can also be used for generating sequences of calls that will be executed in parallel to test for race conditions. The second module, proper_fsm, offers a convenient way to test systems exhibiting a finite state machine behaviour, as it is designed to bring the callback module specification very close to a state diagram. Defining a model of the system under test is by no means a trivial task. To compensate for that, we present detailed tutorials on effectively using the new library modules to test stateful systems.