The injection of software faults in source code requires accurate knowledge of the programming language, both to craft faults and to identify injection locations. As such, fault injection and code mutation tools are typically tailored for a specific language and have limited extensibility. In this paper we present a model-driven approach to craft and inject software faults in source code. While its concrete application is presented for Java, the workflow we propose does not depend on a specific programming language. Following Model-Driven Engineering principles, the faults and the criteria to select injection locations are described using structured, machine-readable specifications based on a domain-specific language. Then, automated transformations craft artifacts based on OCL and Java, which represent the faults to be injected and are able to select the candidate injection locations. Finally, artifacts are executed against the target source code, performing the injection in the desired locations. We devise a supporting tool and exercise the approach injecting 13 different kinds of software faults in the Java source code of six different projects.

Model-Driven Fault Injection in Java Source Code / Elder Rodrigues , Leonardo Montecchi , Andrea Ceccarelli. - ELETTRONICO. - (2020), pp. 414-425. (Intervento presentato al convegno INTERNATIONAL SYMPOSIUM ON SOFTWARE RELIABILITY ENGINEERING) [10.1109/ISSRE5003.2020.00046].

Model-Driven Fault Injection in Java Source Code

Andrea Ceccarelli
2020

Abstract

The injection of software faults in source code requires accurate knowledge of the programming language, both to craft faults and to identify injection locations. As such, fault injection and code mutation tools are typically tailored for a specific language and have limited extensibility. In this paper we present a model-driven approach to craft and inject software faults in source code. While its concrete application is presented for Java, the workflow we propose does not depend on a specific programming language. Following Model-Driven Engineering principles, the faults and the criteria to select injection locations are described using structured, machine-readable specifications based on a domain-specific language. Then, automated transformations craft artifacts based on OCL and Java, which represent the faults to be injected and are able to select the candidate injection locations. Finally, artifacts are executed against the target source code, performing the injection in the desired locations. We devise a supporting tool and exercise the approach injecting 13 different kinds of software faults in the Java source code of six different projects.
2020
2020 IEEE 31st International Symposium on Software Reliability Engineering (ISSRE)
INTERNATIONAL SYMPOSIUM ON SOFTWARE RELIABILITY ENGINEERING
Goal 9: Industry, Innovation, and Infrastructure
Elder Rodrigues , Leonardo Montecchi , Andrea Ceccarelli
File in questo prodotto:
File Dimensione Formato  
issre2020.pdf

accesso aperto

Tipologia: Versione finale referata (Postprint, Accepted manuscript)
Licenza: Tutti i diritti riservati
Dimensione 455.98 kB
Formato Adobe PDF
455.98 kB Adobe PDF

I documenti in FLORE sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificatore per citare o creare un link a questa risorsa: https://hdl.handle.net/2158/1216639
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus 4
  • ???jsp.display-item.citation.isi??? 3
social impact