Event Execution Reproduction by Log Analysis
Summary
Imagine an interactive application; on the top level it is driven by user events such as clicking button, requesting a service, etc. These events can trigger internal events such as function calls. Apart from that, an event may also cause a change in the state of the application. This may influence the way subsequent user events are executed. In case an error appears in one of them, it can be a result of a particular context in which the user event is executed and that context is the result of execution of previous user events. We assume the events are logged and our goal is to reproduce the error. First, we need to reduce logged sequence of events by eliminating the events that were not relevant towards the occurred error. In order not to spoil the production data, the reproduction is executed in a special test environment whose persistent state has the same structure as that of the production version, but is populated with different data. In our research we target these two issues by defining two terms: event commutativity and data similarity. We have implemented an algorithm that determines if events commute and an algorithm that finds similar data. We have also conducted an experiment that validates our approach.