When all abstraction is lost
summary
A ScalaTest extension provides a DSL for behaviors and drives an explicit state model checking engine that schedules every interleaving via a special interleavings execution context. Demo shows a real async cache implemented with Scala Futures and Promise where the checker finds a subtle race in async cache with Futures/Promise that tests miss. The tool enumerates thousands of execution paths, grows a large state tree, detects loops and nontermination, and the project lives on GitHub with API docs.
AI-written summary · about
chapters (16)
- 0:00Introduction
- 1:20A normal web application
- 2:20Clusters
- 3:34Cache
- 4:01Pain
- 4:50Tests
- 6:12Type checking
- 10:07Tree
- 13:24Scala Cache
- 32:01Executor
- 33:06Exception
- 35:00Conclusion
- 35:42Downside
- 37:31Whats next
- 38:43Github
- 39:25More questions
related talks
46mAsync Testing on the JVM and Scala.js
44mAsync Testing on the JVM and Scala.js
30mControlled Concurrency Testing for Scala
31mSCALATEST: YOU'RE ASSERTING IT WRONG
44mMonads for Testers
46mTesting in the world of Functional Programming
48mPROBING THE UNPROVABLE AND PROVING THE IMPROBABLE
41mImprove your Tests with Property State-Machine Tests
