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.