Mauro’s research interests are in the field of software engineering. In particular, his main activities focus on behavioral models inference, and automatic test cases generation. Mauro is currently working on the empirical assessment of dynamic analysis techniques that infer Finite State Automata (FSA), and a on system testing technique for interactive GUI-based applications.
Inference of Behavioral Models
In the software field, behavioral models can support software engineering tasks. Behavioral models are included in all the main analysis and testing activities: models are used in program comprehension to complement the information available in specifications, are used in testing to ease test case generation, are used as oracles to verify the correctness of the executions, and are used as failure detection to automatically identify anomalous behaviors. When behavioral models are not part of specifications, automated approaches can automatically derive behavioral models from programs. The degree of completeness and soundness of the generated models depends from the kind of inferred model and the quality of the data available for the inference. When model inference techniques do not work well or the data available for the inference are poor, the many testing and analysis techniques based on these models will necessarily provide poor results.
Mauro studies the problem of inferring FSA (the model that is likely most used to describe the behavior of software systems) that describe the behavior of programs and components, and can be useful as support for testing and analysis activities. With his works, Mauro empirically investigates the limitations and the capabilities of state of the art techniques, and he defined two complimentary approaches (one black-box and one white-box) that can produce accurate behavioral models from software systems.
Automatic test case generation is a key ingredient of efficient and cost-effective software verification processes. Automatically generating test cases can reduce the costs of testing and increase the effectiveness of software verification. Automatic test case generation techniques can generate many test cases that cover either functional or structural elements with high precision, reducing the human biases, and at a lower cost than manually generated and maintained test suites.
Research has focused on several aspects of automatic test case generation that span from unit to regression testing, white to black-box testing, random to model-based testing, leaving system testing poorly automated with the exceptions of capture and replay tools that replay system test cases, and GUI testing tools that check for absence of interference between GUI events. Other system testing activities, and in particular the generation of functional test cases, are largely manual and time-consuming.
Mauro defined AutoBlackTest, a technique for the automatic generation of test cases for interactive applications. AutoBlackTest interacts with an application through its GUI, learns the most relevant ways to interact with the application itself, identifies system crashes and other domain independent problems, and generates regression test suites. AutoBlackTest use reinforcement learning techniques to understand the modalities of interacting with an application through its GUI. Mauro works to extend AutoBlackTest by using ontologies that can help to produce semantically relevant interactions.