BEAPI: A tool for bounded exhaustive input generation from APIs

Bounded exhaustive testing is a very effective technique for bug finding, which proposes to test a given program under all valid bounded inputs, for a bound provided by the developer. Existing bounded exhaustive testing techniques require the developer to provide a precise specification of the valid...

Full description

Saved in:
Bibliographic Details
Published inScience of computer programming Vol. 238; p. 103153
Main Authors Politano, Mariano, Bengolea, Valeria, Molina, Facundo, Aguirre, Nazareno, Frias, Marcelo, Ponzio, Pablo
Format Journal Article
LanguageEnglish
Published Elsevier B.V 01.12.2024
Subjects
Online AccessGet full text

Cover

Loading…
More Information
Summary:Bounded exhaustive testing is a very effective technique for bug finding, which proposes to test a given program under all valid bounded inputs, for a bound provided by the developer. Existing bounded exhaustive testing techniques require the developer to provide a precise specification of the valid inputs. Such specifications are rarely present as part of the software under test, and writing them can be costly and challenging. To address this situation we propose BEAPI, a tool that given a Java class under test, generates a bounded exhaustive set of objects of the class solely employing the methods of the class, without the need for a specification. BEAPI creates sequences of calls to methods from the class' public API, and executes them to generate inputs. BEAPI implements very effective pruning techniques that allow it to generate inputs efficiently. We experimentally assessed BEAPI in several case studies from the literature, and showed that it performs comparably to the best existing specification-based bounded exhaustive generation tool (Korat), without requiring a specification of the valid inputs.
ISSN:0167-6423
DOI:10.1016/j.scico.2024.103153