AGATA - Random generation of test data
Agata Generates Algebraic Types Automatically. The generated data can be used to perform property based testing with the Haskell testing framework QuickCheck, or the alternative framework SmallCheck. Unlike regular QuickCheck generators, Agata generators are mechanically derivable from the definition of an algebraic data type. Agata moves all logic from the individual generators into a customizable wrapper function. This enables user-side reconfiguration of generators without rewriting their source code. Agata uses a novel definition of size. This resolves the scalability issues of QuickCheck, associated with generating collection-type data-structures. Experimental results demonstrate the existence of properties falsifiable by Agata but not by QuickCheck nor SmallCheck Automation and suitability for collection-type structures make Agata ideal for parser testing. Agata is implemented as an extension of the BNFC parser generator. Experimental results demonstrates the usability of this tool, discovering several errors in published software.