Bennet: Randomized Specification Testing for Heap-Manipulating Programs
summary
Bennet synthesizes C test generators from CN specifications by compiling preconditions into a DSL and running randomized backtracking search to place heap objects, enforce exclusive ownership, and carry size constraints on failure. It emits standalone C harnesses, generates 100 passing cases for nearly all non-buggy CN tutorial examples, finds two real bugs in existing code, and consistently rediscovers injected bugs (20/20 trials); some hard exact-list targets remain unsynthesized.
AI-written summary · about
chapters (13)
- 0:00Randomized specification testing
- 1:02Separation logic in C
- 2:25CN specs and predicates
- 3:31Generator DSL for C
- 4:54Backtracking and ownership
- 6:21Consistent input distribution
- 7:23Generator optimizations
- 8:47Efficient constraint reordering
- 9:28Bennett evaluation on CN code
- 10:34Bugs found with Bennett
- 11:17Optimization passes impact
- 11:59Summary of CN generators
- 12:25Q&A
related talks
47mTesting the Hard Stuff and Staying Sane
45mProperty based tests for the masses
32mGenerative Testing: Properties, State and Beyond
26mThe missing piece of testing
01h 07mProgramming with GUTs
15mGrammar-Based Testing for Little Languages: An Experience Report with Student Compilers
15mGradual Verification of Recursive Heap Data Structures
42mSurprise yourself with Property Based Testing
