Efficient Bounded Exhaustive Input Generation from Program APIs

Bounded exhaustive input generation (BEG) is an effective approach to reveal software faults. However, existing BEG approaches require a precise specification of the valid inputs, i.e., a repOK, that must be provided by the user. Writing repOKs for BEG is challenging and time consuming, and they are...

Descripción completa

Guardado en:
Detalles Bibliográficos
Autores principales: Politano, Mariano, Bengolea, Valeria, Molina, Facundo, Aguirre, Nazareno Matías, Frias, Marcelo F., Ponzio, Pablo Daniel
Formato: Objeto de conferencia Resumen
Lenguaje:Inglés
Publicado: 2023
Materias:
Acceso en línea:http://sedici.unlp.edu.ar/handle/10915/165812
Aporte de:
id I19-R120-10915-165812
record_format dspace
spelling I19-R120-10915-1658122024-05-09T20:05:13Z http://sedici.unlp.edu.ar/handle/10915/165812 Efficient Bounded Exhaustive Input Generation from Program APIs Politano, Mariano Bengolea, Valeria Molina, Facundo Aguirre, Nazareno Matías Frias, Marcelo F. Ponzio, Pablo Daniel 2023-09 2023 2024-05-09T12:24:22Z en Ciencias Informáticas Bounded exhaustive input generation (BEG) is an effective approach to reveal software faults. However, existing BEG approaches require a precise specification of the valid inputs, i.e., a repOK, that must be provided by the user. Writing repOKs for BEG is challenging and time consuming, and they are seldom available in software.In this paper, we introduce BEAPI, an efficient approach that employs routines from the API of the software under test to perform BEG. Like API-based test generation approaches, BEAPI creates sequences of calls to methods from the API, and executes them to generate inputs. As opposed to existing BEG approaches, BEAPI does not require a repOK to be provided by the user. To make BEG from the API feasible, BEAPI implements three key pruning techniques: (i) discarding test sequences whose execution produces exceptions violating API usage rules, (ii) state matching to discard test sequences that produce inputs already created by previously explored test sequences, and (iii) the automated identification and use of a subset of methods from the API, called builders, that is sufficient to perform BEG.Our experimental assessment shows that BEAPI’s efficiency and scalability is competitive with existing BEG approaches, without the need for repOKs. We also show that BEAPI can assist the user in finding flaws in repOKs, by (automatically) comparing inputs generated by BEAPI with those generated from a repOK. Using this approach, we revealed several errors in repOKs taken from the assessment of related tools, demonstrating the difficulties of writing precise repOKs for BEG. Sociedad Argentina de Informática e Investigación Operativa Objeto de conferencia Resumen http://creativecommons.org/licenses/by-nc-sa/4.0/ Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) application/pdf 70-70
institution Universidad Nacional de La Plata
institution_str I-19
repository_str R-120
collection SEDICI (UNLP)
language Inglés
topic Ciencias Informáticas
spellingShingle Ciencias Informáticas
Politano, Mariano
Bengolea, Valeria
Molina, Facundo
Aguirre, Nazareno Matías
Frias, Marcelo F.
Ponzio, Pablo Daniel
Efficient Bounded Exhaustive Input Generation from Program APIs
topic_facet Ciencias Informáticas
description Bounded exhaustive input generation (BEG) is an effective approach to reveal software faults. However, existing BEG approaches require a precise specification of the valid inputs, i.e., a repOK, that must be provided by the user. Writing repOKs for BEG is challenging and time consuming, and they are seldom available in software.In this paper, we introduce BEAPI, an efficient approach that employs routines from the API of the software under test to perform BEG. Like API-based test generation approaches, BEAPI creates sequences of calls to methods from the API, and executes them to generate inputs. As opposed to existing BEG approaches, BEAPI does not require a repOK to be provided by the user. To make BEG from the API feasible, BEAPI implements three key pruning techniques: (i) discarding test sequences whose execution produces exceptions violating API usage rules, (ii) state matching to discard test sequences that produce inputs already created by previously explored test sequences, and (iii) the automated identification and use of a subset of methods from the API, called builders, that is sufficient to perform BEG.Our experimental assessment shows that BEAPI’s efficiency and scalability is competitive with existing BEG approaches, without the need for repOKs. We also show that BEAPI can assist the user in finding flaws in repOKs, by (automatically) comparing inputs generated by BEAPI with those generated from a repOK. Using this approach, we revealed several errors in repOKs taken from the assessment of related tools, demonstrating the difficulties of writing precise repOKs for BEG.
format Objeto de conferencia
Resumen
author Politano, Mariano
Bengolea, Valeria
Molina, Facundo
Aguirre, Nazareno Matías
Frias, Marcelo F.
Ponzio, Pablo Daniel
author_facet Politano, Mariano
Bengolea, Valeria
Molina, Facundo
Aguirre, Nazareno Matías
Frias, Marcelo F.
Ponzio, Pablo Daniel
author_sort Politano, Mariano
title Efficient Bounded Exhaustive Input Generation from Program APIs
title_short Efficient Bounded Exhaustive Input Generation from Program APIs
title_full Efficient Bounded Exhaustive Input Generation from Program APIs
title_fullStr Efficient Bounded Exhaustive Input Generation from Program APIs
title_full_unstemmed Efficient Bounded Exhaustive Input Generation from Program APIs
title_sort efficient bounded exhaustive input generation from program apis
publishDate 2023
url http://sedici.unlp.edu.ar/handle/10915/165812
work_keys_str_mv AT politanomariano efficientboundedexhaustiveinputgenerationfromprogramapis
AT bengoleavaleria efficientboundedexhaustiveinputgenerationfromprogramapis
AT molinafacundo efficientboundedexhaustiveinputgenerationfromprogramapis
AT aguirrenazarenomatias efficientboundedexhaustiveinputgenerationfromprogramapis
AT friasmarcelof efficientboundedexhaustiveinputgenerationfromprogramapis
AT ponziopablodaniel efficientboundedexhaustiveinputgenerationfromprogramapis
_version_ 1807223101521395712