Journal of Functional Programming · 2015 · 36 citations · 9 references
EngineeringVerificationTest Data GenerationSoftware EngineeringSoftware AnalysisFormal VerificationData GenerationData ScienceUncertainty QuantificationHandwritten GeneratorsExecutable PredicateTest GenerationCode GenerationComputer EngineeringRandom DataProbability TheoryComputer ScienceTest Data GeneratorsAutomated ReasoningProgram AnalysisSoftware TestingData DistributionFormal MethodsProgram SynthesisRandomized AlgorithmSymbolic Execution
Abstract We present a technique for automatically deriving test data generators from a given executable predicate representing the set of values we are interested in generating. The distribution of these generators is uniform over values of a given size. To make the generation efficient, we rely on laziness of the predicate, allowing us to prune the space of values quickly. In contrast, implementing test data generators by hand is labour intensive and error prone. Moreover, handwritten generators often have an unpredictable distribution of values, risking that some values are arbitrarily underrepresented. We also present a variation of the technique that has better performance, but where the distribution is skewed in a limited, albeit predictable way. Experimental evaluation of the techniques shows that the automatically derived generators are much easier to define than handwritten ones, and their performance, while lower, is adequate for some realistic applications.
9
Chandrasekhar Boyapati, Sarfraz Khurshid, Darko Marinov · 2002 · 292 citations
Smallcheck and lazy smallcheck
Colin Runciman, Matthew Naylor, Fredrik Lindblad · 2008 · 186 citations
Testing telecoms software with quviq QuickCheck
Thomas Arts, John Hughes, Joakim Johansson et al. · 2006 · 182 citations
Testing an optimising compiler by generating random lambda terms
Michał H. Pałka, Koen Claessen, Alejandro Russo et al. · 2011 · 118 citations
Mathematical Programming, Engineering, Compiler Technology +22