Programmable Property-Based Testing

Read full text
Authors: A. Keleş, Justine Frank, Ceren Mert, Harrison Goldstein, Leonidas Lampropoulos
Cited by: 0

Abstract

Property-based testing (PBT) is a popular technique for establishing confidence in software, where users write properties —i.e. executable specifications—that can be checked many times in a loop by a testing framework. In modern PBT frameworks, properties are usually written in shallowly embedded domain-specific languages, and their definition is tightly coupled to the way they are tested. Such frameworks often provide convenient configuration options to customize aspects of the testing process, but users are limited to precisely what library authors had the prescience to allow for when developing the framework; if they want more flexibility, they may need to write a new framework from scratch. We propose a new, deeper language for properties based on a mixed embedding that we call deferred binding abstract syntax , which reifies properties as a data structure and decouples them from the property runners that execute them. We implement this language in Rocq and Racket, leveraging the power of dependent and dynamic types, respectively. Finally, we showcase the flexibility of this new approach by implementing a variety of property runners in a shared framework, highlighting domain-specific testing improvements that can be unlocked by more programmable testing.

Fields of Study & Subjects

Software Testing and Debugging Techniques Logic programming and type systems Formal Methods in Verification

Publication details

Journal / source
Proceedings of the ACM on Programming Languages
Volume
10
Issue
ICFP
Pages
365–396
Publication date
17 August 2026
Language
EN