Research
Event Race Detection: This project involves the development of techniques to detect event races, a specialized kind of race that occurs due to the non-deterministic scheduling of callbacks in single-threaded asynchronous systems. The first initiative is called
NodeRacer and helps to detect event races in Node.js applications. It employs dynamic analysis,
happens-before relation, and a guided execution with selective postponing to exercise different callback
interleavings and reveal race bugs.
The following initiative is
NACD, a tool that injects delay around the asynchronous functions of the Node.js built-in modules. To do so, NACD contains a JSON model that defines where in the core API the delays should be injected, and implements a runtime system that, at runtime and on demand, injects the delays.
Both tools helped us to uncover previously unknown bugs and flaky tests in
very popular Node.js applications and libraries.
NodeRacer main publications: <ICST-2020> <source code> <video>
NACD main publications: <ECOOP-2025> <source code> <video>
Video Game Testing: This project intends to propose new approaches and tools for video game testing,
taking into account independent game developers and indie studios. This project assumes that play-testing is
an inherently human task, and as such, better engineering support may be provided. We have investigated how
existing approaches for traditional software can be leveraged to test video games, while specific aspects like
fun factor, unique UI, and user experience are evaluated.
Main publications: <SBGames 2018> <JIS 2024> <GAS 2025>
Exploratory Tests: In this project, we aim to improve the practical use of exploratory testing - a
widely adopted technique for manual testing. To do so, this project intends to conduct empirical studies and
proposed interventions (tools) to make this technique more effective. In particular, we have developed
supporting artefacts and prototype tools for exploratory testing of mobile apps.
Main publications: <SAST-2019> <SBQS-2021> <ICEIS-2024>
MoLeWe: this tool aims to leverage model-based testing (MBT) for web tests. The tool works in 3 steps:
(i) infer models from Selenium- Page object-based web tests; (ii) extending the test suite with new tests at
model level; and (iii) generating new test cases from the extended model. Apart from benefits of an MBT
approach, the tool reduces the effort to include new tests, can help to increase test coverage, while
leveraging the existing test suite.
Main publications: <SQJO-2022> <source code>
JStateModelTester: in this project, we have developed and implemented Finite State Machine (FSM)-based
methods that generate complete test suites. We have also conducted experimental studies that compare existing
methods, from different perspectives like test suite characteristics, cost, and effectiveness.
Main publications: <IST-2013> <SQJ-2015> <JETTA-2020>
Automated Tests for Mobile Apps (concluded): in this project, we investigated different
approaches to automate tests for mobile applications. The main initiatives are presented next:
-
x-PATeSCO: this tool is a cross-platform app test script recorder. Built on top of the Appium
framework, x-PATeSCO supports the recording and generation of test scripts for cross-platform mobile
apps
(developed in frameworks like ReactNative, Xamarin, and Apache Cordova). We have investigated different
XPath
expressions so that automated tests can be run robustly in different platforms like Android and iOS.
x-PATeSCO
has also been extended to amplify the tests by exploring known faulty patterns.
Main publications: <IETSW-2019>
<SEKE-2019> <source code>
-
FourMA: this tool supports the adoption of model-based testing (MBT) in Android apps. By using
test
models, FourMA can be used to reduce the effort for concretization, and test other characteristics of
apps,
such as device-specific events, unpredictable users' interaction, telephony events for GSM/SMS, and
sensors
and hardware events.
Main publications: <SBES-2017> <source code>
-
Prof.Mapp: this tool analyzes the source code of mobile Android apps and collects several pieces
of
information. In particular, Prof.Mapp looks at the presence of automated tests, adopted frameworks,
external
connectivity, graphical user interface (GUI) elements, sensors, and different system configurations.
With this
tool, we conducted an empirical study with a sample of 663 open source mobile apps.
Main publications: <IST-2018>
<source code>
CP4SE (concluded): in this project (lead by
Marcelo Eler), we developed a tool that produces a profile
of Java programs from the perpective of symbolic execution for software testing. With this tool, we analyzed
147 open source Java projects and compared four dimensions impacting symbolic execution: path explosion,
constraint complexity, dependency, and exception-dependent paths.
Main publications: <JSS-2016> <source code>
Model-based testing of service-oriented applications (concluded): we investigated and proposed
model-based testing (MBT) approaches for service-oriented applications. In particular, we worked with Finite
State Machines (FSMs) and Event Sequence Graphs (ESGs) to design test models and algorithms were introduced to
generate test cases. This project was concluded with my PhD defense.
Main publications: <SCC-2011> <iiWAS-2013> <SP&E-2014> <STVR-2019> <PhD
dissertation>