Leonardo Fernandes

dblp:207/7225 · also Leo Fernandes · DBLP profile ↗
← Back
8ranked-venue papers
1as first author
3since 2021 · last 2026
0000-0001-9090-2232ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 8 · 1 first-author · 3 since 2021Artificial intelligence and machine learning · 1 · 1 since 2021
YearPublicationVenuePosition
2026 Exploring Mocking Techniques for Managing External Dependencies in Service-Based Systems: A Mapping Study
abstract
Service-based systems (SBS) depend on loosely coupled services that interact via standardized protocols, making testing challenging due to external dependencies. Mocking and service virtualization techniques have been proposed to simulate these dependencies and support automated testing, yet existing research lacks a unified synthesis of their approaches, effectiveness, and limitations.
Benedito de Oliveira, Fernando Castor Filho, Leonardo Fernandes, Samuel Amorim
AST3
2025 Fuzz Smarter, Not Harder: Towards Greener Fuzzing with GreenAFL
Ayse Irmak Ercevik, Aidan Dakhama, Melane Navaratnarajah, Yazhuo Cao, Leonardo Fernandes
SSBSE5
2021 Identifying method-level mutation subsumption relations using Z3
Rohit Gheyi, Márcio Ribeiro 0001, Beatriz Souza, Marcio Augusto Guimarães, Leonardo Fernandes, Marcelo d'Amorim, Vander Alves, Leopoldo Teixeira, Baldoino Fonseca dos Santos Neto
Inf. Softw. Technol.5
2020 Is Exceptional Behavior Testing an Exception?: An Empirical Assessment Using Java Automated Tests
abstract
Software testing is a crucial activity to check the internal quality of a software. During testing, developers often create tests for the normal behavior of a particular functionality (e.g., was this file properly uploaded to the cloud?). However, little is known whether developers also create tests for the exceptional behavior (e.g., what happens if the network fails during the file upload?). To minimize this knowledge gap, in this paper we design and perform a mixed-method study to understand how 417 open source Java projects are testing the exceptional behavior using the JUnit and TestNG frameworks, and the AssertJ library. We found that 254 (60.91%) projects have at least one test method dedicated to test the exceptional behavior. We also found that the number of test methods for exceptional behavior with respect to the total number of test methods lies between 0% and 10% in 317 (76.02%) projects. Also, 239 (57.31%) projects test only up to 10% of the used exceptions in the System Under Test (SUT). When it comes to mobile apps, we found that, in general, developers pay less attention to exceptional behavior tests when compared to desktop/server and multi-platform developers. In general, we found more test methods covering custom exceptions (the ones created in the own project) when compared to standard exceptions available in the Java Development Kit (JDK) or in third-party libraries. To triangulate the results, we conduct a survey with 66 developers from the projects we study. In general, the survey results confirm our findings. In particular, the majority of the respondents agrees that developers often neglect exceptional behavior tests. As implications, our numbers might be important to alert developers that more effort should be placed on creating tests for the exceptional behavior.
Francisco Dalton, Márcio Ribeiro 0001, Gustavo Pinto 0001, Leonardo Fernandes, Rohit Gheyi, Baldoino Fonseca dos Santos Neto
EASE4
2020 Optimizing Mutation Testing by Discovering Dynamic Mutant Subsumption Relations
abstract
One recent promising direction on reducing costs of mutation analysis is to identify redundant mutations, i.e., mutations that are subsumed by some other mutations. Previous works found out redundant mutants manually through the truth table. Although the idea is promising, it can only be applied for logical and relational operators. In this paper, we propose an approach to discover redundancy in mutations through dynamic subsumption relations among mutants. We focus on subsumption relations among mutations of an expression or statement, named here as “mutation target:” By focusing on targets and relying on automatic test generation tools, we define subsumption relations for dozens of mutation targets in which the MUJAVA tool can apply mutations. We then implemented these relations in a tool, named MUJAVA-M, that generates a reduced set of mutants for each target, avoiding redundant mutants. We evaluated MUJAVA and MUJAVA-M using classes of five open-source projects. As results, we analyze 2,341 occurrences of 32 mutation targets in 168 classes. MUJAVA-M generates less mutants (on average 64.43% less) with 100% of effectiveness in 20 out of 32 targets and more than 95% in 29 out of 32 mutation targets. MUJAVA- M also reduced the time to execute the test suites against the mutants in 52.53% on average, considering the full mutation analysis process.
Marcio Augusto Guimarães, Leonardo Fernandes, Márcio Ribeiro 0001, Marcelo d'Amorim, Rohit Gheyi
ICST2
2020 Mutating code annotations: An empirical evaluation on Java and C# programs
Pedro Pinheiro, José Carlos Viana, Márcio Ribeiro 0001, Leonardo Fernandes, Fabiano Cutigi Ferrari, Rohit Gheyi, Baldoino Fonseca dos Santos Neto
Sci. Comput. Program.4
2019 A systematic literature review of techniques and metrics to reduce the cost of mutation testing
Alessandro Viola Pizzoleto, Fabiano Cutigi Ferrari, A. Jefferson Offutt, Leonardo Fernandes, Márcio Ribeiro 0001
J. Syst. Softw.4
2017 Avoiding useless mutants
abstract
Mutation testing is a program-transformation technique that injects artificial bugs to check whether the existing test suite can detect them. However, the costs of using mutation testing are usually high, hindering its use in industry. Useless mutants (equivalent and duplicated) contribute to increase costs. Previous research has focused mainly on detecting useless mutants only after they are generated and compiled. In this paper, we introduce a strategy to help developers with deriving rules to avoid the generation of useless mutants. To use our strategy, we pass as input a set of programs. For each program, we also need a passing test suite and a set of mutants. As output, our strategy yields a set of useless mutants candidates. After manually confirming that the mutants classified by our strategy as "useless" are indeed useless, we derive rules that can avoid their generation and thus decrease costs. To the best of our knowledge, we introduce 37 new rules that can avoid useless mutants right before their generation. We then implement a subset of these rules in the MUJAVA mutation testing tool. Since our rules have been derived based on artificial and small Java programs, we take our MUJAVA version embedded with our rules and execute it in industrial-scale projects. Our rules reduced the number of mutants by almost 13% on average. Our results are promising because (i) we avoid useless mutants generation; (ii) our strategy can help with identifying more rules in case we set it to use more complex Java programs; and (iii) our MUJAVA version has only a subset of the rules we derived.
Leonardo Fernandes, Márcio Ribeiro 0001, Rohit Gheyi, Melina Mongiovi, André L. M. Santos, Ana Cavalcanti 0001, Fabiano Cutigi Ferrari, José Carlos Maldonado
GPCE1