~/talk

Fuzzing Class Interfaces for Generating and Running Tests with libFuzzer

Talkat CppCon 2020 · 2020-09-14..09-18· [testing]
links:none on file
slides:none on file

Shows how to use clang's libFuzzer to generate and execute unit tests by interpreting fuzzer byte streams as sequences of C++ class member calls and arguments. Uses coverage feedback to grow combinations of interface operations, supports optional preconditions to filter invalid call sequences, checks class invariants between calls, and applies sanitizers; implementation is pure C++ with no code generation and can shrink findings to regression tests.

AI-written summary · about

  1. 0:00Intro
  2. 0:40Overview
  3. 1:36The (simplified) container vision
  4. 2:21Example Unit Test Case
  5. 3:31Possible undetected bugs
  6. 4:45Too many states
  7. 8:07What we would need
  8. 13:04Fuzzing in general
  9. 17:22Clang Sanitizers
  10. 18:56Fuzzing example - UBSanitizer
  11. 19:34Fuzzing example - MemorySanitizer
  12. 22:03Transforming libFuzzer to an Interface Fuzzer
  13. 23:15Interface Description
  14. 26:06Interpreting the Generated Strings
  15. 29:42Crashes are not Enough
  16. 30:20Invariants
  17. 32:03Case Study 1: Simplified Deque
  18. 34:16Case Study 2: Robin-hood Hash Map
  19. 39:08Summary
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.