A Scala Library for Testing Student Assignments on Concurrent Programming
We present a lightweight library for testing concurrent Scala programs by systematically exploring multiple interleavings between user-specified operations on shared objects. Our library is targeted at beginners of concurrent programming in Scala, runs on a standard JVM, and supports conventional synchronization primitives such as wait
, notify
, and synchronized
. The key component of the library is the trait SchedulableMonitor
that accepts a thread schedule, and interleaves as per the schedule all user-specified operations invoked through multiple threads on objects implementing the trait. Using our library, we developed a unit test engine that tests concurrent operations on shared objects on thousands of schedules obtained by bounding the number of context-switches. If a unit test fails on a schedule, the test engine offers as feedback the interleaved traces of execution that resulted in the failure. We used our test engine to automatically test and evaluate two assignments: (a) lock-based producer/consumer problem, and (b) lock-free sorted list implementation, offered to a class of 150 under-graduate students of EPFL. Our evaluations show that the system is effective in detecting bugs in students’ solutions.
Slides of the talk (muscat.pptx) | 2.17MiB |
Mon 31 Oct
13:30 - 15:10: Scala - Analysis, Testing & Verification at Matterhorn 2 Chair(s): Philipp HallerKTH Royal Institute of Technology | ||||||||||||||||||||||||||||||||||||||||||
13:30 - 13:55 Talk | DOI File Attached | |||||||||||||||||||||||||||||||||||||||||
13:55 - 14:20 Talk | DOI File Attached | |||||||||||||||||||||||||||||||||||||||||
14:20 - 14:45 Talk | Quentin StiévenartVrije Universiteit Brussel, Belgium, Jens NicolayVrije Universiteit Brussel, Belgium, Wolfgang De MeuterVrije Universiteit Brussel, Belgium, Coen De RooverVrije Universiteit Brussel, Belgium DOI | |||||||||||||||||||||||||||||||||||||||||
14:45 - 15:10 Talk | Media Attached |