FANDANGO: Evolving Language-Based Testing
José Antonio Zamudio Amaya, Marius Smytzek, Andreas Zeller
Abstract
Language-based fuzzers leverage formal input specifications ( languages ) to generate arbitrarily large and diverse sets of valid inputs for a program under test. Modern language-based test generators combine grammars and constraints to satisfy syntactic and semantic input constraints. isl a, the leading input generator in that space, uses symbolic constraint solving to solve input constraints. Using solvers places isl a among the most precise fuzzers but also makes it slow. In this paper, we explore search-based testing as an alternative to symbolic constraint solving. We employ a genetic algorithm that iteratively generates candidate inputs from an input specification, evaluates them against defined constraints, evolving a population of inputs through syntactically valid mutations and retaining those with superior fitness until the semantic input constraints are met. This evolutionary procedure, analogous to natural genetic evolution, leads to progressively improved inputs that cover both semantics and syntax. This change boosts the efficiency of language-based testing: In our experiments, compared to isl a, our search-based fandango prototype is faster by one to three orders of magnitude without sacrificing precision. The search-based approach no longer restricts constraints to constraint solvers’ (miniature) languages. In fandango , constraints can use the whole python language and library . This expressiveness gives testers unprecedented flexibility in shaping test inputs. It allows them to state arbitrary goals for test generation : “Please produce 1,000 valid test inputs where the ⟨ voltage ⟩ field follows a Gaussian distribution but never exceeds 20 mV.”
Ask about this paper
Ask your agent about it.
Lune has read the top-tier papers around this one, so every answer names the papers it rests on.
Your agent calls
Lunesearch_papers
Free to start. No credit card required.
Terminal
Install the CLIlune papers get a7085d4e-0b65-4465-8360-3a1c71ff3305Cited by top-tier papers2
- Repair-Driven Greybox FuzzingBachir Bendrissou, Alastair F. Donaldson, Cristian CadarISSTA 2026
- LspFuzz: Hunting Bugs in Language ServersHengcheng Zhu, Songqiang Chen, Valerio Terragni, Lili Wei et al.ASE 2025
Related papers
- Input invariantsDominic Steinhöfel, Andreas ZellerFSE 2022 · 47 citations
- Angora: Efficient Fuzzing by Principled SearchPeng Chen, Hao ChenS&P 2018 · 616 citations
- NAUTILUS: Fishing for Deep Bugs with GrammarsCornelius Aschermann, Tommaso Frassetto, Thorsten Holz, Patrick Jauernig et al.NDSS 2019 · 291 citations
- Fuzzing Class SpecificationsFacundo Molina, Marcelo d'Amorim, Nazareno AguirreICSE 2022 · 25 citations
- DARWIN: Survival of the Fittest Fuzzing MutatorsPatrick Jauernig, Domagoj Jakobovic, Stjepan Picek, Emmanuel Stapf et al.NDSS 2023
