Describir: Functional program testing and analysis