Crabtree: Rust API Test Synthesis Guided by Coverage and Type
summary
Crabtree is a Rust API test synthesizer that combines program synthesis with fuzzing using a coverage- and type-guided DFS to grow tests and inputs; it natively generates well-typed tests for libraries with traits and higher-order functions by flattening closures into the search. Evaluated on 30 libraries, it exercises hundreds of APIs (vs prior tools that time out around ~20), achieves higher coverage with fewer tests, and found four memory-safety bugs accepted by the libraries.
AI-written summary · about
chapters (14)
- 0:00Crabtree and Rust testing
- 0:22Crabtree and Rust importance
- 1:03Rust memory safety
- 2:49API testing for Rust
- 3:51Limitations of test synthesizers
- 5:19Crabtree’s test synthesis
- 6:02Cyrus scalability issues
- 7:52Crabtree’s DFS algorithm
- 9:58Rust traits and higher-order
- 11:44Flattening closure bodies
- 12:47Evaluation and coverage
- 14:33Crabtree performance gains
- 14:54Crabtree limitations
- 15:57Q&A
related talks
21mLeveraging Rust Types for Program Synthesis
45mTomorrow I Quit Coffee and Take Up Crabbing!
19mAPI-driven Program Synthesis for Testing Static Typing Implementations
28mSafety compliance of Rust libraries
52mStructure aware fuzzing
33mRust and Haskell, sitting in a tree
25m"Compiler-Driven Development: Making Rust Work for You"
21mA Tour of Empirical Verification in Rust
