~/talk

Stateful property-based testing: with a game logic case study

Talkat Code BEAM Lite Berlin 2018 · on Friday, 2018-10-12· [testing, distributed-systems]
name:Lou Xun
slides:none on file

Builds an Elixir prototype of EVE space‑combat core and tests it with a stateful property‑based framework for Erlang/Elixir, finds a real concurrency bug where unloading races with modifier removal, and fixes it by ignoring already‑gone items. Tests generate long command traces then shrink them — demo shows 37→4 and the case study shrinks a 27‑command failure to 9 steps. The repo is ~900 LOC, example tests were ~350 LOC but stateful PBT covers bugs in 177 LOC and reproduces minimal counterexamples.

AI-written summary · about

  1. 0:00Intro
  2. 0:14Topics
  3. 1:38EVE Online
  4. 3:45Core Rules
  5. 4:55LIAR Goals
  6. 6:00Defined APIs
  7. 8:53Flaws
  8. 11:38Finding Properties
  9. 12:41One More Thi... Flaw
  10. 14:16Stateful PBT
  11. 15:03Almost Stateless...
  12. 16:15Library Example
  13. 17:45Case Study: Concurrency Bug
  14. 21:03Shrinking
  15. 21:39Symbolic Calls
  16. 22:04Actual Calls
  17. 22:51Captured Logs
  18. 23:58Setup
  19. 24:21Crash
  20. 26:38Validating the Fix
  21. 27:26Other Bugs Revealed
  22. 27:41Lines of Code
  23. 30:41Five Callbacks
  24. 31:05command "filtering"
  25. 32:24precondition
  26. 34:06Stateful Test
  27. 34:31General Notes
  28. 35:30LIAR Specific
~/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.