Mica: Automated Differential Testing for OCaml Modules
Abstract
Suppose we are given two OCaml modules implementing the same signature. How do we check that they are observationally equivalent -- that is, that they behave the same on all inputs? One established technique is to use a property-based testing (PBT) tool such as QuickCheck. Currently, however, this can require significant amounts of boilerplate code and ad-hoc test harnesses. To address this issue, we present Mica, an automated tool for testing observational equivalence of OCaml modules. Mica is implemented as a PPX compiler extension, allowing users to supply minimal annotations to a module signature. These annotations guide Mica to automatically derive specialized PBT code that checks observational equivalence. We discuss the design of Mica and demonstrate its efficacy as a testing tool on various modules taken from real-world OCaml libraries.
Cite
@article{arxiv.2408.14561,
title = {Mica: Automated Differential Testing for OCaml Modules},
author = {Ernest Ng and Harrison Goldstein and Benjamin C. Pierce},
journal= {arXiv preprint arXiv:2408.14561},
year = {2024}
}
Comments
OCaml Workshop 2024