Predictable and Progressive Testing of Multithreaded Code
- Sebastian Burckhardt ,
- Madan Musuvathi ,
- Shaz Qadeer ,
- Peli de Halleux ,
- Thomas Ball
IEEE Software | , Vol 28: pp. 75-83
Developing concurrent software is hard. Testing concurrent software is harder. Although sequential program testing has many useful concepts, techniques, and tools (for example, assertions, unit testing, test-driven development, code coverage, and test generation tools), the testing workbench for concurrent programs is comparatively quite bare. Chess is a new testing tool for concurrent multithreaded programs. It repeatedly executes a multithreaded program, while guaranteeing predictable and deterministic scheduling and progressively exploring more schedules to uncover errors quickly.