Random Term Generation for Compiler Testing in Spoofax
Master Project
of Martijn Dwars
Abstract
Testing is the most commonly used technique for raising confidence in the correctness of a piece of software, but constructing an effective test suite is expensive and prone to error. Property-based testing partly automates this process by testing whether a property holds for all randomly generated inputs, but its effectiveness depends upon the ability to automatically generate random test inputs. When using property-based testing to test a compiler backend, the problem becomes that of generating random pro- grams that pass the parsing and analysis phase. We present SPG (SPoofax Generator), a language-parametric generator of random well-formed terms. We describe three experiments in which we evaluate the effectiveness of SPG at discovering different kinds of compiler bugs. Furthermore, we analyze why the generator fails to detect certain compiler bugs and provide several ideas for future work. The results show that random testing can be a cost-effective technique to find bugs in small programming languages (such as DSLs), but its application to practical programming languages requires further research.
Thesis
- Dwars, Martijn. Random Term Generation for Compiler Testing in Spoofax. TU Delft Repository, 2018.
Student: Martijn Dwars
Supervisor(s): Hendrik van Antwerpen, Eelco Visser
Defended: March 12, 2018