SESep 3, 2014

Taming the Concurrency: Controlling Concurrent Behavior while Testing Multithreaded Software

arXiv:1409.0982v11 citations
Originality Incremental advance
AI Analysis

This addresses the problem of testing concurrent data structures for software developers, offering a practical solution without requiring new tools or code changes, though it is incremental in improving test reliability.

The paper tackles the difficulty of creating deterministic and repeatable unit tests for multithreaded software by proposing a novel approach to specify and enforce thread schedules, enabling developers to write tests without synchronization code or modifications to the runtime or code.

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 runtime/IDE and does not require dedicated runtime environment, new specification language or code under test modifications.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes