Mica: Automated Differential Testing for OCaml Modules
summary
Mica is a PPX extension that derives QuickCheck-based differential tests for any OCaml signature by generating a typed algebraic exper AST, a gen_xer generator of well-typed symbolic Expressions, a big-step interpreter that evaluates an exper against a concrete module, and a test harness functor that compares concrete outputs. Mica catches bugs automatically: it finds 35 injected bugs across libraries, reproduces BST repo results with a mean 170 expressions to fail, and flags issues in 107 student submissions (≈30%) with 91% found within 300 expressions.
AI-written summary · about
chapters (13)
- 0:00Mica introduction
- 1:27Differential testing in OCaml
- 3:55Automating property-based testing
- 5:23Generated code and data types
- 9:58Bug detection case studies
- 13:30TA integration and future work
- 15:40Summary
- 16:22Q&A
- 16:43Abstract types handling
- 17:48Recursive and dependent types
- 18:30Bug reporting and shrinking
- 19:11Symbolic expression design
- 20:15Closing remarks
related talks
14mVerify, but test: extracting property-based tests from F* specifications
28mEtna: An Evaluation Platform for Property-Based Testing
42mSurprise yourself with Property Based Testing
18mMulticoretests - Parallel Testing Libraries for OCaml 5.0
31mAnICA: Analyzing Inconsistencies in Microarchitectural Code Analyzers
20mType-level Property Based Testing
47mTesting the Hard Stuff and Staying Sane
18mPreview: Verification (Correctness & Debugging)
