Taming the Concurrency: Controlling Concurrent Behavior while Testing Multithreaded Software
Evgeny Vainer, Amiram Yehudai

TL;DR
This paper introduces a novel approach for specifying and enforcing thread schedules in multithreaded unit tests, enabling deterministic and repeatable testing without requiring special environments or modifications.
Contribution
It presents a new method for controlling thread execution order in tests, simplifying testing of concurrent data structures without additional tools or language changes.
Findings
Enables deterministic multithreaded tests
Does not require dedicated runtime or language modifications
Improves understanding and maintenance of concurrent tests
Abstract
Developing multithreaded software is an extremely challenging task, even for experienced programmers. The challenge does not end after the code is written. There are other tasks associated with a development process that become exceptionally hard in a multithreaded environment. A good example of this is creating unit tests for concurrent data structures. In addition to the desired test logic, such a test contains plenty of synchronization code that makes it hard to understand and maintain. In our work we propose a novel approach for specifying and executing schedules for multithreaded tests. It allows explicit specification of desired thread scheduling for some unit test and enforces it during the test execution, giving the developer an ability to construct deterministic and repeatable unit tests. This goal is achieved by combining a few basic tools available in every modern…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Parallel Computing and Optimization Techniques · Real-Time Systems Scheduling
