pun: Fun with Properties; Towards a Programming Language With Built-in Facilities for Program Validation
Triera Gashi, Sophie Adeline Solheim Bosio, Joachim Tilsted, Kristensen, Michael Kirkedal Thomsen

TL;DR
This paper introduces 'pun', a functional programming language with integrated property-based testing features, simplifying input generation for program validation and reducing barriers for industry adoption.
Contribution
It formalizes a new language 'pun' that automates input generation for properties, making property-based testing more accessible and easier to implement.
Findings
Automated input generation for 'pun' simplifies property testing.
'pun' reduces the effort needed to write generators for complex data structures.
Evaluation shows 'pun' performs comparably to Haskell libraries in binary search tree testing.
Abstract
Property-based testing is a powerful method to validate program correctness. It is, however, not widely use in industry as the barrier of entry can be very high. One of the hindrances is to write the generators that are needed to generate randomised input data. Program properties often take complicated data structures as inputs and, it requires a significant amount of effort to write generators for such structures in a invariant preserving way. In this paper, we suggest and formalise a new programming language \textsf{pun}; a simple functional programming with properties as a built-in mechanism for program validation. We show how to generate input for \textsf{pun} properties automatically, thus, providing the programmer with a low barrier of entry for using property-based testing. We evaluate our work a on library for binary search trees and compare the test results to a similar…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Software Engineering Research · Software Reliability and Analysis Research
